mirror of
https://github.com/brl/mutter.git
synced 2025-04-11 12:49:38 +00: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…
x
Reference in New Issue
Block a user