Fixed: <rdar://problem/3814810> REGRESSION (125-164): Exception adding nil to dictio...
authorcblu <cblu@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Sep 2004 16:36:01 +0000 (16:36 +0000)
committercblu <cblu@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Sep 2004 16:36:01 +0000 (16:36 +0000)
        Reviewed by john.

        * WebView.subproj/WebHTMLView.m:
        (-[WebHTMLView _setMouseDownEvent:]): new
        (-[WebHTMLView acceptsFirstMouse:]): call _setMouseDownEvent
        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]): ditto
        (-[WebHTMLView mouseDown:]): ditto
        (-[WebHTMLView _delegateDragSourceActionMask]): removed temp fix, assert that the mouse event is not nil

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

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

index 6a96a74569129bd7c9151b3de94788f59099ece9..790739e7ab9b20687202cbee1a09789f18ebb00a 100644 (file)
@@ -1,3 +1,16 @@
+2004-09-27  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3814810> REGRESSION (125-164): Exception adding nil to dictionary in dragging code
+
+        Reviewed by john.
+
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView _setMouseDownEvent:]): new
+        (-[WebHTMLView acceptsFirstMouse:]): call _setMouseDownEvent
+        (-[WebHTMLView shouldDelayWindowOrderingForEvent:]): ditto
+        (-[WebHTMLView mouseDown:]): ditto
+        (-[WebHTMLView _delegateDragSourceActionMask]): removed temp fix, assert that the mouse event is not nil
+
 2004-09-27  Darin Adler  <darin@apple.com>
 
         * WebKit.pbproj/project.pbxproj: Added WebDashboardRegion.h as a private header.
index 3216ee876118c0b291682daa71b0998f4aebf333..9d87361720ecf5b354cf8ba4fc0ad3d14e59c2d4 100644 (file)
@@ -2073,8 +2073,18 @@ static WebHTMLView *lastHitView = nil;
     return [[[self elementAtPoint:point] objectForKey:WebElementIsSelectedKey] boolValue];
 }
 
+- (void)_setMouseDownEvent:(NSEvent *)event
+{
+    ASSERT([event type] == NSLeftMouseDown || [event type] == NSRightMouseDown || [event type] == NSOtherMouseDown);
+    [event retain];
+    [_private->mouseDownEvent release];
+    _private->mouseDownEvent = event;
+}
+
 - (BOOL)acceptsFirstMouse:(NSEvent *)event
 {
+    [self _setMouseDownEvent:event];
+    
     // We hack AK's hitTest method to catch all events at the topmost WebHTMLView.  However, for
     // the purposes of this method we want to really query the deepest view, so we forward to it.
     forceRealHitTest = YES;
@@ -2092,6 +2102,8 @@ static WebHTMLView *lastHitView = nil;
 
 - (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent *)event
 {
+    [self _setMouseDownEvent:event];
+
     // We hack AK's hitTest method to catch all events at the topmost WebHTMLView.  However, for
     // the purposes of this method we want to really query the deepest view, so we forward to it.
     forceRealHitTest = YES;
@@ -2107,7 +2119,10 @@ static WebHTMLView *lastHitView = nil;
 }
 
 - (void)mouseDown:(NSEvent *)event
-{    
+{   
+    // Record the mouse down position so we can determine drag hysteresis.
+    [self _setMouseDownEvent:event];
+
     // TEXTINPUT: if there is marked text and the current input
     // manager wants to handle mouse events, we need to make sure to
     // pass it to them. If not, then we need to notify the input
@@ -2124,10 +2139,6 @@ static WebHTMLView *lastHitView = nil;
     
     _private->ignoringMouseDraggedEvents = NO;
     
-    // Record the mouse down position so we can determine drag hysteresis.
-    [_private->mouseDownEvent release];
-    _private->mouseDownEvent = [event retain];
-
     // Don't do any mouseover while the mouse is down.
     [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(_updateMouseoverWithFakeEvent) object:nil];
 
@@ -3986,10 +3997,7 @@ static DOMRange *unionDOMRanges(DOMRange *a, DOMRange *b)
 
 - (unsigned int)_delegateDragSourceActionMask
 {
-    // Quick fix for <rdar://problem/3814810> REGRESSION (125-164): Exception adding nil to dictionary in dragging code:
-    if (_private->mouseDownEvent == nil) {
-        return WebDragSourceActionNone;
-    }
+    ASSERT(_private->mouseDownEvent != nil);
     WebView *webView = [self _webView];
     NSPoint point = [webView convertPoint:[_private->mouseDownEvent locationInWindow] fromView:nil];
     _private->dragSourceActionMask = [[webView _UIDelegateForwarder] webView:webView dragSourceActionMaskForPoint:point];