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;