gdk: Avoid synthetic motion confusion

Don't emit a synthetic motion event on a surface
that is grab-shadowed by a popup. This has been
known to confuse GTK, at times.

Fixes: #3439
This commit is contained in:
Matthias Clasen 2021-04-22 19:51:17 -04:00
parent e75df3dcd3
commit d26a3c28d0

View File

@ -2443,6 +2443,7 @@ gdk_surface_ensure_motion (GdkSurface *surface)
GdkEvent *event;
double x, y;
GdkModifierType state;
GdkSurface *grab_surface;
if (!surface->request_motion)
return;
@ -2459,6 +2460,12 @@ gdk_surface_ensure_motion (GdkSurface *surface)
if (!gdk_surface_get_device_position (surface, device, &x, &y, &state))
return;
if (gdk_device_grab_info (display, device, &grab_surface, NULL))
{
if (grab_surface != surface)
return;
}
event = gdk_motion_event_new (surface,
device,
NULL,