From 1faa2726c7dd299d6e515e52b454d941f45a816f Mon Sep 17 00:00:00 2001 From: jensj12 Date: Fri, 4 Aug 2017 13:18:29 +0200 Subject: [PATCH] Update all windows after changing colour scheme --- src/openrct2/interface/Theme.cpp | 14 +++++++++----- src/openrct2/interface/themes.h | 1 + src/openrct2/windows/themes.c | 2 ++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/openrct2/interface/Theme.cpp b/src/openrct2/interface/Theme.cpp index cfb4f04a02..ea469baf5e 100644 --- a/src/openrct2/interface/Theme.cpp +++ b/src/openrct2/interface/Theme.cpp @@ -707,11 +707,7 @@ extern "C" ThemeManager::ActiveAvailableThemeIndex = index; String::DiscardDuplicate(&gConfigInterface.current_theme_preset, theme_manager_get_available_theme_name(index)); - // Apply the selected theme to all open windows - for (rct_window *w = g_window_list; w < gWindowNextSlot; w++) - { - colour_scheme_update(w); - } + colour_scheme_update_all(); } uint8 theme_get_colour(rct_windowclass wc, uint8 index) @@ -861,6 +857,14 @@ extern "C" return desc->WindowName; } + void colour_scheme_update_all() + { + for (rct_window *w = g_window_list; w < gWindowNextSlot; w++) + { + colour_scheme_update(w); + } + } + void colour_scheme_update(rct_window * window) { colour_scheme_update_by_class(window, window->classification); diff --git a/src/openrct2/interface/themes.h b/src/openrct2/interface/themes.h index 45bad6b8d6..78210de24e 100644 --- a/src/openrct2/interface/themes.h +++ b/src/openrct2/interface/themes.h @@ -28,6 +28,7 @@ enum { }; void colour_scheme_update(rct_window *window); +void colour_scheme_update_all(); void colour_scheme_update_by_class(rct_window *window, rct_windowclass classification); void theme_manager_initialise(); diff --git a/src/openrct2/windows/themes.c b/src/openrct2/windows/themes.c index ca9ed8d89c..48196d3e7b 100644 --- a/src/openrct2/windows/themes.c +++ b/src/openrct2/windows/themes.c @@ -547,6 +547,7 @@ static void window_themes_dropdown(rct_window *w, rct_widgetindex widgetIndex, s uint8 colour = theme_get_colour(wc, _colour_index_2); colour = (colour & COLOUR_FLAG_TRANSLUCENT) | dropdownIndex; theme_set_colour(wc, _colour_index_2, colour); + colour_scheme_update_all(); window_invalidate_all(); _colour_index_1 = -1; _colour_index_2 = -1; @@ -628,6 +629,7 @@ void window_themes_scrollmousedown(rct_window *w, sint32 scrollIndex, sint32 x, colour |= COLOUR_FLAG_TRANSLUCENT; } theme_set_colour(wc, _colour_index_2, colour); + colour_scheme_update_all(); window_invalidate_all(); } }