Fix an issue with the altered state not being set properly

This commit is contained in:
DevilXD committed 2022-05-15 18:19:04 +02:00
1 parent c77b8f6714
commit 63d0c4a712
3 files changed
+11 -3

No files matched your search

+5
View File
@@ -1204,6 +1204,7 @@ class SettingsPanel:
self._priority_list.insert("end", game_name)
self._priority_list.see("end")
self._settings.priority.append(game_name)
self._settings.alter()
else:
# already there, set the selection on it
self._priority_list.selection_set(existing_idx)
@@ -1230,6 +1231,7 @@ class SettingsPanel:
self._priority_list.see(swap_idx)
p = self._settings.priority
p[idx], p[swap_idx] = p[swap_idx], p[idx]
self._settings.alter()
def priority_delete(self) -> None:
idx: int | None = self._priority_idx()
@@ -1237,6 +1239,7 @@ class SettingsPanel:
return
self._priority_list.delete(idx)
del self._settings.priority[idx]
self._settings.alter()
def priority_only(self) -> None:
self._settings.priority_only = bool(self._vars["priority_only"].get())
@@ -1250,6 +1253,7 @@ class SettingsPanel:
exclude = self._settings.exclude
if game_name not in exclude:
exclude.add(game_name)
self._settings.alter()
# insert it alphabetically
for i, item in enumerate(self._exclude_list.get(0, "end")):
if game_name < item:
@@ -1279,6 +1283,7 @@ class SettingsPanel:
item: str = self._exclude_list.get(idx)
if item in self._settings.exclude:
self._settings.exclude.discard(item)
self._settings.alter()
self._exclude_list.delete(idx)
+1 -1
View File
@@ -180,7 +180,7 @@ loop.run_until_complete(client.gui.wait_until_closed())
# save settings
# NOTE: we have to do it after wait_until_closed,
# because the user can alter settings between shutdown and closing the window
client.settings.save()
client.settings.save(force=True)
client.gui.stop()
client.gui.close_window()
loop.run_until_complete(loop.shutdown_asyncgens())
+5 -2
View File
@@ -73,6 +73,9 @@ class Settings:
def __delattr__(self, name: str, /) -> None:
raise RuntimeError("settings can't be deleted")
def save(self) -> None:
if self._altered:
def alter(self) -> None:
self._altered = True
def save(self, *, force: bool = False) -> None:
if self._altered or force:
json_save(SETTINGS_PATH, self._settings)