summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lang/english.txt1
-rw-r--r--src/settings_gui.cpp4
-rw-r--r--src/widgets/dropdown.cpp2
3 files changed, 7 insertions, 0 deletions
diff --git a/src/lang/english.txt b/src/lang/english.txt
index 3a71d92dd..7787d0842 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -969,6 +969,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select t
STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s}
STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set
+STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions
STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed
# Custom currency window
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
index 5cac72223..ccc8ff8e6 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -268,6 +268,8 @@ struct GameOptionsWindow : Window {
}
case WID_GO_RESOLUTION_DROPDOWN: // Setup resolution dropdown
+ if (_num_resolutions == 0) break;
+
list = new DropDownList();
*selected_index = GetCurRes();
for (int i = 0; i < _num_resolutions; i++) {
@@ -433,6 +435,8 @@ struct GameOptionsWindow : Window {
DropDownList *list = this->BuildDropDownList(widget, &selected);
if (list != NULL) {
ShowDropDownList(this, list, selected, widget);
+ } else {
+ if (widget == WID_GO_RESOLUTION_DROPDOWN) ShowErrorMessage(STR_ERROR_RESOLUTION_LIST_FAILED, INVALID_STRING_ID, WL_ERROR);
}
break;
}
diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp
index d919eff7c..1f32b778e 100644
--- a/src/widgets/dropdown.cpp
+++ b/src/widgets/dropdown.cpp
@@ -116,6 +116,8 @@ struct DropdownWindow : Window {
DropdownWindow(Window *parent, const DropDownList *list, int selected, int button, bool instant_close, const Point &position, const Dimension &size, Colours wi_colour, bool scroll)
: Window(&_dropdown_desc)
{
+ assert(list->Length() > 0);
+
this->position = position;
this->CreateNestedTree();