LibGUI: Make event receivers be weak pointers.

This commit is contained in:
Andreas Kling 2019-02-26 00:51:49 +01:00
parent 9624b54703
commit 95cfa49f1b
Notes: sideshowbarker 2024-07-19 15:37:51 +09:00
4 changed files with 23 additions and 24 deletions

View file

@ -294,12 +294,12 @@ void GWindow::set_focused_widget(GWidget* widget)
if (m_focused_widget == widget)
return;
if (m_focused_widget) {
GEventLoop::main().post_event(m_focused_widget, make<GEvent>(GEvent::FocusOut));
GEventLoop::main().post_event(*m_focused_widget, make<GEvent>(GEvent::FocusOut));
m_focused_widget->update();
}
m_focused_widget = widget;
if (m_focused_widget) {
GEventLoop::main().post_event(m_focused_widget, make<GEvent>(GEvent::FocusIn));
GEventLoop::main().post_event(*m_focused_widget, make<GEvent>(GEvent::FocusIn));
m_focused_widget->update();
}
}
@ -345,10 +345,10 @@ void GWindow::set_hovered_widget(GWidget* widget)
return;
if (m_hovered_widget)
GEventLoop::main().post_event(m_hovered_widget.ptr(), make<GEvent>(GEvent::Leave));
GEventLoop::main().post_event(*m_hovered_widget, make<GEvent>(GEvent::Leave));
m_hovered_widget = widget ? widget->make_weak_ptr() : nullptr;
if (m_hovered_widget)
GEventLoop::main().post_event(m_hovered_widget.ptr(), make<GEvent>(GEvent::Enter));
GEventLoop::main().post_event(*m_hovered_widget, make<GEvent>(GEvent::Enter));
}