From cc5ba83ebae31b20d8ac53fe1a32685b252a100d Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 18 Nov 2022 15:02:22 +0100 Subject: [PATCH] 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 (cherry-picked from commit 2ff4c77c5500110e2b387a8764ab19a92045ff4e) --- gdk/gdksurface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); -- 2.30.2