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)
committerSimon McVittie <smcv@debian.org>
Tue, 6 Dec 2022 11:52:29 +0000 (11:52 +0000)
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.

(cherry-picked from commit 2ff4c77c5500110e2b387a8764ab19a92045ff4e)

Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/2512
Origin: upstream, 4.8.3, commit:cc5ba83ebae31b20d8ac53fe1a32685b252a100d

Gbp-Pq: Name gdksurface-Do-not-consider-GDK_TOUCH_END-CANCEL-as-popup-.patch

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);