1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:47:45 +00:00

LibGUI: Clear any hovered index when the cursor leaves an AbstractView

This commit is contained in:
Andreas Kling 2020-04-03 21:14:34 +02:00
parent c26bef0e53
commit 031d242e0e
3 changed files with 19 additions and 5 deletions

View file

@ -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);
}

View file

@ -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);

View file

@ -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();