diff --git a/Libraries/LibGUI/AbstractTableView.cpp b/Libraries/LibGUI/AbstractTableView.cpp index bf4b707259..75773775d7 100644 --- a/Libraries/LibGUI/AbstractTableView.cpp +++ b/Libraries/LibGUI/AbstractTableView.cpp @@ -534,8 +534,9 @@ void AbstractTableView::context_menu_event(ContextMenuEvent& event) on_context_menu_request(index, event); } -void AbstractTableView::leave_event(Core::Event&) +void AbstractTableView::leave_event(Core::Event& event) { + AbstractView::leave_event(event); window()->set_override_cursor(StandardCursor::None); set_hovered_header_index(-1); } diff --git a/Libraries/LibGUI/AbstractView.cpp b/Libraries/LibGUI/AbstractView.cpp index 952064f467..05641b0ee5 100644 --- a/Libraries/LibGUI/AbstractView.cpp +++ b/Libraries/LibGUI/AbstractView.cpp @@ -193,16 +193,27 @@ void AbstractView::mousedown_event(MouseEvent& event) update(); } +void AbstractView::set_hovered_index(const ModelIndex& index) +{ + if (m_hovered_index == index) + return; + m_hovered_index = index; + update(); +} + +void AbstractView::leave_event(Core::Event& event) +{ + ScrollableWidget::leave_event(event); + set_hovered_index({}); +} + void AbstractView::mousemove_event(MouseEvent& event) { if (!model()) return ScrollableWidget::mousemove_event(event); auto hovered_index = index_at_event_position(event.position()); - if (m_hovered_index != hovered_index) { - m_hovered_index = hovered_index; - update(); - } + set_hovered_index(hovered_index); if (!m_might_drag) return ScrollableWidget::mousemove_event(event); diff --git a/Libraries/LibGUI/AbstractView.h b/Libraries/LibGUI/AbstractView.h index dfedbd7614..b48d94f1fe 100644 --- a/Libraries/LibGUI/AbstractView.h +++ b/Libraries/LibGUI/AbstractView.h @@ -82,8 +82,10 @@ protected: virtual void doubleclick_event(MouseEvent&) override; virtual void context_menu_event(ContextMenuEvent&) override; virtual void drop_event(DropEvent&) override; + virtual void leave_event(Core::Event&) override; virtual void did_scroll() override; + void set_hovered_index(const ModelIndex&); void activate(const ModelIndex&); void activate_selected(); void update_edit_widget_position();