Title: [279827] trunk/Source/WebKit
Revision
279827
Author
[email protected]
Date
2021-07-12 08:23:56 -0700 (Mon, 12 Jul 2021)

Log Message

[GTK] Touch navigation gesture triggers kinetic scrolling when cancelling
https://bugs.webkit.org/show_bug.cgi?id=227701

Patch by Alexander Mikhaylenko <[email protected]> on 2021-07-12
Reviewed by Michael Catanzaro.

Make sure an event that has finished a navigation swipe gesture isn't propagated
to the page triggering kinetic scrolling.

Move the navigation swipe ending from drag-end to swipe signal handler, since
that's where kinetic scrolling is handled and we can stop it.

* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseTouchSwipe):
* UIProcess/gtk/ViewGestureControllerGtk.cpp:
(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (279826 => 279827)


--- trunk/Source/WebKit/ChangeLog	2021-07-12 14:26:45 UTC (rev 279826)
+++ trunk/Source/WebKit/ChangeLog	2021-07-12 15:23:56 UTC (rev 279827)
@@ -1,5 +1,24 @@
 2021-07-12  Alexander Mikhaylenko  <[email protected]>
 
+        [GTK] Touch navigation gesture triggers kinetic scrolling when cancelling
+        https://bugs.webkit.org/show_bug.cgi?id=227701
+
+        Reviewed by Michael Catanzaro.
+
+        Make sure an event that has finished a navigation swipe gesture isn't propagated
+        to the page triggering kinetic scrolling.
+
+        Move the navigation swipe ending from drag-end to swipe signal handler, since
+        that's where kinetic scrolling is handled and we can stop it.
+
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseTouchDragEnd):
+        (webkitWebViewBaseTouchSwipe):
+        * UIProcess/gtk/ViewGestureControllerGtk.cpp:
+        (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
+
+2021-07-12  Alexander Mikhaylenko  <[email protected]>
+
         [GTK][WPE] Support drawing scrollbar corner
         https://bugs.webkit.org/show_bug.cgi?id=227868
 

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (279826 => 279827)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2021-07-12 14:26:45 UTC (rev 279826)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2021-07-12 15:23:56 UTC (rev 279827)
@@ -2014,13 +2014,6 @@
         gtk_gesture_drag_get_start_point(GTK_GESTURE_DRAG(gesture), &x, &y);
         unsigned modifiers = gtk_event_controller_get_current_event_state(GTK_EVENT_CONTROLLER(gesture));
         webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, touchPointerEventType());
-    } else {
-        ViewGestureController* controller = webkitWebViewBaseViewGestureController(webViewBase);
-        if (controller && controller->isSwipeGestureEnabled()) {
-            int32_t eventTime = static_cast<int32_t>(gtk_event_controller_get_current_event_time(GTK_EVENT_CONTROLLER(gesture)));
-            PlatformGtkScrollData scrollData = { .delta = FloatSize(), .eventTime = eventTime, .source = GDK_SOURCE_TOUCHSCREEN, .isEnd = true };
-            controller->handleScrollWheelEvent(&scrollData);
-        }
     }
 }
 
@@ -2041,6 +2034,14 @@
         auto* sequence = gtk_gesture_single_get_current_sequence(GTK_GESTURE_SINGLE(gesture));
         auto* event = gtk_gesture_get_last_event(gesture, sequence);
 
+        ViewGestureController* controller = webkitWebViewBaseViewGestureController(webViewBase);
+        if (controller && controller->isSwipeGestureEnabled()) {
+            int32_t eventTime = static_cast<int32_t>(gtk_event_controller_get_current_event_time(GTK_EVENT_CONTROLLER(gesture)));
+            PlatformGtkScrollData scrollData = { .delta = FloatSize(), .eventTime = eventTime, .source = GDK_SOURCE_TOUCHSCREEN, .isEnd = true };
+            if (controller->handleScrollWheelEvent(&scrollData))
+                return;
+        }
+
         webkitWebViewBaseSynthesizeWheelEvent(webViewBase, event, -velocityX, -velocityY, x, y, WheelEventPhase::NoPhase, WheelEventPhase::Began);
     }
 }

Modified: trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp (279826 => 279827)


--- trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp	2021-07-12 14:26:45 UTC (rev 279826)
+++ trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp	2021-07-12 15:23:56 UTC (rev 279827)
@@ -176,7 +176,7 @@
 
     if (isEventStop(event)) {
         startAnimation();
-        return false;
+        return true;
     }
 
     uint32_t eventTime = event->eventTime;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to