1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:17:44 +00:00

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
3 changed files with 6 additions and 11 deletions

View file

@ -87,15 +87,6 @@ void SpinBox::set_range(int min, int max)
update(); 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) void SpinBox::keydown_event(KeyEvent& event)
{ {
if (event.key() == KeyCode::Key_Up) { if (event.key() == KeyCode::Key_Up) {

View file

@ -44,8 +44,6 @@ public:
void set_max(int max) { set_range(min(), max); } void set_max(int max) { set_range(min(), max); }
void set_range(int min, int max); void set_range(int min, int max);
void set_enabled(bool);
Function<void(int value)> on_change; Function<void(int value)> on_change;
protected: protected:

View file

@ -616,6 +616,12 @@ void Widget::set_enabled(bool enabled)
if (m_enabled == enabled) if (m_enabled == enabled)
return; return;
m_enabled = enabled; m_enabled = enabled;
for_each_child_widget([enabled](auto& child) {
child.set_enabled(enabled);
return IterationDecision::Continue;
});
Event e(Event::EnabledChange); Event e(Event::EnabledChange);
event(e); event(e);
update(); update();