Widgets: Avoid redraws by reducing gtk calls

This commit is contained in:
scorpion-26 2023-02-24 22:34:30 +01:00
parent e1cf8f2475
commit d8eae96e50

View file

@ -63,7 +63,7 @@ void Widget::CreateAndAddWidget(Widget* widget, GtkWidget* parentWidget)
void Widget::SetClass(const std::string& cssClass) void Widget::SetClass(const std::string& cssClass)
{ {
if (m_Widget) if (m_Widget && m_CssClass != cssClass)
{ {
auto style = gtk_widget_get_style_context(m_Widget); auto style = gtk_widget_get_style_context(m_Widget);
gtk_style_context_remove_class(style, m_CssClass.c_str()); gtk_style_context_remove_class(style, m_CssClass.c_str());
@ -286,6 +286,8 @@ Quad CairoArea::GetQuad()
} }
void Sensor::SetValue(double val) void Sensor::SetValue(double val)
{
if (val != m_Val)
{ {
m_Val = val; m_Val = val;
if (m_Widget) if (m_Widget)
@ -293,6 +295,7 @@ void Sensor::SetValue(double val)
gtk_widget_queue_draw(m_Widget); gtk_widget_queue_draw(m_Widget);
} }
} }
}
void Sensor::SetStyle(SensorStyle style) void Sensor::SetStyle(SensorStyle style)
{ {
@ -492,11 +495,11 @@ void Revealer::SetRevealed(bool revealed)
void Text::SetText(const std::string& text) void Text::SetText(const std::string& text)
{ {
m_Text = text; if (m_Widget && text != m_Text)
if (m_Widget)
{ {
gtk_label_set_text((GtkLabel*)m_Widget, m_Text.c_str()); gtk_label_set_text((GtkLabel*)m_Widget, m_Text.c_str());
} }
m_Text = text;
} }
void Text::Create() void Text::Create()