Title: [181176] trunk/Source/WebKit2
Revision
181176
Author
bda...@apple.com
Date
2015-03-06 12:13:46 -0800 (Fri, 06 Mar 2015)

Log Message

REGRESSION (r180782): Data Detector popovers are not dismissed on scroll or zoom
https://bugs.webkit.org/show_bug.cgi?id=142371
-and corresponding-
rdar://problem/20059224

Reviewed by Tim Horton.

This patch has the WKImmediateActionController keep track of whether or not it has 
an active immediate action. Then we only call into Lookup and DD if the window is 
key OR if the WKView’s immediateActionController has an active action.
* UIProcess/API/mac/WKView.mm:
(-[WKView _dismissContentRelativeChildWindows]):
* UIProcess/mac/WKImmediateActionController.h:
* UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController initWithPage:view:recognizer:]):
(-[WKImmediateActionController willDestroyView:]):
(-[WKImmediateActionController _clearImmediateActionState]):
(-[WKImmediateActionController hasActiveImmediateAction]):
(-[WKImmediateActionController immediateActionRecognizerWillBeginAnimation:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (181175 => 181176)


--- trunk/Source/WebKit2/ChangeLog	2015-03-06 19:56:17 UTC (rev 181175)
+++ trunk/Source/WebKit2/ChangeLog	2015-03-06 20:13:46 UTC (rev 181176)
@@ -1,3 +1,25 @@
+2015-03-06  Beth Dakin  <bda...@apple.com>
+
+        REGRESSION (r180782): Data Detector popovers are not dismissed on scroll or zoom
+        https://bugs.webkit.org/show_bug.cgi?id=142371
+        -and corresponding-
+        rdar://problem/20059224
+
+        Reviewed by Tim Horton.
+
+        This patch has the WKImmediateActionController keep track of whether or not it has 
+        an active immediate action. Then we only call into Lookup and DD if the window is 
+        key OR if the WKView’s immediateActionController has an active action.
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView _dismissContentRelativeChildWindows]):
+        * UIProcess/mac/WKImmediateActionController.h:
+        * UIProcess/mac/WKImmediateActionController.mm:
+        (-[WKImmediateActionController initWithPage:view:recognizer:]):
+        (-[WKImmediateActionController willDestroyView:]):
+        (-[WKImmediateActionController _clearImmediateActionState]):
+        (-[WKImmediateActionController hasActiveImmediateAction]):
+        (-[WKImmediateActionController immediateActionRecognizerWillBeginAnimation:]):
+
 2015-03-06  Jeremy Jones  <jere...@apple.com>
 
         Scroll to make the video element visible when exiting fullscreen.

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (181175 => 181176)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2015-03-06 19:56:17 UTC (rev 181175)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2015-03-06 20:13:46 UTC (rev 181176)
@@ -4413,7 +4413,11 @@
 - (void)_dismissContentRelativeChildWindows
 {
     // FIXME: We don't know which panel we are dismissing, it may not even be in the current page (see <rdar://problem/13875766>).
-    if ([[self window] isKeyWindow]) {
+    if ([[self window] isKeyWindow]
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+    || [_data->_immediateActionController hasActiveImmediateAction]
+#endif
+    ) {
         if (Class lookupDefinitionModuleClass = getLULookupDefinitionModuleClass())
             [lookupDefinitionModuleClass hideDefinition];
 

Modified: trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.h (181175 => 181176)


--- trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.h	2015-03-06 19:56:17 UTC (rev 181175)
+++ trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.h	2015-03-06 20:13:46 UTC (rev 181176)
@@ -62,6 +62,8 @@
     BOOL _hasActivatedActionContext;
     RetainPtr<DDActionContext> _currentActionContext;
     RetainPtr<QLPreviewMenuItem> _currentQLPreviewMenuItem;
+
+    BOOL _hasActiveImmediateAction;
 }
 
 - (instancetype)initWithPage:(WebKit::WebPageProxy&)page view:(WKView *)wkView recognizer:(NSImmediateActionGestureRecognizer *)immediateActionRecognizer;
@@ -69,6 +71,7 @@
 - (void)didPerformActionMenuHitTest:(const WebKit::ActionMenuHitTestResult&)hitTestResult userData:(API::Object*)userData;
 - (void)wkView:(WKView *)wkView willHandleMouseDown:(NSEvent *)event;
 - (void)dismissContentRelativeChildWindows;
+- (BOOL)hasActiveImmediateAction;
 
 @end
 

Modified: trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm (181175 => 181176)


--- trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm	2015-03-06 19:56:17 UTC (rev 181175)
+++ trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm	2015-03-06 20:13:46 UTC (rev 181176)
@@ -66,6 +66,7 @@
     _wkView = wkView;
     _type = kWKImmediateActionNone;
     _immediateActionRecognizer = immediateActionRecognizer;
+    _hasActiveImmediateAction = NO;
 
     return self;
 }
@@ -84,6 +85,7 @@
 
     _immediateActionRecognizer = nil;
     _currentActionContext = nil;
+    _hasActiveImmediateAction = NO;
 }
 
 - (void)wkView:(WKView *)wkView willHandleMouseDown:(NSEvent *)event
@@ -122,6 +124,7 @@
     _currentActionContext = nil;
     _userData = nil;
     _currentQLPreviewMenuItem = nil;
+    _hasActiveImmediateAction = NO;
 }
 
 - (void)didPerformActionMenuHitTest:(const ActionMenuHitTestResult&)hitTestResult userData:(API::Object*)userData
@@ -146,6 +149,11 @@
     [_currentQLPreviewMenuItem close];
 }
 
+- (BOOL)hasActiveImmediateAction
+{
+    return _hasActiveImmediateAction;
+}
+
 #pragma mark NSImmediateActionGestureRecognizerDelegate
 
 - (void)immediateActionRecognizerWillPrepare:(NSImmediateActionGestureRecognizer *)immediateActionRecognizer
@@ -173,6 +181,8 @@
     if (_state == ImmediateActionState::None)
         return;
 
+    _hasActiveImmediateAction = YES;
+
     // FIXME: We need to be able to cancel this if the gesture recognizer is cancelled.
     // FIXME: Connection can be null if the process is closed; we should clean up better in that case.
     if (_state == ImmediateActionState::Pending) {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to