From: Stefan Csomor Date: Mon, 6 Jun 2011 02:28:56 +0000 (+0000) Subject: supporting native background color on wxWindow descendants that are not themselves... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d4a4ef9074f053b93a7ae2eb8b11a6205d31371e supporting native background color on wxWindow descendants that are not themselves native controls, like eg wxPanel , see #13032 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index ccea61277c..aba5751431 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -802,12 +802,31 @@ 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()); + CGContextFillRect( context, NSRectToCGRect(rect) ); + + 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