aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorMax Horn2003-11-05 12:48:42 +0000
committerMax Horn2003-11-05 12:48:42 +0000
commite20bf2cd637facab1010fed6e29329b446eceb88 (patch)
tree241f262a38ef5fc1a6524b428f14e7ec824c623a /scumm
parentcfcee0f6736bb86f6fcb230bc40cf88b9bfcea97 (diff)
downloadscummvm-rg350-e20bf2cd637facab1010fed6e29329b446eceb88.tar.gz
scummvm-rg350-e20bf2cd637facab1010fed6e29329b446eceb88.tar.bz2
scummvm-rg350-e20bf2cd637facab1010fed6e29329b446eceb88.zip
fix for bug #836418 (Crash when saving with blank name): GUI now uses a default savegame name if non is given
svn-id: r11154
Diffstat (limited to 'scumm')
-rw-r--r--scumm/dialogs.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/scumm/dialogs.cpp b/scumm/dialogs.cpp
index bb7b7b8977..0f0438c7bd 100644
--- a/scumm/dialogs.cpp
+++ b/scumm/dialogs.cpp
@@ -225,12 +225,9 @@ void SaveLoadChooser::handleCommand(CommandSender *sender, uint32 cmd, uint32 da
case kListItemActivatedCmd:
case kListItemDoubleClickedCmd:
if (selItem >= 0) {
- if (!getResultString().isEmpty()) {
+ if (_saveMode || !getResultString().isEmpty()) {
setResult(selItem);
close();
- } else if (_saveMode) {
- // Start editing the selected item, for saving
- _list->startEditMode();
}
}
break;
@@ -238,7 +235,10 @@ void SaveLoadChooser::handleCommand(CommandSender *sender, uint32 cmd, uint32 da
if (_saveMode) {
_list->startEditMode();
}
- _chooseButton->setEnabled(selItem >= 0);
+ // Disable button if nothing is selected, or (in load mode) if an empty
+ // list item is selected. We allow choosing an empty item in save mode
+ // because we then just assign a default name.
+ _chooseButton->setEnabled(selItem >= 0 && (_saveMode || !getResultString().isEmpty()));
_chooseButton->draw();
break;
default:
@@ -365,7 +365,16 @@ void MainMenuDialog::save() {
SaveLoadChooser dialog("Save game:", generateSavegameList(_scumm, true), "Save", true);
idx = dialog.runModal();
if (idx >= 0) {
- _scumm->requestSave(idx + 1, dialog.getResultString().c_str());
+ const String &result = dialog.getResultString();
+ char buffer[20];
+ const char *str;
+ if (result.isEmpty()) {
+ // If the user was lazy and entered no save name, come up with a default name.
+ sprintf(buffer, "Save %d", idx + 1);
+ str = buffer;
+ } else
+ str = result.c_str();
+ _scumm->requestSave(idx + 1, str);
close();
}
}