mirror of
https://github.com/brl/mutter.git
synced 2024-11-28 19:10:43 -05:00
clutter: Also pick on BUTTON_PRESS events
In an x11 session, we don't receive motion events from X when the
pointer is above a window. Since commit 734a1859
we only do picking on
motion events though, which means when clicking the mouse to focus a
window, we don't repick and might still think the pointer is hovering
above another window or actor, ending up not focussing the window.
Fix this by always repicking on BUTTON_PRESS events. While this is not
necessary in the wayland session, button presses happen rarely compared
to motion events, so it's not a performance regression to do it in
Wayland sessions, too.
Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/1660
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1752>
This commit is contained in:
parent
c6935ad5b7
commit
4d54c3c556
@ -1701,7 +1701,12 @@ _clutter_process_event_details (ClutterActor *stage,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event->type == CLUTTER_MOTION)
|
/* We need to repick on both motion and button press events, the
|
||||||
|
* latter is only needed for X11 (there the device actor might be
|
||||||
|
* stale because we don't always receive motion events).
|
||||||
|
*/
|
||||||
|
if (event->type == CLUTTER_BUTTON_PRESS ||
|
||||||
|
event->type == CLUTTER_MOTION)
|
||||||
{
|
{
|
||||||
event->any.source =
|
event->any.source =
|
||||||
update_device_for_event (CLUTTER_STAGE (stage), event, TRUE);
|
update_device_for_event (CLUTTER_STAGE (stage), event, TRUE);
|
||||||
|
Loading…
Reference in New Issue
Block a user