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
This commit is contained in:
Christian Hergert 2022-02-26 13:31:18 -08:00
parent 3a0077f65f
commit d14987e819

View File

@ -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];