diff --git a/src/windows/options.c b/src/windows/options.c index 91d4e2cc84..25c2c85a19 100644 --- a/src/windows/options.c +++ b/src/windows/options.c @@ -633,14 +633,30 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget* case WIDX_THEMES_DROPDOWN: num_items = gConfigThemes.num_presets; - for (i = 0; i < num_items; i++) { + gDropdownItemsFormat[0] = 2777; + gDropdownItemsArgs[0] = (uint64)&gConfigThemes.presets[1].name; + gDropdownItemsFormat[1] = 2777; + gDropdownItemsArgs[1] = (uint64)&gConfigThemes.presets[0].name; + + for (i = 2; i < num_items; i++) { gDropdownItemsFormat[i] = 2777; gDropdownItemsArgs[i] = (uint64)&gConfigThemes.presets[i].name; } - window_options_show_dropdown(w, widget, num_items); + window_dropdown_show_text_custom_width( + w->x + widget->left, + w->y + widget->top, + widget->bottom - widget->top + 1, + w->colours[1], + DROPDOWN_FLAG_STAY_OPEN, + num_items, + widget->right - widget->left - 3 + ); - gDropdownItemsChecked = 1 << gCurrentTheme; + if (gCurrentTheme == 0 || gCurrentTheme == 1) + gDropdownItemsChecked = 1 << (gCurrentTheme ^ 1); + else + gDropdownItemsChecked = 1 << (gCurrentTheme); break; } break; @@ -813,6 +829,8 @@ static void window_options_dropdown() break; case WIDX_THEMES_DROPDOWN: if (dropdownIndex != -1) { + if (dropdownIndex == 0 || dropdownIndex == 1) + dropdownIndex ^= 1; theme_change_preset(dropdownIndex); } config_save_default(); diff --git a/src/windows/themes.c b/src/windows/themes.c index 27be351eef..8d9a1d8252 100644 --- a/src/windows/themes.c +++ b/src/windows/themes.c @@ -548,7 +548,12 @@ static void window_themes_mousedown(int widgetIndex, rct_window* w, rct_widget* num_items = gConfigThemes.num_presets; widget--; - for (i = 0; i < num_items; i++) { + gDropdownItemsFormat[0] = 2777; + gDropdownItemsArgs[0] = (uint64)&gConfigThemes.presets[1].name; + gDropdownItemsFormat[1] = 2777; + gDropdownItemsArgs[1] = (uint64)&gConfigThemes.presets[0].name; + + for (i = 2; i < num_items; i++) { gDropdownItemsFormat[i] = 2777; gDropdownItemsArgs[i] = (uint64)&gConfigThemes.presets[i].name; } @@ -563,7 +568,10 @@ static void window_themes_mousedown(int widgetIndex, rct_window* w, rct_widget* widget->right - widget->left - 3 ); - gDropdownItemsChecked = 1 << gCurrentTheme; + if (gCurrentTheme == 0 || gCurrentTheme == 1) + gDropdownItemsChecked = 1 << (gCurrentTheme ^ 1); + else + gDropdownItemsChecked = 1 << (gCurrentTheme); break; case WIDX_THEMES_RCT1_RIDE_LIGHTS: if (gCurrentTheme >= 2) { @@ -618,6 +626,8 @@ static void window_themes_dropdown() break; case WIDX_THEMES_PRESETS_DROPDOWN: if (dropdownIndex != -1) { + if (dropdownIndex == 0 || dropdownIndex == 1) + dropdownIndex ^= 1; theme_change_preset(dropdownIndex); } config_save_default();