From 0f0d73d1b50198a048266b034c420d1105fa9d9b Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 8 May 2020 13:49:58 +0200 Subject: [PATCH] LibGUI: Make the "enabled" widget state propagate to child widgets This simplifies building composite widgets by not having to worry about updating widget subtrees. --- Libraries/LibGUI/SpinBox.cpp | 9 --------- Libraries/LibGUI/SpinBox.h | 2 -- Libraries/LibGUI/Widget.cpp | 6 ++++++ 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Libraries/LibGUI/SpinBox.cpp b/Libraries/LibGUI/SpinBox.cpp index 487712bcbe0..46bf956cb75 100644 --- a/Libraries/LibGUI/SpinBox.cpp +++ b/Libraries/LibGUI/SpinBox.cpp @@ -87,15 +87,6 @@ void SpinBox::set_range(int min, int max) update(); } -void SpinBox::set_enabled(bool value) -{ - Widget::set_enabled(value); - - m_editor->set_enabled(value); - m_increment_button->set_enabled(value); - m_decrement_button->set_enabled(value); -} - void SpinBox::keydown_event(KeyEvent& event) { if (event.key() == KeyCode::Key_Up) { diff --git a/Libraries/LibGUI/SpinBox.h b/Libraries/LibGUI/SpinBox.h index c5d96b6285b..6f0fc900b7a 100644 --- a/Libraries/LibGUI/SpinBox.h +++ b/Libraries/LibGUI/SpinBox.h @@ -44,8 +44,6 @@ public: void set_max(int max) { set_range(min(), max); } void set_range(int min, int max); - void set_enabled(bool); - Function on_change; protected: diff --git a/Libraries/LibGUI/Widget.cpp b/Libraries/LibGUI/Widget.cpp index ceee7e37f30..1ec63c48202 100644 --- a/Libraries/LibGUI/Widget.cpp +++ b/Libraries/LibGUI/Widget.cpp @@ -616,6 +616,12 @@ void Widget::set_enabled(bool enabled) if (m_enabled == enabled) return; m_enabled = enabled; + + for_each_child_widget([enabled](auto& child) { + child.set_enabled(enabled); + return IterationDecision::Continue; + }); + Event e(Event::EnabledChange); event(e); update();