1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 22:17:42 +00:00

LibGUI: GWindow's focused widget should be a WeakPtr.

This fixes some very obvious use-after-free accesses.
This commit is contained in:
Andreas Kling 2019-04-18 23:16:57 +02:00
parent 9e6b0ccc0e
commit cc9cefbd5f
2 changed files with 2 additions and 2 deletions

View file

@ -337,7 +337,7 @@ void GWindow::set_focused_widget(GWidget* widget)
GEventLoop::current().post_event(*m_focused_widget, make<GEvent>(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>(GEvent::FocusIn));
m_focused_widget->update();

View file

@ -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<GWidget> m_focused_widget;
WeakPtr<GWidget> m_global_cursor_tracking_widget;
WeakPtr<GWidget> m_automatic_cursor_tracking_widget;
WeakPtr<GWidget> m_hovered_widget;