Fixed with help from Trey:
authorcblu <cblu@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Aug 2004 23:37:23 +0000 (23:37 +0000)
committercblu <cblu@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Aug 2004 23:37:23 +0000 (23:37 +0000)
<rdar://problem/3764856> REGRESSION !25-154): Safari accepts mouse clicks (follows links) when not key

        Reviewed by rjw.

        * WebView.subproj/WebHTMLView.m:
        (-[WebHTMLView _isSelectionEvent:]): brought back from CVS
        (-[WebHTMLView acceptsFirstMouse:]): only call eventMayStartDrag if _isSelectionEvent returns YES since we only want to allow selection dragging on the first mouse down
        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]): ditto

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7344 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/WebView.subproj/WebHTMLView.m

index 7728725b827db4bac37f457af0a5f5f3460c3899..3c837245bddb5cfb4240ea3af2e58eb6066f4437 100644 (file)
@@ -1,3 +1,15 @@
+2004-08-24  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed with help from Trey:
+       <rdar://problem/3764856> REGRESSION !25-154): Safari accepts mouse clicks (follows links) when not key
+
+        Reviewed by rjw.
+
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView _isSelectionEvent:]): brought back from CVS
+        (-[WebHTMLView acceptsFirstMouse:]): only call eventMayStartDrag if _isSelectionEvent returns YES since we only want to allow selection dragging on the first mouse down
+        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]): ditto
+
 2004-08-24  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Hyatt
index ae4336e8ec60269f62610eb19529e7a0203678e2..6da6d65c9037c3fe3c6ede48d267c2dcf6b7e5b6 100644 (file)
@@ -1806,6 +1806,12 @@ static WebHTMLView *lastHitView = nil;
     [[self _pluginController] destroyAllPlugins];
 }
 
+- (BOOL)_isSelectionEvent:(NSEvent *)event
+{
+    NSPoint point = [self convertPoint:[event locationInWindow] fromView:nil];
+    return [[[self elementAtPoint:point] objectForKey:WebElementIsSelectedKey] boolValue];
+}
+
 - (BOOL)acceptsFirstMouse:(NSEvent *)event
 {
     // We hack AK's hitTest method to catch all events at the topmost WebHTMLView.  However, for
@@ -1817,7 +1823,7 @@ static WebHTMLView *lastHitView = nil;
     if ([hitView isKindOfClass:[self class]]) {
         WebHTMLView *hitHTMLView = (WebHTMLView *)hitView;
         [[hitHTMLView _bridge] setActivationEventNumber:[event eventNumber]];
-        return [[hitHTMLView _bridge] eventMayStartDrag:event];
+        return [self _isSelectionEvent:event] ? [[hitHTMLView _bridge] eventMayStartDrag:event] : NO;
     } else {
         return [hitView acceptsFirstMouse:event];
     }
@@ -1833,7 +1839,7 @@ static WebHTMLView *lastHitView = nil;
     
     if ([hitView isKindOfClass:[self class]]) {
         WebHTMLView *hitHTMLView = (WebHTMLView *)hitView;
-        return [[hitHTMLView _bridge] eventMayStartDrag:event];
+        return [self _isSelectionEvent:event] ? [[hitHTMLView _bridge] eventMayStartDrag:event] : NO;
     } else {
         return [hitView shouldDelayWindowOrderingForEvent:event];
     }