From: Carlos Garnacho Date: Fri, 18 Nov 2022 14:02:22 +0000 (+0100) Subject: gdksurface: Do not consider GDK_TOUCH_END/CANCEL as popup-dismiss worthy X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~87^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f1168c50128141cebd9237fb04eb893ab18c2355;p=gtk4.git gdksurface: Do not consider GDK_TOUCH_END/CANCEL as popup-dismiss worthy GDK_TOUCH_END deserves the same treatment than GDK_BUTTON_RELEASE, since it's subject to the same circumstances (popping up a menu on long press would be immediately dismissed on release if we handled them there). Ideally, we would want to match releases that we obtained a press for while grabbed, but as the popup is also dismissed on GDK_BUTTON_PRESS/GDK_TOUCH_BEGIN, there's no use for this tracking. And GDK_TOUCH_CANCEL sounds weird as a reason to dismiss popups, just like crossing events would. Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/2512 --- diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index d4251ed3ab..63d55b223b 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -2800,10 +2800,10 @@ check_autohide (GdkEvent *event) // grabs, it will be delivered to the same place as the // press, and will cause the auto dismissal to be triggered. case GDK_BUTTON_RELEASE: -#endif - case GDK_TOUCH_BEGIN: case GDK_TOUCH_END: case GDK_TOUCH_CANCEL: +#endif + case GDK_TOUCH_BEGIN: case GDK_TOUCHPAD_SWIPE: case GDK_TOUCHPAD_PINCH: display = gdk_event_get_display (event);