From 5908873b45ecf6dd43411b7df55701576b8e63a6 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 19 Sep 2022 20:47:10 +0200 Subject: [PATCH] LibGUI: Fire Show/Hide events when adding/removing widget from tree This ensures that widgets always get an initial show event. --- Userland/Libraries/LibGUI/Widget.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 1966f5a22ba..cc16c057f20 100644 --- a/Userland/Libraries/LibGUI/Widget.cpp +++ b/Userland/Libraries/LibGUI/Widget.cpp @@ -219,6 +219,11 @@ void Widget::child_event(Core::ChildEvent& event) } if (window() && event.child() && is(*event.child())) window()->did_add_widget({}, verify_cast(*event.child())); + + if (event.child() && is(*event.child()) && static_cast(*event.child()).is_visible()) { + ShowEvent show_event; + event.child()->dispatch_event(show_event); + } } if (event.type() == Event::ChildRemoved) { if (layout()) { @@ -228,6 +233,10 @@ void Widget::child_event(Core::ChildEvent& event) } if (window() && event.child() && is(*event.child())) window()->did_remove_widget({}, verify_cast(*event.child())); + if (event.child() && is(*event.child())) { + HideEvent hide_event; + event.child()->dispatch_event(hide_event); + } update(); } return Core::Object::child_event(event);