diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 005688c0d3..523f981a3f 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1518,6 +1518,7 @@ static const void *ResolveObject(const GameSettings *settings_ptr, const IntSett */ void SettingEntry::SetValueDParams(uint first_param, int32_t value) const { + const uint initial_first_param = first_param; if (this->setting->IsBoolSetting()) { SetDParam(first_param++, value != 0 ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF); } else if (this->setting->flags & SF_DEC1SCALE) { @@ -1547,6 +1548,13 @@ void SettingEntry::SetValueDParams(uint first_param, int32_t value) const } SetDParam(first_param++, value); } + if (this->setting->guiproc != nullptr) { + SettingOnGuiCtrlData data; + data.type = SOGCT_VALUE_DPARAMS; + data.offset = initial_first_param; + data.val = value; + this->setting->guiproc(data); + } } /** diff --git a/src/settings_internal.h b/src/settings_internal.h index b3f376e0a8..2a5925844d 100644 --- a/src/settings_internal.h +++ b/src/settings_internal.h @@ -85,6 +85,7 @@ enum SettingType { enum SettingOnGuiCtrlType { SOGCT_DESCRIPTION_TEXT, ///< Description text callback + SOGCT_VALUE_DPARAMS, ///< Value dparam override callback SOGCT_GUI_DROPDOWN_ORDER, ///< SF_GUI_DROPDOWN reordering callback SOGCT_CFG_NAME, ///< Config file name override SOGCT_CFG_FALLBACK_NAME, ///< Config file name within group fallback @@ -95,6 +96,7 @@ enum SettingOnGuiCtrlType { struct SettingOnGuiCtrlData { SettingOnGuiCtrlType type; StringID text; + uint offset; int val; const char *str = nullptr; int output = 0;