X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cc710171423c158f73d0713e4cd625bf533635f9..6a06eecfb2c325b1844b9a7b004ba07d93219806:/src/osx/cocoa/window.mm?ds=sidebyside diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index ccea61277c..b859eba7cb 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -802,12 +802,32 @@ void wxOSX_drawRect(NSView* self, SEL _cmd, NSRect rect) // [NSWindow setAllowsConcurrentViewDrawing:NO] does not affect it. if ( !wxThread::IsMain() ) { - // just call the superclass handler, we don't need any custom wx drawing - // here and it seems to work fine: - wxOSX_DrawRectHandlerPtr - superimpl = (wxOSX_DrawRectHandlerPtr) - [[self superclass] instanceMethodForSelector:_cmd]; - superimpl(self, _cmd, rect); + if ( impl->IsUserPane() ) + { + wxWindow* win = impl->GetWXPeer(); + if ( win->UseBgCol() ) + { + + CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort]; + CGContextSaveGState( context ); + + CGContextSetFillColorWithColor( context, win->GetBackgroundColour().GetCGColor()); + CGRect r = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); + CGContextFillRect( context, r ); + + CGContextRestoreGState( context ); + } + } + else + { + // just call the superclass handler, we don't need any custom wx drawing + // here and it seems to work fine: + wxOSX_DrawRectHandlerPtr + superimpl = (wxOSX_DrawRectHandlerPtr) + [[self superclass] instanceMethodForSelector:_cmd]; + superimpl(self, _cmd, rect); + } + return; } #endif // wxUSE_THREADS @@ -1424,7 +1444,7 @@ void wxWidgetCocoaImpl::SetVisibility( bool visible ) - (id)init:(wxWindow *)win { - [super init]; + self = [super init]; m_win = win; m_isDone = false;