From d8193f5accc9ac08697be15056158349732f03bc Mon Sep 17 00:00:00 2001 From: David Capello Date: Mon, 6 Oct 2025 16:40:50 -0300 Subject: [PATCH] Invalidate all blobs after changing theme We've moved the InitTheme code from the InitTheme.connect() signal to the onInitTheme() member function. --- src/ui/textedit.cpp | 32 ++++++++++++++++++++------------ src/ui/textedit.h | 1 + 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/ui/textedit.cpp b/src/ui/textedit.cpp index 0ec5edc73..5169ec7db 100644 --- a/src/ui/textedit.cpp +++ b/src/ui/textedit.cpp @@ -42,18 +42,6 @@ TextEdit::TextEdit() : Widget(kTextEditWidget), m_caret(&m_lines) { enableFlags(CTRL_RIGHT_CLICK); setFocusStop(true); - InitTheme.connect([this] { - ASSERT(style()->layers().size() == 4); - m_colorBG = style()->layers()[0].color(); - - m_textPaint.color(style()->layers()[1].color()); - m_textPaint.style(os::Paint::Fill); - - m_colorSelected = style()->layers()[2].color(); - - m_selectedTextPaint.color(style()->layers()[3].color()); - m_selectedTextPaint.style(os::Paint::Fill); - }); initTheme(); } @@ -428,6 +416,26 @@ void TextEdit::onPaint(PaintEvent& ev) m_caretRect.offset(gfx::Point(g->getInternalDeltaX(), g->getInternalDeltaY())); } +void TextEdit::onInitTheme(InitThemeEvent& ev) +{ + Widget::onInitTheme(ev); + + // TODO we cannot expect a specific number of layers in the theme style + ASSERT(style()->layers().size() == 4); + m_colorBG = style()->layers()[0].color(); + + m_textPaint.color(style()->layers()[1].color()); + m_textPaint.style(os::Paint::Fill); + + m_colorSelected = style()->layers()[2].color(); + + m_selectedTextPaint.color(style()->layers()[3].color()); + m_selectedTextPaint.style(os::Paint::Fill); + + // Invalidate all blobs + onSetText(); +} + void TextEdit::onSizeHint(SizeHintEvent& ev) { ev.setSizeHint(m_textSize); diff --git a/src/ui/textedit.h b/src/ui/textedit.h index 8d3f745a6..a51a490b4 100644 --- a/src/ui/textedit.h +++ b/src/ui/textedit.h @@ -35,6 +35,7 @@ public: protected: bool onProcessMessage(Message* msg) override; void onPaint(PaintEvent& ev) override; + void onInitTheme(InitThemeEvent& ev) override; void onSizeHint(SizeHintEvent& ev) override; void onScrollRegion(ScrollRegionEvent& ev) override; void onSetText() override;