LibGUI: Make the "enabled" widget state propagate to child widgets

This simplifies building composite widgets by not having to worry about
updating widget subtrees.
This commit is contained in:
Andreas Kling 2020-05-08 13:49:58 +02:00
parent 677568e3d4
commit 0f0d73d1b5
Notes: sideshowbarker 2024-07-19 06:53:12 +09:00
3 changed files with 6 additions and 11 deletions

View file

@ -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) {

View file

@ -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<void(int value)> on_change;
protected:

View file

@ -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();