From d225f146575e6eae79562cca73d65234e08f3bcb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 22 Apr 2021 19:51:17 -0400 Subject: [PATCH] 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 --- gdk/gdksurface.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index ef6464c43a..589dc4e10c 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -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,