- [view lockFocus];
- // we use this method as other methods force a repaint, and this method can be
- // called from OnPaint, even with the window's paint dc as source (see wxHTMLWindow)
- NSBitmapImageRep *rep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect: [view bounds]] retain];
- [view unlockFocus];
-
- CGImageRef cgImageRef = (CGImageRef)[rep CGImage];
-
- wxBitmap bitmap(CGImageGetWidth(cgImageRef) , CGImageGetHeight(cgImageRef) );
- CGRect r = CGRectMake( 0 , 0 , CGImageGetWidth(cgImageRef) , CGImageGetHeight(cgImageRef) );
- // since our context is upside down we dont use CGContextDrawImage
- wxMacDrawCGImage( (CGContextRef) bitmap.GetHBITMAP() , &r, cgImageRef ) ;
- CGImageRelease(cgImageRef);
- cgImageRef = NULL;
- [rep release];
-
+ if ( [view isHiddenOrHasHiddenAncestor] == NO )
+ {
+ [view lockFocus];
+ // we use this method as other methods force a repaint, and this method can be
+ // called from OnPaint, even with the window's paint dc as source (see wxHTMLWindow)
+ NSBitmapImageRep *rep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect: [view bounds]] retain];
+ [view unlockFocus];
+ if ( [rep respondsToSelector:@selector(CGImage)] )
+ {
+ CGImageRef cgImageRef = (CGImageRef)[rep CGImage];
+
+ CGRect r = CGRectMake( 0 , 0 , CGImageGetWidth(cgImageRef) , CGImageGetHeight(cgImageRef) );
+ // since our context is upside down we dont use CGContextDrawImage
+ wxMacDrawCGImage( (CGContextRef) bitmap.GetHBITMAP() , &r, cgImageRef ) ;
+ CGImageRelease(cgImageRef);
+ cgImageRef = NULL;
+ }
+ else
+ {
+ // TODO for 10.4 in case we can support this for osx_cocoa
+ }
+ [rep release];
+ }
+