Invalidate all blobs after changing theme

We've moved the InitTheme code from the InitTheme.connect() signal to
the onInitTheme() member function.
This commit is contained in:
David Capello 2025-10-06 16:40:50 -03:00
parent 3c0b4e2940
commit d8193f5acc
2 changed files with 21 additions and 12 deletions

View File

@ -42,18 +42,6 @@ TextEdit::TextEdit() : Widget(kTextEditWidget), m_caret(&m_lines)
{ {
enableFlags(CTRL_RIGHT_CLICK); enableFlags(CTRL_RIGHT_CLICK);
setFocusStop(true); 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(); initTheme();
} }
@ -428,6 +416,26 @@ void TextEdit::onPaint(PaintEvent& ev)
m_caretRect.offset(gfx::Point(g->getInternalDeltaX(), g->getInternalDeltaY())); 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) void TextEdit::onSizeHint(SizeHintEvent& ev)
{ {
ev.setSizeHint(m_textSize); ev.setSizeHint(m_textSize);

View File

@ -35,6 +35,7 @@ public:
protected: protected:
bool onProcessMessage(Message* msg) override; bool onProcessMessage(Message* msg) override;
void onPaint(PaintEvent& ev) override; void onPaint(PaintEvent& ev) override;
void onInitTheme(InitThemeEvent& ev) override;
void onSizeHint(SizeHintEvent& ev) override; void onSizeHint(SizeHintEvent& ev) override;
void onScrollRegion(ScrollRegionEvent& ev) override; void onScrollRegion(ScrollRegionEvent& ev) override;
void onSetText() override; void onSetText() override;