From: Christian Hergert Date: Sat, 26 Feb 2022 21:31:18 +0000 (-0800) Subject: macos: send stop event when fingers touch X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~4^2~353^2~12 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d14987e8195f8b588648ba95791797e84663b408;p=gtk4.git macos: send stop event when fingers touch When the fingers are placed on the touchpad, we get a scroll event with the phase NSEventPhaseMayBegin. We can use this to synthesize an is_stop event. This results in the scrolledwindow stopping scroll with stop gestures. This can cause another warning as well, however, which should be addressed from #4730. Fixes #4733 --- diff --git a/gdk/macos/gdkmacosdisplay-translate.c b/gdk/macos/gdkmacosdisplay-translate.c index db1cfa2527..e261b8a4ae 100644 --- a/gdk/macos/gdkmacosdisplay-translate.c +++ b/gdk/macos/gdkmacosdisplay-translate.c @@ -635,6 +635,20 @@ fill_scroll_event (GdkMacosDisplay *self, state = _gdk_macos_display_get_current_mouse_modifiers (self) | _gdk_macos_display_get_current_keyboard_modifiers (self); + /* If we are starting a new phase, send a stop so any previous + * scrolling immediately stops. + */ + if (phase == NSEventPhaseMayBegin) + { + ret = gdk_scroll_event_new (GDK_SURFACE (surface), + pointer, + NULL, + get_time_from_ns_event (nsevent), + state, + 0.0, 0.0, TRUE); + _gdk_event_queue_append (GDK_DISPLAY (self), g_steal_pointer (&ret)); + } + dx = [nsevent deltaX]; dy = [nsevent deltaY];