diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 33ca7a1094..62c834e640 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1977,7 +1977,7 @@ struct GameSettingsWindow : QueryStringBaseWindow { Scrollbar *vscroll; - GameSettingsWindow(const WindowDesc *desc) : QueryStringBaseWindow(50), cur_restriction_mode(RM_BASIC) + GameSettingsWindow(const WindowDesc *desc) : QueryStringBaseWindow(50), cur_restriction_mode((RestrictionMode)_settings_client.gui.settings_restriction_mode) { static bool first_time = true; @@ -2337,13 +2337,18 @@ struct GameSettingsWindow : QueryStringBaseWindow { { if (widget == WID_GS_RESTRICT_DROPDOWN) { this->cur_restriction_mode = (RestrictionMode)index; - if (!this->manually_changed_folding && - (this->cur_restriction_mode == RM_CHANGED_AGAINST_DEFAULT || + if (this->cur_restriction_mode == RM_CHANGED_AGAINST_DEFAULT || this->cur_restriction_mode == RM_CHANGED_AGAINST_DEFAULT_WO_LOCAL || - this->cur_restriction_mode == RM_CHANGED_AGAINST_NEW)) { - /* Expand all when selecting 'changes'. Update the filter state first, in case it becomes less restrictive in some cases. */ - _settings_main_page.UpdateFilterState(string_filter, false, this->cur_restriction_mode); - _settings_main_page.UnFoldAll(); + this->cur_restriction_mode == RM_CHANGED_AGAINST_NEW) { + + if (!this->manually_changed_folding) { + /* Expand all when selecting 'changes'. Update the filter state first, in case it becomes less restrictive in some cases. */ + _settings_main_page.UpdateFilterState(string_filter, false, this->cur_restriction_mode); + _settings_main_page.UnFoldAll(); + } + } else { + /* Non-'changes' filter. Save as default. */ + _settings_client.gui.settings_restriction_mode = this->cur_restriction_mode; } this->InvalidateData(); return; diff --git a/src/settings_type.h b/src/settings_type.h index c29f512bc9..8a34104fde 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -131,6 +131,7 @@ struct GUISettings { bool newgrf_developer_tools; ///< activate NewGRF developer tools and allow modifying NewGRFs in an existing game bool ai_developer_tools; ///< activate AI developer tools bool scenario_developer; ///< activate scenario developer: allow modifying NewGRFs in an existing game + uint8 settings_restriction_mode; ///< selected restriction mode in adv. settings GUI. @see RestrictionMode bool newgrf_show_old_versions; ///< whether to show old versions in the NewGRF list uint8 newgrf_default_palette; ///< default palette to use for NewGRFs without action 14 palette information diff --git a/src/table/settings.ini b/src/table/settings.ini index f82e7f8e1f..12157d1a85 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -2814,6 +2814,14 @@ var = gui.show_date_in_logs flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = false +[SDTC_VAR] +var = gui.settings_restriction_mode +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 2 + [SDTC_VAR] var = gui.developer type = SLE_UINT8