Modified: trunk/Source/WebKit/ChangeLog (279570 => 279571)
--- trunk/Source/WebKit/ChangeLog 2021-07-05 20:59:45 UTC (rev 279570)
+++ trunk/Source/WebKit/ChangeLog 2021-07-05 21:15:28 UTC (rev 279571)
@@ -1,3 +1,21 @@
+2021-07-05 Alexander Mikhaylenko <[email protected]>
+
+ [GTK] Kinetic scrolling interferes with gestures
+ https://bugs.webkit.org/show_bug.cgi?id=226680
+
+ Reviewed by Michael Catanzaro.
+
+ Simulate scroll events that would stop scrolling when we're starting any touch
+ gesture. Since we don't have a way to do that on touchpad yet, just stop it when
+ starting a zoom or a navigation swipe gesture instead.
+
+ * UIProcess/API/gtk/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::navigationGestureDidBegin):
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseZoomBegin):
+ (webkitWebViewBaseTouchDragBegin):
+ (webkitWebViewBaseConstructed):
+
2021-07-04 Wenson Hsieh <[email protected]>
[iOS] Augment -_webView:didNotHandleTapAsMeaningfulClickAtPoint: to include meaningful taps
Modified: trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp (279570 => 279571)
--- trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp 2021-07-05 20:59:45 UTC (rev 279570)
+++ trunk/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp 2021-07-05 21:15:28 UTC (rev 279571)
@@ -39,6 +39,7 @@
#include "WebEventFactory.h"
#include "WebKitColorChooser.h"
#include "WebKitPopupMenu.h"
+#include "WebKitWebViewBaseInternal.h"
#include "WebKitWebViewBasePrivate.h"
#include "WebKitWebViewPrivate.h"
#include "WebPageProxy.h"
@@ -444,6 +445,7 @@
void PageClientImpl::navigationGestureDidBegin()
{
+ webkitWebViewBaseSynthesizeWheelEvent(WEBKIT_WEB_VIEW_BASE(m_viewWidget), 0, 0, 0, 0, WheelEventPhase::Began, WheelEventPhase::NoPhase);
}
void PageClientImpl::navigationGestureWillEnd(bool, WebBackForwardListItem&)
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (279570 => 279571)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2021-07-05 20:59:45 UTC (rev 279570)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2021-07-05 21:15:28 UTC (rev 279571)
@@ -1847,6 +1847,19 @@
return GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)->focus(widget, direction);
}
+
+static void webkitWebViewBaseZoomBegin(WebKitWebViewBase* webViewBase, GdkEventSequence* sequence, GtkGesture* gesture)
+{
+ WebKitWebViewBasePrivate* priv = webViewBase->priv;
+ if (priv->pageGrabbedTouch)
+ return;
+
+ double x, y;
+ gtk_gesture_get_bounding_box_center(gesture, &x, &y);
+
+ webkitWebViewBaseSynthesizeWheelEvent(webViewBase, 0, 0, x, y, WheelEventPhase::Began, WheelEventPhase::NoPhase);
+}
+
static void webkitWebViewBaseZoomChanged(WebKitWebViewBase* webViewBase, gdouble scale, GtkGesture* gesture)
{
WebKitWebViewBasePrivate* priv = webViewBase->priv;
@@ -1920,6 +1933,8 @@
WebKitWebViewBasePrivate* priv = webViewBase->priv;
priv->dragOffset.set(0, 0);
priv->isBeingDragged = false;
+
+ webkitWebViewBaseSynthesizeWheelEvent(webViewBase, 0, 0, startX, startY, WheelEventPhase::Began, WheelEventPhase::NoPhase);
}
static void webkitWebViewBaseTouchDragUpdate(WebKitWebViewBase* webViewBase, double offsetX, double offsetY, GtkGesture* gesture)
@@ -2061,6 +2076,7 @@
priv->touchGestureGroup = gtk_gesture_zoom_new(viewWidget);
g_object_set_data_full(G_OBJECT(viewWidget), "wk-view-zoom-gesture", priv->touchGestureGroup, g_object_unref);
#endif
+ g_signal_connect_object(priv->touchGestureGroup, "begin", G_CALLBACK(webkitWebViewBaseZoomBegin), viewWidget, G_CONNECT_SWAPPED);
g_signal_connect_object(priv->touchGestureGroup, "scale-changed", G_CALLBACK(webkitWebViewBaseZoomChanged), viewWidget, G_CONNECT_SWAPPED);
g_signal_connect_object(priv->touchGestureGroup, "end", G_CALLBACK(webkitWebViewBaseZoomEnd), viewWidget, G_CONNECT_SWAPPED);