Reviewed by Oliver.
authorthatcher <thatcher@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Jul 2007 23:17:40 +0000 (23:17 +0000)
committerthatcher <thatcher@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 11 Jul 2007 23:17:40 +0000 (23:17 +0000)
        <rdar://problem/5108789> WEBVIEW: Drawing artifacts when dragging in IB

        Interface Builder 3 is relying on KVO notifications for frameOrigin and frameSize,
        among other standard NSView keys. Change automaticallyNotifiesObserversForKey to
        return NO only for keys WebView manually fires notifications for.

        * WebView/WebView.mm:
        (+[WebView automaticallyNotifiesObserversForKey:]): Selectivly return NO for keys we manually fire.
        (-[WebView _declaredKeys]): Code clean up.

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

WebKit/ChangeLog
WebKit/WebView/WebView.mm

index 893efbd7f4d4b043f485953080fa23310b507eee..60f5a928b957863c42a2c19874b98093d306810a 100644 (file)
@@ -1,3 +1,17 @@
+2007-07-11  Timothy Hatcher  <timothy@apple.com>
+
+        Reviewed by Oliver.
+
+        <rdar://problem/5108789> WEBVIEW: Drawing artifacts when dragging in IB
+
+        Interface Builder 3 is relying on KVO notifications for frameOrigin and frameSize,
+        among other standard NSView keys. Change automaticallyNotifiesObserversForKey to 
+        return NO only for keys WebView manually fires notifications for.
+
+        * WebView/WebView.mm:
+        (+[WebView automaticallyNotifiesObserversForKey:]): Selectivly return NO for keys we manually fire.
+        (-[WebView _declaredKeys]): Code clean up.
+
 2007-07-10  Antti Koivisto  <antti@apple.com>
 
         Reviewed by John.
index 081399c8a063f0e5c5335f00af037194344aa13c..cfcc5af3cb87038a22c8ee63ea78f7eec68f099d 100644 (file)
@@ -1154,18 +1154,21 @@ WebFrameLoadDelegateImplementationCache WebViewGetFrameLoadDelegateImplementatio
     [self willChangeValueForKey: key];
 }
 
-// Required to prevent automatic observer notifications.
 + (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key {
-    return NO;
+    static NSSet *manualNotifyKeys = nil;
+    if (!manualNotifyKeys)
+        manualNotifyKeys = [[NSSet alloc] initWithObjects:_WebMainFrameURLKey, _WebIsLoadingKey, _WebEstimatedProgressKey,
+            _WebCanGoBackKey, _WebCanGoForwardKey, _WebMainFrameTitleKey, _WebMainFrameIconKey, _WebMainFrameDocumentKey, nil];
+    if ([manualNotifyKeys containsObject:key])
+        return NO;
+    return YES;
 }
 
 - (NSArray *)_declaredKeys {
     static NSArray *declaredKeys = nil;
-    
-    if (!declaredKeys) {
-        declaredKeys = [[NSArray alloc] initWithObjects:_WebMainFrameURLKey, _WebIsLoadingKey, _WebEstimatedProgressKey, _WebCanGoBackKey, _WebCanGoForwardKey, _WebMainFrameTitleKey, _WebMainFrameIconKey, _WebMainFrameDocumentKey, nil];
-    }
-
+    if (!declaredKeys)
+        declaredKeys = [[NSArray alloc] initWithObjects:_WebMainFrameURLKey, _WebIsLoadingKey, _WebEstimatedProgressKey,
+            _WebCanGoBackKey, _WebCanGoForwardKey, _WebMainFrameTitleKey, _WebMainFrameIconKey, _WebMainFrameDocumentKey, nil];
     return declaredKeys;
 }