+2005-02-16 Richard Williamson <rjw@apple.com>
+
+ Fixed <rdar://problem/3966973> Tiger 8A357: Binary Compatiblity: frequent Webstractor.app crashes [WebImageData _nextFrame]
+
+ Webstractor.app was playing tricks to create thumbnails of
+ pages. This caused the 'focusView' to be incorrect during
+ animated GIF frame rendering.
+
+ Reviewed by Chris.
+
+ * WebCoreSupport.subproj/WebImageRenderer.m:
+ (-[WebImageRenderer _startOrContinueAnimationIfNecessary]):
+
2005-02-16 Vicki Murley <vicki@apple.com>
Reviewed by me, code change by Darin.
#import <WebKit/WebAssertions.h>
#import <WebKit/WebImageRendererFactory.h>
#import <WebKit/WebGraphicsBridge.h>
+#import <WebKit/WebHTMLView.h>
+#import <WebKit/WebImageView.h>
#import <WebKit/WebNSObjectExtras.h>
#import <WebCore/WebCoreImageRenderer.h>
- (void)_startOrContinueAnimationIfNecessary
{
- if ([imageData shouldAnimate] && [MIMEType isEqual:@"image/gif"]) {
- [imageData addAnimatingRenderer:self inView:[NSView focusView]];
+ NSView *targetView = [NSView focusView];
+
+ // Only animate if we're drawing into a WebHTMLView or WebImageView. This fixes problems
+ // like <rdar://problem/3966973>, which describes a third party application that renders thumbnails of
+ // the page into a alternate view.
+ if (([targetView isKindOfClass:[WebHTMLView class]] || [targetView isKindOfClass:[WebImageView class]])
+ && [imageData shouldAnimate] && [MIMEType isEqual:@"image/gif"]) {
+ [imageData addAnimatingRenderer:self inView:targetView];
[imageData animate];
}
}