mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Add enum items for dynmically created setting dropdowns.
parent
39e67b6f4c
commit
f40816503f
|
@ -314,7 +314,7 @@ struct GSConfigWindow : public Window {
|
||||||
list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false));
|
list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), old_val, WID_GSC_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
||||||
|
@ -367,14 +367,14 @@ struct GSConfigWindow : public Window {
|
||||||
|
|
||||||
void OnDropdownSelect(int widget, int index) override
|
void OnDropdownSelect(int widget, int index) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) return;
|
if (widget != WID_GSC_SETTING_DROPDOWN) return;
|
||||||
assert(this->clicked_dropdown);
|
assert(this->clicked_dropdown);
|
||||||
SetValue(index);
|
SetValue(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDropdownClose(Point, int widget, int, bool) override
|
void OnDropdownClose(Point, int widget, int, bool) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) return;
|
if (widget != WID_GSC_SETTING_DROPDOWN) return;
|
||||||
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
||||||
* the same dropdown button was clicked again, and then not open the dropdown again.
|
* the same dropdown button was clicked again, and then not open the dropdown again.
|
||||||
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
||||||
|
|
|
@ -395,7 +395,7 @@ struct NewGRFParametersWindow : public Window {
|
||||||
list.emplace_back(new DropDownListStringItem(GetGRFStringFromGRFText(par_info.value_names.find(i)->second), i, false));
|
list.emplace_back(new DropDownListStringItem(GetGRFStringFromGRFText(par_info.value_names.find(i)->second), i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), old_val, WID_NP_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
||||||
|
@ -453,7 +453,7 @@ struct NewGRFParametersWindow : public Window {
|
||||||
|
|
||||||
void OnDropdownSelect(int widget, int index) override
|
void OnDropdownSelect(int widget, int index) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) return;
|
if (widget != WID_NP_SETTING_DROPDOWN) return;
|
||||||
assert(this->clicked_dropdown);
|
assert(this->clicked_dropdown);
|
||||||
GRFParameterInfo &par_info = this->GetParameterInfo(this->clicked_row);
|
GRFParameterInfo &par_info = this->GetParameterInfo(this->clicked_row);
|
||||||
par_info.SetValue(this->grf_config, index);
|
par_info.SetValue(this->grf_config, index);
|
||||||
|
@ -462,7 +462,7 @@ struct NewGRFParametersWindow : public Window {
|
||||||
|
|
||||||
void OnDropdownClose(Point, int widget, int, bool) override
|
void OnDropdownClose(Point, int widget, int, bool) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) return;
|
if (widget != WID_NP_SETTING_DROPDOWN) return;
|
||||||
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
||||||
* the same dropdown button was clicked again, and then not open the dropdown again.
|
* the same dropdown button was clicked again, and then not open the dropdown again.
|
||||||
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
||||||
|
|
|
@ -472,7 +472,7 @@ struct ScriptSettingsWindow : public Window {
|
||||||
list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false));
|
list.emplace_back(new DropDownListStringItem(config_item.labels.find(i)->second, i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), old_val, -1, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), old_val, WID_SCRS_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
} else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
|
||||||
|
@ -526,14 +526,14 @@ struct ScriptSettingsWindow : public Window {
|
||||||
|
|
||||||
void OnDropdownSelect(int widget, int index) override
|
void OnDropdownSelect(int widget, int index) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) return;
|
if (widget != WID_SCRS_SETTING_DROPDOWN) return;
|
||||||
assert(this->clicked_dropdown);
|
assert(this->clicked_dropdown);
|
||||||
SetValue(index);
|
SetValue(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDropdownClose(Point, int widget, int, bool) override
|
void OnDropdownClose(Point, int widget, int, bool) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) return;
|
if (widget != WID_SCRS_SETTING_DROPDOWN) return;
|
||||||
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
/* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
|
||||||
* the same dropdown button was clicked again, and then not open the dropdown again.
|
* the same dropdown button was clicked again, and then not open the dropdown again.
|
||||||
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
* So, we only remember that it was closed, and process it on the next OnPaint, which is
|
||||||
|
|
|
@ -2394,7 +2394,7 @@ struct GameSettingsWindow : Window {
|
||||||
list.emplace_back(new DropDownListStringItem(sd->str_val + i - sd->min, i, false));
|
list.emplace_back(new DropDownListStringItem(sd->str_val + i - sd->min, i, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowDropDownListAt(this, std::move(list), value, -1, wi_rect, COLOUR_ORANGE);
|
ShowDropDownListAt(this, std::move(list), value, WID_GS_SETTING_DROPDOWN, wi_rect, COLOUR_ORANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
|
@ -2526,8 +2526,7 @@ struct GameSettingsWindow : Window {
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
case WID_GS_SETTING_DROPDOWN:
|
||||||
if (widget < 0) {
|
|
||||||
/* Deal with drop down boxes on the panel. */
|
/* Deal with drop down boxes on the panel. */
|
||||||
assert(this->valuedropdown_entry != nullptr);
|
assert(this->valuedropdown_entry != nullptr);
|
||||||
const IntSettingDesc *sd = this->valuedropdown_entry->setting;
|
const IntSettingDesc *sd = this->valuedropdown_entry->setting;
|
||||||
|
@ -2535,14 +2534,13 @@ struct GameSettingsWindow : Window {
|
||||||
|
|
||||||
SetSettingValue(sd, index);
|
SetSettingValue(sd, index);
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDropdownClose(Point pt, int widget, int index, bool instant_close) override
|
void OnDropdownClose(Point pt, int widget, int index, bool instant_close) override
|
||||||
{
|
{
|
||||||
if (widget >= 0) {
|
if (widget != WID_GS_SETTING_DROPDOWN) {
|
||||||
/* Normally the default implementation of OnDropdownClose() takes care of
|
/* Normally the default implementation of OnDropdownClose() takes care of
|
||||||
* a few things. We want that behaviour here too, but only for
|
* a few things. We want that behaviour here too, but only for
|
||||||
* "normal" dropdown boxes. The special dropdown boxes added for every
|
* "normal" dropdown boxes. The special dropdown boxes added for every
|
||||||
|
|
|
@ -23,6 +23,8 @@ enum GSConfigWidgets {
|
||||||
WID_GSC_CONTENT_DOWNLOAD = WID_GSC_TEXTFILE + TFT_CONTENT_END, ///< Download content button.
|
WID_GSC_CONTENT_DOWNLOAD = WID_GSC_TEXTFILE + TFT_CONTENT_END, ///< Download content button.
|
||||||
WID_GSC_ACCEPT, ///< Accept ("Close") button
|
WID_GSC_ACCEPT, ///< Accept ("Close") button
|
||||||
WID_GSC_RESET, ///< Reset button.
|
WID_GSC_RESET, ///< Reset button.
|
||||||
|
|
||||||
|
WID_GSC_SETTING_DROPDOWN = -1, ///< Dynamically created dropdown for changing setting value.
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* WIDGETS_GS_WIDGET_H */
|
#endif /* WIDGETS_GS_WIDGET_H */
|
||||||
|
|
|
@ -26,6 +26,8 @@ enum NewGRFParametersWidgets {
|
||||||
WID_NP_RESET, ///< Reset button.
|
WID_NP_RESET, ///< Reset button.
|
||||||
WID_NP_SHOW_DESCRIPTION, ///< #NWID_SELECTION to optionally display parameter descriptions.
|
WID_NP_SHOW_DESCRIPTION, ///< #NWID_SELECTION to optionally display parameter descriptions.
|
||||||
WID_NP_DESCRIPTION, ///< Multi-line description of a parameter.
|
WID_NP_DESCRIPTION, ///< Multi-line description of a parameter.
|
||||||
|
|
||||||
|
WID_NP_SETTING_DROPDOWN = -1, ///< Dynamically created dropdown for changing setting value.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Widgets of the #NewGRFWindow class. */
|
/** Widgets of the #NewGRFWindow class. */
|
||||||
|
|
|
@ -29,6 +29,8 @@ enum ScriptSettingsWidgets {
|
||||||
WID_SCRS_SCROLLBAR, ///< Scrollbar to scroll through all settings.
|
WID_SCRS_SCROLLBAR, ///< Scrollbar to scroll through all settings.
|
||||||
WID_SCRS_ACCEPT, ///< Accept button.
|
WID_SCRS_ACCEPT, ///< Accept button.
|
||||||
WID_SCRS_RESET, ///< Reset button.
|
WID_SCRS_RESET, ///< Reset button.
|
||||||
|
|
||||||
|
WID_SCRS_SETTING_DROPDOWN = -1, ///< Dynamically created dropdown for changing setting value.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Widgets of the #ScriptDebugWindow class. */
|
/** Widgets of the #ScriptDebugWindow class. */
|
||||||
|
|
|
@ -64,6 +64,8 @@ enum GameSettingsWidgets {
|
||||||
WID_GS_RESTRICT_TYPE, ///< Label upfront to the type drop-down box to restrict the list of settings to show
|
WID_GS_RESTRICT_TYPE, ///< Label upfront to the type drop-down box to restrict the list of settings to show
|
||||||
WID_GS_RESTRICT_DROPDOWN, ///< The drop down box to restrict the list of settings
|
WID_GS_RESTRICT_DROPDOWN, ///< The drop down box to restrict the list of settings
|
||||||
WID_GS_TYPE_DROPDOWN, ///< The drop down box to choose client/game/company/all settings
|
WID_GS_TYPE_DROPDOWN, ///< The drop down box to choose client/game/company/all settings
|
||||||
|
|
||||||
|
WID_GS_SETTING_DROPDOWN = -1, ///< Dynamically created dropdown for changing setting value.
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Widgets of the #CustomCurrencyWindow class. */
|
/** Widgets of the #CustomCurrencyWindow class. */
|
||||||
|
|
Loading…
Reference in New Issue