StaticText: Reset background on EnrichedString change (#9340)
authorSmallJoker <SmallJoker@users.noreply.github.com>
Sat, 1 Feb 2020 19:41:32 +0000 (20:41 +0100)
committerGitHub <noreply@github.com>
Sat, 1 Feb 2020 19:41:32 +0000 (20:41 +0100)
This also fixes the F6 profiler background color -> now controlled by EnrichedString

src/client/gameui.cpp
src/irrlicht_changes/static_text.cpp

index 3c7ed54b20f4be72fa729537b951f58f109e26c1..138dfb4dae2e720cdef0d4469ffddb5c22e46c89 100644 (file)
@@ -82,7 +82,6 @@ void GameUI::init()
                core::rect<s32>(0, 0, 0, 0), false, false, guiroot);
        m_guitext_profiler->setOverrideFont(g_fontengine->getFont(
                g_fontengine->getDefaultFontSize() * 0.9f, FM_Mono));
-       m_guitext_profiler->setBackgroundColor(video::SColor(120, 0, 0, 0));
        m_guitext_profiler->setVisible(false);
 }
 
@@ -246,11 +245,12 @@ void GameUI::updateProfiler()
                int lines = g_profiler->print(os, m_profiler_current_page, m_profiler_max_page);
                ++lines;
 
-               std::wstring text = utf8_to_wide(os.str());
-               setStaticText(m_guitext_profiler, text.c_str());
+               EnrichedString str(utf8_to_wide(os.str()));
+               str.setBackground(video::SColor(120, 0, 0, 0));
+               setStaticText(m_guitext_profiler, str);
 
                core::dimension2d<u32> size = m_guitext_profiler->getOverrideFont()->
-                               getDimension(text.c_str());
+                               getDimension(str.c_str());
                core::position2di upper_left(6, 50);
                core::position2di lower_right = upper_left;
                lower_right.X += size.Width + 10;
index 39b34d17cf4bf4834d9bab6e1ddc1d06fa2df304..bf61cd64eb3e9fb5d25c983745aa95d0691dad25 100644 (file)
@@ -308,9 +308,10 @@ void StaticText::updateText()
        const EnrichedString &cText = ColoredText;
        BrokenText.clear();
 
-       if (cText.hasBackground()) {
+       if (cText.hasBackground())
                setBackgroundColor(cText.getBackground());
-       }
+       else
+               setDrawBackground(false);
 
        if (!WordWrap) {
                BrokenText.push_back(cText);