Title: [179230] trunk/Source
Revision
179230
Author
[email protected]
Date
2015-01-27 17:06:54 -0800 (Tue, 27 Jan 2015)

Log Message

Immediate action gesture recognizer still doesn't work well with IB
https://bugs.webkit.org/show_bug.cgi?id=140967
-and corresponding-
rdar://problem/19621509

Reviewed by Tim Horton.

We should add (or remove) the gesture recognizer in viewDidMoveToWindow because 
initWithFrame it too early and IB might mess with it.
Source/WebKit/mac:

* WebView/WebImmediateActionController.h:
* WebView/WebImmediateActionController.mm:
(-[WebImmediateActionController immediateActionRecognizer]):
* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView viewDidMoveToWindow]):

Source/WebKit2:

* UIProcess/API/mac/WKView.mm:
(-[WKView viewDidMoveToWindow]):
(-[WKView initWithFrame:processPool:configuration:webView:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/mac/ChangeLog (179229 => 179230)


--- trunk/Source/WebKit/mac/ChangeLog	2015-01-28 00:48:19 UTC (rev 179229)
+++ trunk/Source/WebKit/mac/ChangeLog	2015-01-28 01:06:54 UTC (rev 179230)
@@ -1,3 +1,21 @@
+2015-01-27  Beth Dakin  <[email protected]>
+
+        Immediate action gesture recognizer still doesn't work well with IB
+        https://bugs.webkit.org/show_bug.cgi?id=140967
+        -and corresponding-
+        rdar://problem/19621509
+
+        Reviewed by Tim Horton.
+
+        We should add (or remove) the gesture recognizer in viewDidMoveToWindow because 
+        initWithFrame it too early and IB might mess with it.
+        * WebView/WebImmediateActionController.h:
+        * WebView/WebImmediateActionController.mm:
+        (-[WebImmediateActionController immediateActionRecognizer]):
+        * WebView/WebView.mm:
+        (-[WebView _commonInitializationWithFrameName:groupName:]):
+        (-[WebView viewDidMoveToWindow]):
+
 2015-01-27  Dan Bernstein  <[email protected]>
 
         Fixed building projects that import WebView.h with WK_ENABLE_FORMAL_DELEGATE_PROTOCOLS.

Modified: trunk/Source/WebKit/mac/WebView/WebImmediateActionController.h (179229 => 179230)


--- trunk/Source/WebKit/mac/WebView/WebImmediateActionController.h	2015-01-28 00:48:19 UTC (rev 179229)
+++ trunk/Source/WebKit/mac/WebView/WebImmediateActionController.h	2015-01-28 01:06:54 UTC (rev 179230)
@@ -53,6 +53,8 @@
 - (void)webView:(WebView *)webView willHandleMouseDown:(NSEvent *)event;
 - (void)webView:(WebView *)webView didHandleScrollWheel:(NSEvent *)event;
 
+- (NSImmediateActionGestureRecognizer *)immediateActionRecognizer;
+
 @end
 
 #endif // PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000

Modified: trunk/Source/WebKit/mac/WebView/WebImmediateActionController.mm (179229 => 179230)


--- trunk/Source/WebKit/mac/WebView/WebImmediateActionController.mm	2015-01-28 00:48:19 UTC (rev 179229)
+++ trunk/Source/WebKit/mac/WebView/WebImmediateActionController.mm	2015-01-28 01:06:54 UTC (rev 179230)
@@ -104,6 +104,11 @@
     [self _clearImmediateActionState];
 }
 
+- (NSImmediateActionGestureRecognizer *)immediateActionRecognizer
+{
+    return _immediateActionRecognizer.get();
+}
+
 - (void)_cancelImmediateAction
 {
     // Reset the recognizer by turning it off and on again.

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (179229 => 179230)


--- trunk/Source/WebKit/mac/WebView/WebView.mm	2015-01-28 00:48:19 UTC (rev 179229)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm	2015-01-28 01:06:54 UTC (rev 179230)
@@ -893,7 +893,6 @@
         RetainPtr<NSImmediateActionGestureRecognizer> recognizer = adoptNS([(NSImmediateActionGestureRecognizer *)[gestureClass alloc] initWithTarget:nil action:NULL]);
         _private->immediateActionController = [[WebImmediateActionController alloc] initWithWebView:self recognizer:recognizer.get()];
         [recognizer setDelegate:_private->immediateActionController];
-        [self addGestureRecognizer:recognizer.get()];
     }
 #endif
 
@@ -5294,6 +5293,17 @@
     _private->page->setDeviceScaleFactor([self _deviceScaleFactor]);
 #endif
 
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+    if (_private->immediateActionController) {
+        NSImmediateActionGestureRecognizer *recognizer = [_private->immediateActionController immediateActionRecognizer];
+        if ([self window]) {
+            if (![[self gestureRecognizers] containsObject:recognizer])
+                [self addGestureRecognizer:recognizer];
+        } else
+            [self removeGestureRecognizer:recognizer];
+    }
+#endif
+
     [self _updateActiveState];
     [self _updateVisibilityState];
 }

Modified: trunk/Source/WebKit2/ChangeLog (179229 => 179230)


--- trunk/Source/WebKit2/ChangeLog	2015-01-28 00:48:19 UTC (rev 179229)
+++ trunk/Source/WebKit2/ChangeLog	2015-01-28 01:06:54 UTC (rev 179230)
@@ -1,5 +1,20 @@
 2015-01-27  Beth Dakin  <[email protected]>
 
+        Immediate action gesture recognizer still doesn't work well with IB
+        https://bugs.webkit.org/show_bug.cgi?id=140967
+        -and corresponding-
+        rdar://problem/19621509
+
+        Reviewed by Tim Horton.
+
+        We should add (or remove) the gesture recognizer in viewDidMoveToWindow because 
+        initWithFrame it too early and IB might mess with it.
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView viewDidMoveToWindow]):
+        (-[WKView initWithFrame:processPool:configuration:webView:]):
+
+2015-01-27  Beth Dakin  <[email protected]>
+
         Invoking an immediate action on link often dismisses selection
         https://bugs.webkit.org/show_bug.cgi?id=140911
         -and corresponding-

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


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2015-01-28 00:48:19 UTC (rev 179229)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2015-01-28 01:06:54 UTC (rev 179230)
@@ -2567,6 +2567,11 @@
         }
 
         [self _accessibilityRegisterUIProcessTokens];
+
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+        if (_data->_immediateActionGestureRecognizer && ![[self gestureRecognizers] containsObject:_data->_immediateActionGestureRecognizer.get()] && !_data->_ignoresNonWheelEvents)
+            [self addGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
+#endif
     } else {
         ViewState::Flags viewStateChanges = ViewState::WindowIsActive | ViewState::IsVisible;
         if ([self isDeferringViewInWindowChanges])
@@ -2579,6 +2584,11 @@
         _data->_flagsChangedEventMonitor = nil;
 
         [self _dismissContentRelativeChildWindows];
+
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+        if (_data->_immediateActionGestureRecognizer)
+            [self removeGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
+#endif
     }
 
     _data->_page->setIntrinsicDeviceScaleFactor([self _intrinsicDeviceScaleFactor]);
@@ -3625,7 +3635,6 @@
         _data->_immediateActionGestureRecognizer = adoptNS([(NSImmediateActionGestureRecognizer *)[gestureClass alloc] initWithTarget:nil action:NULL]);
         _data->_immediateActionController = adoptNS([[WKImmediateActionController alloc] initWithPage:*_data->_page view:self recognizer:_data->_immediateActionGestureRecognizer.get()]);
         [_data->_immediateActionGestureRecognizer setDelegate:_data->_immediateActionController.get()];
-        [self addGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
     }
 #endif
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to