diff --git a/repos/os/src/server/nitpicker/main.cc b/repos/os/src/server/nitpicker/main.cc index 2aa78cfdb1..da09427d6b 100644 --- a/repos/os/src/server/nitpicker/main.cc +++ b/repos/os/src/server/nitpicker/main.cc @@ -705,7 +705,7 @@ void Nitpicker::Main::handle_input_events(User_state::Input_batch batch) } /* report hover changes */ - if (_hover_reporter.enabled() && !result.key_pressed + if (_hover_reporter.enabled() && (result.hover_changed || (old_motion_activity != _motion_activity))) { Reporter::Xml_generator xml(_hover_reporter, [&] () { _user_state.report_hovered_view_owner(xml, _motion_activity); }); diff --git a/repos/os/src/server/nitpicker/user_state.cc b/repos/os/src/server/nitpicker/user_state.cc index f681036887..4e4e6145f4 100644 --- a/repos/os/src/server/nitpicker/user_state.cc +++ b/repos/os/src/server/nitpicker/user_state.cc @@ -419,6 +419,10 @@ User_state::Handle_forget_result User_state::forget(View_owner const &owner) User_state::Update_hover_result User_state::update_hover() { + /* no hover changes while dragging */ + if (_key_pressed()) + return { .hover_changed = false }; + View_owner * const old_hovered = _hovered; View const * const pointed_view = _view_stack.find_view(_pointer_pos); @@ -432,7 +436,7 @@ User_state::Update_hover_result User_state::update_hover() if (old_hovered) old_hovered->submit_input_event(Hover_leave()); - if (_hovered && _key_cnt == 0) + if (_hovered) _hovered->submit_input_event(Absolute_motion{_pointer_pos.x(), _pointer_pos.y()}); }