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
This commit is contained in:
Carlos Garnacho 2022-11-18 15:02:22 +01:00
parent ae54374a51
commit f1168c5012

View File

@ -2800,10 +2800,10 @@ check_autohide (GdkEvent *event)
// grabs, it will be delivered to the same place as the // grabs, it will be delivered to the same place as the
// press, and will cause the auto dismissal to be triggered. // press, and will cause the auto dismissal to be triggered.
case GDK_BUTTON_RELEASE: case GDK_BUTTON_RELEASE:
#endif
case GDK_TOUCH_BEGIN:
case GDK_TOUCH_END: case GDK_TOUCH_END:
case GDK_TOUCH_CANCEL: case GDK_TOUCH_CANCEL:
#endif
case GDK_TOUCH_BEGIN:
case GDK_TOUCHPAD_SWIPE: case GDK_TOUCHPAD_SWIPE:
case GDK_TOUCHPAD_PINCH: case GDK_TOUCHPAD_PINCH:
display = gdk_event_get_display (event); display = gdk_event_get_display (event);