mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:58:11 +00:00
GWidget: Add set_updates_enabled() for temporarily suppressing updates.
This commit is contained in:
parent
c3b7ace3e0
commit
6d5507313e
2 changed files with 26 additions and 4 deletions
|
@ -283,6 +283,8 @@ void GWidget::leave_event(CEvent&)
|
||||||
|
|
||||||
void GWidget::update()
|
void GWidget::update()
|
||||||
{
|
{
|
||||||
|
if (rect().is_empty())
|
||||||
|
return;
|
||||||
update(rect());
|
update(rect());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,10 +292,17 @@ void GWidget::update(const Rect& rect)
|
||||||
{
|
{
|
||||||
if (!is_visible())
|
if (!is_visible())
|
||||||
return;
|
return;
|
||||||
auto* w = window();
|
|
||||||
if (!w)
|
GWindow* window = m_window;
|
||||||
return;
|
GWidget* parent = parent_widget();
|
||||||
w->update(rect.translated(window_relative_rect().location()));
|
while (parent) {
|
||||||
|
if (!parent->updates_enabled())
|
||||||
|
return;
|
||||||
|
window = parent->m_window;
|
||||||
|
parent = parent->parent_widget();
|
||||||
|
}
|
||||||
|
if (window)
|
||||||
|
window->update(rect.translated(window_relative_rect().location()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect GWidget::window_relative_rect() const
|
Rect GWidget::window_relative_rect() const
|
||||||
|
@ -516,3 +525,12 @@ void GWidget::unregister_local_shortcut_action(Badge<GAction>, GAction& action)
|
||||||
{
|
{
|
||||||
m_local_shortcut_actions.remove(action.shortcut());
|
m_local_shortcut_actions.remove(action.shortcut());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GWidget::set_updates_enabled(bool enabled)
|
||||||
|
{
|
||||||
|
if (m_updates_enabled == enabled)
|
||||||
|
return;
|
||||||
|
m_updates_enabled = enabled;
|
||||||
|
if (enabled)
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
|
@ -45,6 +45,9 @@ public:
|
||||||
bool is_enabled() const { return m_enabled; }
|
bool is_enabled() const { return m_enabled; }
|
||||||
void set_enabled(bool);
|
void set_enabled(bool);
|
||||||
|
|
||||||
|
bool updates_enabled() const { return m_updates_enabled; }
|
||||||
|
void set_updates_enabled(bool);
|
||||||
|
|
||||||
virtual void event(CEvent&) override;
|
virtual void event(CEvent&) override;
|
||||||
virtual void paint_event(GPaintEvent&);
|
virtual void paint_event(GPaintEvent&);
|
||||||
virtual void resize_event(GResizeEvent&);
|
virtual void resize_event(GResizeEvent&);
|
||||||
|
@ -211,6 +214,7 @@ private:
|
||||||
bool m_greedy_for_hits { false };
|
bool m_greedy_for_hits { false };
|
||||||
bool m_enabled { true };
|
bool m_enabled { true };
|
||||||
bool m_layout_dirty { false };
|
bool m_layout_dirty { false };
|
||||||
|
bool m_updates_enabled { true };
|
||||||
|
|
||||||
CElapsedTimer m_left_click_clock;
|
CElapsedTimer m_left_click_clock;
|
||||||
CElapsedTimer m_right_click_clock;
|
CElapsedTimer m_right_click_clock;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue