Skip to content
Permalink
Browse files

GUI: Do not overwrite write protected saves in grid based save dialog.

This fixes overwriting of, for example, autosaves in the grid based save load
dialog when using "New Save".
  • Loading branch information
lordhoto committed Dec 29, 2014
1 parent f4d5b15 commit bbfff93c6455247d9875003cdfd18c09d0c30e0f
Showing with 13 additions and 4 deletions.
  1. +13 −4 gui/saveload-dialog.cpp
@@ -654,16 +654,25 @@ void SaveLoadChooserGrid::open() {

// In case there was a gap found use the slot.
if (lastSlot + 1 < curSlot) {
_nextFreeSaveSlot = lastSlot + 1;
break;
// Check that the save slot can be used for user saves.
SaveStateDescriptor desc = _metaEngine->querySaveMetaInfos(_target.c_str(), lastSlot + 1);
if (!desc.getWriteProtectedFlag()) {
_nextFreeSaveSlot = lastSlot + 1;
break;
}
}

lastSlot = curSlot;
}

// Use the next available slot otherwise.
if (_nextFreeSaveSlot == -1 && lastSlot + 1 < _metaEngine->getMaximumSaveSlot()) {
_nextFreeSaveSlot = lastSlot + 1;
const int maxSlot = _metaEngine->getMaximumSaveSlot();
for (int i = lastSlot; _nextFreeSaveSlot == -1 && i < maxSlot; ++i) {
// Check that the save slot can be used for user saves.
SaveStateDescriptor desc = _metaEngine->querySaveMetaInfos(_target.c_str(), i + 1);
if (!desc.getWriteProtectedFlag()) {
_nextFreeSaveSlot = i + 1;
}
}
}

0 comments on commit bbfff93

Please sign in to comment.
You can’t perform that action at this time.