Reviewed by Maciej Stachowiak.
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Nov 2007 09:04:15 +0000 (09:04 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Nov 2007 09:04:15 +0000 (09:04 +0000)
        - fix <rdar://problem/5596160> fast/events/objc-event-api.html fails when run alone (or first)

        * WebView/WebHTMLView.mm:
        (-[WebHTMLView setDataSource:]): This method calls addMouseMovedObserver
        because addMouseMovedObserver returns early if the dataSource
        is not nil. But if the dataSource is already set (which happens when
        a WebHTMLView is being reused) then addMouseMovedObserver must not
        be called again.

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

WebKit/mac/ChangeLog
WebKit/mac/WebView/WebHTMLView.mm

index f7fea8387002864e18bbebeb0b3264023b3a47bc..b546a4939fe1348d88521fe915be74543df57565 100644 (file)
@@ -1,3 +1,16 @@
+2007-11-28  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        - fix <rdar://problem/5596160> fast/events/objc-event-api.html fails when run alone (or first)
+
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView setDataSource:]): This method calls addMouseMovedObserver
+        because addMouseMovedObserver returns early if the dataSource
+        is not nil. But if the dataSource is already set (which happens when
+        a WebHTMLView is being reused) then addMouseMovedObserver must not
+        be called again.
+
 2007-11-27  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Brady.
index 44cddc9a4a6708471dccc498045ec26669e3dc16..398dd437236366cd4c448db13fa4f6db216a4a70 100644 (file)
@@ -3285,11 +3285,15 @@ noPromisedData:
     ASSERT(dataSource);
     if (_private->dataSource != dataSource) {
         ASSERT(!_private->closed);
+        BOOL hadDataSource = _private->dataSource != nil;
+
         [dataSource retain];
         [_private->dataSource release];
         _private->dataSource = dataSource;
         [_private->pluginController setDataSource:dataSource];
-        [self addMouseMovedObserver];
+
+        if (!hadDataSource)
+            [self addMouseMovedObserver];
     }
 }