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:
parent
677568e3d4
commit
0f0d73d1b5
3 changed files with 6 additions and 11 deletions
|
@ -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) {
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue