From f992bc55371662373fb61c478252f794a7466995 Mon Sep 17 00:00:00 2001 From: Bruno Van de Velde Date: Mon, 18 Feb 2019 19:54:54 +0100 Subject: [PATCH] Fixed corrupted white theme when DefaultTheme was initialized before Color constants --- changelog.txt | 1 + src/TGUI/Loading/Theme.cpp | 23 ++++++++++------------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/changelog.txt b/changelog.txt index c85372e8..743f70f6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -7,6 +7,7 @@ TGUI 0.8.4 (TBD) - Added option to ListView to expand the last column to fill the remaining space - Allow a separator between the header and contents in a ListView - Split separator in ListView into separator and vertical grid line +- Fixed corrupted white theme when DefaultTheme was initialized before Color constants TGUI 0.8.3 (27 January 2019) diff --git a/src/TGUI/Loading/Theme.cpp b/src/TGUI/Loading/Theme.cpp index c65ed07d..abbece5b 100644 --- a/src/TGUI/Loading/Theme.cpp +++ b/src/TGUI/Loading/Theme.cpp @@ -35,7 +35,7 @@ namespace tgui { struct DefaultTheme : public Theme { - DefaultTheme() + void reset() { m_renderers = { {"button", RendererData::create({{"borders", Borders{1}}, @@ -250,15 +250,11 @@ namespace tgui }; } }; - - - - DefaultTheme defaultTheme; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - Theme* Theme::m_defaultTheme = &defaultTheme; + Theme* Theme::m_defaultTheme = nullptr; std::shared_ptr Theme::m_themeLoader = std::make_shared(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -434,19 +430,20 @@ namespace tgui void Theme::setDefault(Theme* theme) { - if (theme) - m_defaultTheme = theme; - else - { - defaultTheme = {}; - m_defaultTheme = &defaultTheme; - } + m_defaultTheme = theme; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Theme* Theme::getDefault() { + if (!m_defaultTheme) + { + static DefaultTheme defaultTheme; + defaultTheme.reset(); + m_defaultTheme = &defaultTheme; + } + return m_defaultTheme; }