From 06b210ff4252ff981247bd5db4c4a2228cc9a61f Mon Sep 17 00:00:00 2001 From: frosch Date: Thu, 5 Jun 2014 17:14:16 +0000 Subject: (svn r26629) -Fix [FS#6012]: If the video driver fails to supply a list of resolutions, display an error message. --- src/lang/english.txt | 1 + src/settings_gui.cpp | 4 ++++ src/widgets/dropdown.cpp | 2 ++ 3 files changed, 7 insertions(+) (limited to 'src') 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(); -- cgit v1.2.3-70-g09d2