gdksurface: Do not consider GDK_TOUCH_END/CANCEL as popup-dismiss worthy
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 18 Nov 2022 14:02:22 +0000 (15:02 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 18 Nov 2022 16:56:14 +0000 (17:56 +0100)
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

gdk/gdksurface.c

index d4251ed3abb182e6b3c31b74040e74e2d38a0e27..63d55b223b495c00c570fc7eb62302970f06d990 100644 (file)
@@ -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);