Title: [289174] releases/WebKitGTK/webkit-2.34
Revision
289174
Author
[email protected]
Date
2022-02-06 11:32:22 -0800 (Sun, 06 Feb 2022)

Log Message

Merge r289129 - [GTK] Crash when starting DND on touchscreen
https://bugs.webkit.org/show_bug.cgi?id=235694

Reviewed by Adrian Perez de Castro.

Source/WebCore:

* page/DragController.cpp:
(WebCore::DragController::startDrag):
Skip drags for touch events on GTK.
* platform/PlatformMouseEvent.h:
(WebCore::PlatformMouseEvent::isTouchEvent const):

Source/WebKit:

Drag-n-drop on touch has never worked correctly in GTK, and is usually
just disabled. Do the same thing and ignore it for synthesized mouse
events.

* Shared/NativeWebMouseEvent.h:
* Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
* Shared/WebMouseEvent.cpp:
(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode const):
(WebKit::WebMouseEvent::decode):
* Shared/WebMouseEvent.h:
(WebKit::WebMouseEvent::isTouchEvent const):
* Shared/gtk/NativeWebMouseEventGtk.cpp:
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseTouchRelease):
(webkitWebViewBaseTouchDragUpdate):
(webkitWebViewBaseTouchDragEnd):
(webkitWebViewBaseSynthesizeMouseEvent):
* UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
* UIProcess/gtk/PointerLockManager.cpp:
(WebKit::PointerLockManager::handleMotion):

Tools:

* TestWebKitAPI/glib/CMakeLists.txt: Define BUILDING_TestWebKit

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.34/Source/WebCore/ChangeLog (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebCore/ChangeLog	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebCore/ChangeLog	2022-02-06 19:32:22 UTC (rev 289174)
@@ -1,3 +1,16 @@
+2022-02-04  Alexander Mikhaylenko  <[email protected]>
+
+        [GTK] Crash when starting DND on touchscreen
+        https://bugs.webkit.org/show_bug.cgi?id=235694
+
+        Reviewed by Adrian Perez de Castro.
+
+        * page/DragController.cpp:
+        (WebCore::DragController::startDrag):
+        Skip drags for touch events on GTK.
+        * platform/PlatformMouseEvent.h:
+        (WebCore::PlatformMouseEvent::isTouchEvent const):
+
 2021-11-20  Carlos Garcia Campos  <[email protected]>
 
         Report the initiating url instead of the redirected one

Modified: releases/WebKitGTK/webkit-2.34/Source/WebCore/page/DragController.cpp (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebCore/page/DragController.cpp	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebCore/page/DragController.cpp	2022-02-06 19:32:22 UTC (rev 289174)
@@ -961,6 +961,11 @@
     if (!state.source)
         return false;
 
+#if PLATFORM(GTK)
+    if (dragEvent.isTouchEvent())
+        return false;
+#endif
+
     Ref<Frame> protector(src);
     auto hitTestResult = hitTestResultForDragStart(src, *state.source, dragOrigin);
     if (!hitTestResult)

Modified: releases/WebKitGTK/webkit-2.34/Source/WebCore/platform/PlatformMouseEvent.h (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebCore/platform/PlatformMouseEvent.h	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebCore/platform/PlatformMouseEvent.h	2022-02-06 19:32:22 UTC (rev 289174)
@@ -87,6 +87,12 @@
         bool didActivateWebView() const { return m_didActivateWebView; }
 #endif
 
+#if PLATFORM(GTK)
+        enum class IsTouch : bool { No, Yes };
+
+        bool isTouchEvent() const { return m_isTouchEvent == IsTouch::Yes; }
+#endif
+
     protected:
         MouseButton m_button { NoButton };
         SyntheticClickType m_syntheticClickType { NoTap };
@@ -105,6 +111,8 @@
         int m_menuTypeForEvent { 0 };
 #elif PLATFORM(WIN)
         bool m_didActivateWebView { false };
+#elif PLATFORM(GTK)
+        IsTouch m_isTouchEvent { IsTouch::No };
 #endif
     };
 

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/ChangeLog (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/ChangeLog	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/ChangeLog	2022-02-06 19:32:22 UTC (rev 289174)
@@ -1,3 +1,34 @@
+2022-02-04  Alexander Mikhaylenko  <[email protected]>
+
+        [GTK] Crash when starting DND on touchscreen
+        https://bugs.webkit.org/show_bug.cgi?id=235694
+
+        Reviewed by Adrian Perez de Castro.
+
+        Drag-n-drop on touch has never worked correctly in GTK, and is usually
+        just disabled. Do the same thing and ignore it for synthesized mouse
+        events.
+
+        * Shared/NativeWebMouseEvent.h:
+        * Shared/WebEventConversion.cpp:
+        (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
+        * Shared/WebMouseEvent.cpp:
+        (WebKit::WebMouseEvent::WebMouseEvent):
+        (WebKit::WebMouseEvent::encode const):
+        (WebKit::WebMouseEvent::decode):
+        * Shared/WebMouseEvent.h:
+        (WebKit::WebMouseEvent::isTouchEvent const):
+        * Shared/gtk/NativeWebMouseEventGtk.cpp:
+        (WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (webkitWebViewBaseTouchRelease):
+        (webkitWebViewBaseTouchDragUpdate):
+        (webkitWebViewBaseTouchDragEnd):
+        (webkitWebViewBaseSynthesizeMouseEvent):
+        * UIProcess/API/gtk/WebKitWebViewBaseInternal.h:
+        * UIProcess/gtk/PointerLockManager.cpp:
+        (WebKit::PointerLockManager::handleMotion):
+
 2021-11-20  Carlos Garcia Campos  <[email protected]>
 
         Report the initiating url instead of the redirected one

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/NativeWebMouseEvent.h (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/NativeWebMouseEvent.h	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/NativeWebMouseEvent.h	2022-02-06 19:32:22 UTC (rev 289174)
@@ -66,7 +66,7 @@
     NativeWebMouseEvent(const NativeWebMouseEvent&);
     NativeWebMouseEvent(GdkEvent*, int, std::optional<WebCore::FloatSize>);
     NativeWebMouseEvent(GdkEvent*, const WebCore::IntPoint&, int, std::optional<WebCore::FloatSize>);
-    NativeWebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize>, WebCore::PointerID, const String& pointerType);
+    NativeWebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize>, WebCore::PointerID, const String& pointerType, WebCore::PlatformMouseEvent::IsTouch isTouchEvent);
     explicit NativeWebMouseEvent(const WebCore::IntPoint&);
 #elif PLATFORM(IOS_FAMILY)
     NativeWebMouseEvent(::WebEvent *);

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebEventConversion.cpp (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebEventConversion.cpp	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebEventConversion.cpp	2022-02-06 19:32:22 UTC (rev 289174)
@@ -111,6 +111,8 @@
 #if PLATFORM(MAC)
         m_eventNumber = webEvent.eventNumber();
         m_menuTypeForEvent = webEvent.menuTypeForEvent();
+#elif PLATFORM(GTK)
+        m_isTouchEvent = webEvent.isTouchEvent();
 #endif
         m_modifierFlags = 0;
         if (webEvent.shiftKey())

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebMouseEvent.cpp (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebMouseEvent.cpp	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebMouseEvent.cpp	2022-02-06 19:32:22 UTC (rev 289174)
@@ -35,6 +35,8 @@
 
 #if PLATFORM(MAC)
 WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& positionInView, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, int eventNumber, int menuType, GestureWasCancelled gestureWasCancelled)
+#elif PLATFORM(GTK)
+WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& positionInView, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, PlatformMouseEvent::IsTouch isTouchEvent, WebCore::PointerID pointerId, const String& pointerType, GestureWasCancelled gestureWasCancelled)
 #else
 WebMouseEvent::WebMouseEvent(Type type, Button button, unsigned short buttons, const IntPoint& positionInView, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier> modifiers, WallTime timestamp, double force, SyntheticClickType syntheticClickType, WebCore::PointerID pointerId, const String& pointerType, GestureWasCancelled gestureWasCancelled)
 #endif
@@ -50,6 +52,8 @@
 #if PLATFORM(MAC)
     , m_eventNumber(eventNumber)
     , m_menuTypeForEvent(menuType)
+#elif PLATFORM(GTK)
+    , m_isTouchEvent(isTouchEvent)
 #endif
     , m_force(force)
     , m_syntheticClickType(syntheticClickType)
@@ -77,6 +81,8 @@
 #if PLATFORM(MAC)
     encoder << m_eventNumber;
     encoder << m_menuTypeForEvent;
+#elif PLATFORM(GTK)
+    encoder << m_isTouchEvent;
 #endif
     encoder << m_force;
     encoder << m_syntheticClickType;
@@ -111,6 +117,9 @@
         return false;
     if (!decoder.decode(result.m_menuTypeForEvent))
         return false;
+#elif PLATFORM(GTK)
+    if (!decoder.decode(result.m_isTouchEvent))
+        return false;
 #endif
     if (!decoder.decode(result.m_force))
         return false;

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebMouseEvent.h (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebMouseEvent.h	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/WebMouseEvent.h	2022-02-06 19:32:22 UTC (rev 289174)
@@ -31,6 +31,7 @@
 
 #include "WebEvent.h"
 #include <WebCore/IntPoint.h>
+#include <WebCore/PlatformMouseEvent.h>
 #include <WebCore/PointerEventTypeNames.h>
 #include <WebCore/PointerID.h>
 
@@ -53,6 +54,8 @@
 
 #if PLATFORM(MAC)
     WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& positionInView, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force, SyntheticClickType = NoTap, int eventNumber = -1, int menuType = 0, GestureWasCancelled = GestureWasCancelled::No);
+#elif PLATFORM(GTK)
+    WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& positionInView, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force = 0, SyntheticClickType = NoTap, WebCore::PlatformMouseEvent::IsTouch m_isTouchEvent = WebCore::PlatformMouseEvent::IsTouch::No, WebCore::PointerID = WebCore::mousePointerID, const String& pointerType = WebCore::mousePointerEventType(), GestureWasCancelled = GestureWasCancelled::No);
 #else
     WebMouseEvent(Type, Button, unsigned short buttons, const WebCore::IntPoint& positionInView, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, OptionSet<Modifier>, WallTime timestamp, double force = 0, SyntheticClickType = NoTap, WebCore::PointerID = WebCore::mousePointerID, const String& pointerType = WebCore::mousePointerEventType(), GestureWasCancelled = GestureWasCancelled::No);
 #endif
@@ -68,6 +71,8 @@
 #if PLATFORM(MAC)
     int32_t eventNumber() const { return m_eventNumber; }
     int32_t menuTypeForEvent() const { return m_menuTypeForEvent; }
+#elif PLATFORM(GTK)
+    WebCore::PlatformMouseEvent::IsTouch isTouchEvent() const { return m_isTouchEvent; }
 #endif
     double force() const { return m_force; }
     SyntheticClickType syntheticClickType() const { return static_cast<SyntheticClickType>(m_syntheticClickType); }
@@ -92,6 +97,8 @@
 #if PLATFORM(MAC)
     int32_t m_eventNumber { -1 };
     int32_t m_menuTypeForEvent { 0 };
+#elif PLATFORM(GTK)
+    WebCore::PlatformMouseEvent::IsTouch m_isTouchEvent { WebCore::PlatformMouseEvent::IsTouch::No };
 #endif
     double m_force { 0 };
     uint32_t m_syntheticClickType { NoTap };

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/gtk/NativeWebMouseEventGtk.cpp (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/gtk/NativeWebMouseEventGtk.cpp	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/Shared/gtk/NativeWebMouseEventGtk.cpp	2022-02-06 19:32:22 UTC (rev 289174)
@@ -48,13 +48,13 @@
 {
 }
 
-NativeWebMouseEvent::NativeWebMouseEvent(Type type, Button button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize> delta, WebCore::PointerID pointerId, const String& pointerType)
-    : WebMouseEvent(type, button, buttons, position, globalPosition, delta.value_or(WebCore::FloatSize()).width(), delta.value_or(WebCore::FloatSize()).height(), 0, clickCount, modifiers, WallTime::now(), 0, NoTap, pointerId, pointerType)
+NativeWebMouseEvent::NativeWebMouseEvent(Type type, Button button, unsigned short buttons, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, int clickCount, OptionSet<Modifier> modifiers, std::optional<WebCore::FloatSize> delta, WebCore::PointerID pointerId, const String& pointerType, WebCore::PlatformMouseEvent::IsTouch isTouchEvent)
+    : WebMouseEvent(type, button, buttons, position, globalPosition, delta.value_or(WebCore::FloatSize()).width(), delta.value_or(WebCore::FloatSize()).height(), 0, clickCount, modifiers, WallTime::now(), 0, NoTap, isTouchEvent, pointerId, pointerType)
 {
 }
 
 NativeWebMouseEvent::NativeWebMouseEvent(const NativeWebMouseEvent& event)
-    : WebMouseEvent(event.type(), event.button(), event.buttons(), event.position(), event.globalPosition(), event.deltaX(), event.deltaY(), event.deltaZ(), event.clickCount(), event.modifiers(), event.timestamp(), 0, NoTap, event.pointerId(), event.pointerType())
+    : WebMouseEvent(event.type(), event.button(), event.buttons(), event.position(), event.globalPosition(), event.deltaX(), event.deltaY(), event.deltaZ(), event.clickCount(), event.modifiers(), event.timestamp(), 0, NoTap, event.isTouchEvent(), event.pointerId(), event.pointerType())
     , m_nativeEvent(event.nativeEvent() ? gdk_event_copy(const_cast<GdkEvent*>(event.nativeEvent())) : nullptr)
 {
 }

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2022-02-06 19:32:22 UTC (rev 289174)
@@ -65,6 +65,7 @@
 #include <WebCore/NotImplemented.h>
 #include <WebCore/PlatformDisplay.h>
 #include <WebCore/PlatformKeyboardEvent.h>
+#include <WebCore/PlatformMouseEvent.h>
 #include <WebCore/PointerEvent.h>
 #include <WebCore/RefPtrCairo.h>
 #include <WebCore/Region.h>
@@ -1902,9 +1903,9 @@
     }
 
     unsigned modifiers = gtk_event_controller_get_current_event_state(GTK_EVENT_CONTROLLER(gesture));
-    webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, nPress, mousePointerEventType());
-    webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, button, 0, x, y, modifiers, nPress, mousePointerEventType());
-    webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, button, buttons, x, y, modifiers, nPress, mousePointerEventType());
+    webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, nPress, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
+    webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, button, 0, x, y, modifiers, nPress, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
+    webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, button, buttons, x, y, modifiers, nPress, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
 }
 
 static void webkitWebViewBaseTouchDragBegin(WebKitWebViewBase* webViewBase, gdouble startX, gdouble startY, GtkGesture* gesture)
@@ -1940,14 +1941,14 @@
 
         if (priv->isLongPressed) {
             // Drag after long press forwards emulated mouse events (for e.g. text selection)
-            webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, 1, mousePointerEventType());
-            webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, GDK_BUTTON_PRIMARY, 0, x, y, modifiers, 0, mousePointerEventType());
+            webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, 0, 0, x, y, modifiers, 1, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
+            webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Press, GDK_BUTTON_PRIMARY, 0, x, y, modifiers, 0, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
         } else
             webkitWebViewBaseSynthesizeWheelEvent(webViewBase, event, 0, 0, x, y, WheelEventPhase::Began, WheelEventPhase::NoPhase, true);
     }
 
     if (priv->isLongPressed)
-        webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType());
+        webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Motion, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
     else {
         double deltaX = priv->dragOffset.x() - offsetX;
         double deltaY = priv->dragOffset.y() - offsetY;
@@ -1976,7 +1977,7 @@
         double x, y;
         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, mousePointerEventType());
+        webkitWebViewBaseSynthesizeMouseEvent(webViewBase, MouseEventType::Release, GDK_BUTTON_PRIMARY, GDK_BUTTON1_MASK, x + offsetX, y + offsetY, modifiers, 0, mousePointerEventType(), PlatformMouseEvent::IsTouch::Yes);
     }
 }
 
@@ -2755,7 +2756,7 @@
     return mousePointerID;
 }
 
-void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase* webViewBase, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType)
+void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase* webViewBase, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType, PlatformMouseEvent::IsTouch isTouchEvent)
 {
     WebKitWebViewBasePrivate* priv = webViewBase->priv;
     if (priv->dialog)
@@ -2840,7 +2841,7 @@
 
     priv->pageProxy->handleMouseEvent(NativeWebMouseEvent(webEventType, webEventButton, webEventButtons, { x, y },
         widgetRootCoords(GTK_WIDGET(webViewBase), x, y), clickCount, toWebKitModifiers(modifiers), movementDelta,
-        primaryPointerForType(pointerType), pointerType.isNull() ? mousePointerEventType() : pointerType));
+        primaryPointerForType(pointerType), pointerType.isNull() ? mousePointerEventType() : pointerType, isTouchEvent));
 }
 
 void webkitWebViewBaseSynthesizeKeyEvent(WebKitWebViewBase* webViewBase, KeyEventType type, unsigned keyval, unsigned modifiers, ShouldTranslateKeyboardState shouldTranslate)

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBaseInternal.h	2022-02-06 19:32:22 UTC (rev 289174)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include <WebKit/WKBase.h>
+#include <WebCore/PlatformMouseEvent.h>
 #include <wtf/text/WTFString.h>
 
 typedef struct _WebKitWebViewBase WebKitWebViewBase;
@@ -37,7 +38,7 @@
 };
 
 enum class MouseEventType { Press, Release, Motion };
-WK_EXPORT void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase*, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType = "mouse"_s);
+WK_EXPORT void webkitWebViewBaseSynthesizeMouseEvent(WebKitWebViewBase*, MouseEventType type, unsigned button, unsigned short buttons, int x, int y, unsigned modifiers, int clickCount, const String& pointerType = "mouse"_s, WebCore::PlatformMouseEvent::IsTouch isTouchEvent = WebCore::PlatformMouseEvent::IsTouch::No);
 
 enum class KeyEventType { Press, Release, Insert };
 enum class ShouldTranslateKeyboardState { No, Yes };

Modified: releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/gtk/PointerLockManager.cpp (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/gtk/PointerLockManager.cpp	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Source/WebKit/UIProcess/gtk/PointerLockManager.cpp	2022-02-06 19:32:22 UTC (rev 289174)
@@ -29,6 +29,7 @@
 #include "NativeWebMouseEvent.h"
 #include "WebPageProxy.h"
 #include <WebCore/PlatformDisplay.h>
+#include <WebCore/PlatformMouseEvent.h>
 #include <WebCore/PointerEvent.h>
 #include <WebCore/PointerID.h>
 #include <gtk/gtk.h>
@@ -93,7 +94,7 @@
 
 void PointerLockManager::handleMotion(FloatSize&& delta)
 {
-    m_webPage.handleMouseEvent(NativeWebMouseEvent(WebEvent::MouseMove, m_button, m_buttons, IntPoint(m_position), IntPoint(m_initialPoint), 0, m_modifiers, delta, mousePointerID, mousePointerEventType()));
+    m_webPage.handleMouseEvent(NativeWebMouseEvent(WebEvent::MouseMove, m_button, m_buttons, IntPoint(m_position), IntPoint(m_initialPoint), 0, m_modifiers, delta, mousePointerID, mousePointerEventType(), PlatformMouseEvent::IsTouch::No));
 }
 
 } // namespace WebKit

Modified: releases/WebKitGTK/webkit-2.34/Tools/ChangeLog (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Tools/ChangeLog	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Tools/ChangeLog	2022-02-06 19:32:22 UTC (rev 289174)
@@ -1,3 +1,12 @@
+2022-02-04  Alexander Mikhaylenko  <[email protected]>
+
+        [GTK] Crash when starting DND on touchscreen
+        https://bugs.webkit.org/show_bug.cgi?id=235694
+
+        Reviewed by Adrian Perez de Castro.
+
+        * TestWebKitAPI/glib/CMakeLists.txt: Define BUILDING_TestWebKit
+
 2022-01-26  Alexander Mikhaylenko  <[email protected]>
 
         [GTK] REGRESSION: Touch scrolling is broken

Modified: releases/WebKitGTK/webkit-2.34/Tools/TestWebKitAPI/glib/CMakeLists.txt (289173 => 289174)


--- releases/WebKitGTK/webkit-2.34/Tools/TestWebKitAPI/glib/CMakeLists.txt	2022-02-06 19:25:32 UTC (rev 289173)
+++ releases/WebKitGTK/webkit-2.34/Tools/TestWebKitAPI/glib/CMakeLists.txt	2022-02-06 19:32:22 UTC (rev 289174)
@@ -112,6 +112,7 @@
 add_library(WebKitGLibAPITestsCore STATIC ${WebKitGLibAPITests_SOURCES})
 target_include_directories(WebKitGLibAPITestsCore PUBLIC ${WebKitGLibAPITests_INCLUDE_DIRECTORIES})
 target_include_directories(WebKitGLibAPITestsCore SYSTEM PUBLIC ${WebKitGLibAPITests_SYSTEM_INCLUDE_DIRECTORIES})
+target_compile_definitions(WebKitGLibAPITestsCore PRIVATE BUILDING_TestWebKit)
 target_compile_definitions(WebKitGLibAPITestsCore PUBLIC ${WebKitGLibAPITests_DEFINITIONS})
 target_link_libraries(WebKitGLibAPITestsCore ${WebKitGLibAPITestsCore_LIBRARIES})
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to