From 2135c66823553899a2927d319ac837ca2d43f0ab Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 28 Jul 2021 21:24:29 +0200 Subject: Revert "LibGUI: Only dispatch Leave if the now-hovered widget isn't a child" This reverts commit cfc9ee6f16b9c4d2b246bb2832dd436637cbeaad. This change was wrong: The parent *does* lose hover when the mouse cursor enters a child widget. Hover is not hierarchical, there is only a hovered window and a hovered widget within that window. This fixes an issue with GUI::TabWidget buttons appearing hovered despite the mouse cursor not being over the buttons. --- Userland/Libraries/LibGUI/Widget.cpp | 16 ---------------- Userland/Libraries/LibGUI/Widget.h | 2 -- Userland/Libraries/LibGUI/Window.cpp | 2 +- 3 files changed, 1 insertion(+), 19 deletions(-) (limited to 'Userland/Libraries/LibGUI') diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 9eca9eaa03..aa5689297d 100644 --- a/Userland/Libraries/LibGUI/Widget.cpp +++ b/Userland/Libraries/LibGUI/Widget.cpp @@ -1143,20 +1143,4 @@ bool Widget::is_visible_for_timer_purposes() const return is_visible() && Object::is_visible_for_timer_purposes(); } -bool Widget::is_parent_of(Widget const* widget) const -{ - if (widget == nullptr) - return false; - - Widget const* current_widget = widget->parent_widget(); - - while (current_widget != nullptr) { - if (current_widget == this) - return true; - current_widget = current_widget->parent_widget(); - } - - return false; -} - } diff --git a/Userland/Libraries/LibGUI/Widget.h b/Userland/Libraries/LibGUI/Widget.h index 4a5f4ef8f4..a46a735e89 100644 --- a/Userland/Libraries/LibGUI/Widget.h +++ b/Userland/Libraries/LibGUI/Widget.h @@ -280,8 +280,6 @@ public: bool has_pending_drop() const; - bool is_parent_of(Widget const*) const; - protected: Widget(); diff --git a/Userland/Libraries/LibGUI/Window.cpp b/Userland/Libraries/LibGUI/Window.cpp index aa00e8b684..f7a6a26d9d 100644 --- a/Userland/Libraries/LibGUI/Window.cpp +++ b/Userland/Libraries/LibGUI/Window.cpp @@ -802,7 +802,7 @@ void Window::set_hovered_widget(Widget* widget) if (widget == m_hovered_widget) return; - if (m_hovered_widget && !m_hovered_widget->is_parent_of(widget)) + if (m_hovered_widget) Core::EventLoop::current().post_event(*m_hovered_widget, make(Event::Leave)); m_hovered_widget = widget; -- cgit v1.2.3