diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 1966f5a22b..cc16c057f2 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);