diff --git a/LibGUI/GWindow.cpp b/LibGUI/GWindow.cpp index 31f9c33e8f..de38f0ffcc 100644 --- a/LibGUI/GWindow.cpp +++ b/LibGUI/GWindow.cpp @@ -337,7 +337,7 @@ void GWindow::set_focused_widget(GWidget* widget) GEventLoop::current().post_event(*m_focused_widget, make(GEvent::FocusOut)); m_focused_widget->update(); } - m_focused_widget = widget; + m_focused_widget = widget ? widget->make_weak_ptr() : nullptr; if (m_focused_widget) { GEventLoop::current().post_event(*m_focused_widget, make(GEvent::FocusIn)); m_focused_widget->update(); diff --git a/LibGUI/GWindow.h b/LibGUI/GWindow.h index 9aa9c41112..e276ea6dbb 100644 --- a/LibGUI/GWindow.h +++ b/LibGUI/GWindow.h @@ -120,7 +120,7 @@ private: int m_window_id { 0 }; float m_opacity_when_windowless { 1.0f }; GWidget* m_main_widget { nullptr }; - GWidget* m_focused_widget { nullptr }; + WeakPtr m_focused_widget; WeakPtr m_global_cursor_tracking_widget; WeakPtr m_automatic_cursor_tracking_widget; WeakPtr m_hovered_widget;