Title: [278997] trunk/Source/WebKit
- Revision
- 278997
- Author
- timothy_hor...@apple.com
- Date
- 2021-06-17 11:18:44 -0700 (Thu, 17 Jun 2021)
Log Message
Adopt WKHoverGestureRecognizer
https://bugs.webkit.org/show_bug.cgi?id=227116
<rdar://79442027>
Reviewed by Wenson Hsieh.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
(-[WKContentView gestureRecognizer:shouldReceivePress:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView setUpHoverGestureRecognizer]):
(-[WKContentView hoverGestureRecognizerChanged:]):
Plumb mouse events from WKHoverGestureRecognizer to the page.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (278996 => 278997)
--- trunk/Source/WebKit/ChangeLog 2021-06-17 17:23:08 UTC (rev 278996)
+++ trunk/Source/WebKit/ChangeLog 2021-06-17 18:18:44 UTC (rev 278997)
@@ -1,3 +1,24 @@
+2021-06-17 Tim Horton <timothy_hor...@apple.com>
+
+ Adopt WKHoverGestureRecognizer
+ https://bugs.webkit.org/show_bug.cgi?id=227116
+ <rdar://79442027>
+
+ Reviewed by Wenson Hsieh.
+
+ * UIProcess/ios/WKContentViewInteraction.h:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView setUpInteraction]):
+ (-[WKContentView cleanUpInteraction]):
+ (-[WKContentView _removeDefaultGestureRecognizers]):
+ (-[WKContentView _addDefaultGestureRecognizers]):
+ (-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
+ (-[WKContentView gestureRecognizer:shouldReceivePress:]):
+ (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
+ (-[WKContentView setUpHoverGestureRecognizer]):
+ (-[WKContentView hoverGestureRecognizerChanged:]):
+ Plumb mouse events from WKHoverGestureRecognizer to the page.
+
2021-06-17 Alex Christensen <achristen...@webkit.org>
Fix crashes in ContentRuleListStore::lookupContentRuleList
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (278996 => 278997)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2021-06-17 17:23:08 UTC (rev 278996)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2021-06-17 18:18:44 UTC (rev 278997)
@@ -117,6 +117,7 @@
@class WKFormInputSession;
@class WKFormSelectControl;
@class WKHighlightLongPressGestureRecognizer;
+@class WKHoverGestureRecognizer;
@class WKImageAnalysisGestureRecognizer;
@class WKMouseGestureRecognizer;
@class WKInspectorNodeSearchGestureRecognizer;
@@ -291,6 +292,10 @@
WebCore::MouseEventPolicy _mouseEventPolicy;
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ RetainPtr<WKHoverGestureRecognizer> _hoverGestureRecognizer;
+#endif
+
#if HAVE(PENCILKIT_TEXT_INPUT)
RetainPtr<UIIndirectScribbleInteraction> _scribbleInteraction;
#endif
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (278996 => 278997)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-06-17 17:23:08 UTC (rev 278996)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2021-06-17 18:18:44 UTC (rev 278997)
@@ -174,6 +174,10 @@
#import "PepperUICoreSPI.h"
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+#import <WebKitAdditions/WKHoverGestureRecognizer.h>
+#endif
+
#import <pal/cocoa/VisionKitCoreSoftLink.h>
#import <pal/ios/ManagedConfigurationSoftLink.h>
#import <pal/ios/QuickLookSoftLink.h>
@@ -884,6 +888,10 @@
[self setUpMouseGestureRecognizer];
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ [self setUpHoverGestureRecognizer];
+#endif
+
#if HAVE(LOOKUP_GESTURE_RECOGNIZER)
_lookupGestureRecognizer = adoptNS([[_UILookupGestureRecognizer alloc] initWithTarget:self action:@selector(_lookupGestureRecognized:)]);
[_lookupGestureRecognizer setDelegate:self];
@@ -1066,6 +1074,11 @@
[self removeGestureRecognizer:_mouseGestureRecognizer.get()];
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ [_hoverGestureRecognizer setDelegate:nil];
+ [self removeGestureRecognizer:_hoverGestureRecognizer.get()];
+#endif
+
#if HAVE(LOOKUP_GESTURE_RECOGNIZER)
[_lookupGestureRecognizer setDelegate:nil];
[self removeGestureRecognizer:_lookupGestureRecognizer.get()];
@@ -1211,6 +1224,9 @@
#if HAVE(UIKIT_WITH_MOUSE_SUPPORT)
[self removeGestureRecognizer:_mouseGestureRecognizer.get()];
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ [self removeGestureRecognizer:_hoverGestureRecognizer.get()];
+#endif
#if HAVE(LOOKUP_GESTURE_RECOGNIZER)
[self removeGestureRecognizer:_lookupGestureRecognizer.get()];
#endif
@@ -1236,6 +1252,9 @@
#if HAVE(UIKIT_WITH_MOUSE_SUPPORT)
[self addGestureRecognizer:_mouseGestureRecognizer.get()];
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ [self addGestureRecognizer:_hoverGestureRecognizer.get()];
+#endif
#if HAVE(LOOKUP_GESTURE_RECOGNIZER)
[self addGestureRecognizer:_lookupGestureRecognizer.get()];
#endif
@@ -1703,6 +1722,11 @@
return YES;
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ if (gestureRecognizer == _hoverGestureRecognizer)
+ return NO;
+#endif
+
#if HAVE(UIKIT_WITH_MOUSE_SUPPORT)
if (gestureRecognizer != _mouseGestureRecognizer && [_mouseGestureRecognizer mouseTouch] == touch)
return NO;
@@ -1736,6 +1760,10 @@
if (gestureRecognizer == _mouseGestureRecognizer)
return NO;
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ if (gestureRecognizer == _hoverGestureRecognizer)
+ return NO;
+#endif
return YES;
}
@@ -2354,6 +2382,11 @@
return YES;
#endif
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+ if ([gestureRecognizer isKindOfClass:[WKHoverGestureRecognizer class]] || [otherGestureRecognizer isKindOfClass:[WKHoverGestureRecognizer class]])
+ return YES;
+#endif
+
#if PLATFORM(MACCATALYST)
if (isSamePair(gestureRecognizer, otherGestureRecognizer, [_textInteractionAssistant loupeGesture], [_textInteractionAssistant forcePressGesture]))
return YES;
@@ -9420,6 +9453,29 @@
#endif // HAVE(UIKIT_WITH_MOUSE_SUPPORT)
+#if ENABLE(HOVER_GESTURE_RECOGNIZER)
+
+- (void)setUpHoverGestureRecognizer
+{
+ _hoverGestureRecognizer = adoptNS([[WKHoverGestureRecognizer alloc] initWithTarget:self action:@selector(hoverGestureRecognizerChanged:)]);
+ [_hoverGestureRecognizer setDelegate:self];
+ [self addGestureRecognizer:_hoverGestureRecognizer.get()];
+}
+
+- (void)hoverGestureRecognizerChanged:(WKHoverGestureRecognizer *)gestureRecognizer
+{
+ if (!_page->hasRunningProcess())
+ return;
+
+ auto event = gestureRecognizer.lastMouseEvent;
+ if (!event)
+ return;
+
+ _page->handleMouseEvent(*event);
+}
+
+#endif // ENABLE(HOVER_GESTURE_RECOGNIZER)
+
#if ENABLE(MEDIA_CONTROLS_CONTEXT_MENUS) && USE(UICONTEXTMENU)
- (void)_showMediaControlsContextMenu:(WebCore::FloatRect&&)targetFrame items:(Vector<WebCore::MediaControlsContextMenuItem>&&)items completionHandler:(CompletionHandler<void(WebCore::MediaControlsContextMenuItem::ID)>&&)completionHandler
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes