X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b61b8371b0d788b7900bc79417c61493161a3f62..bc5c09a3aa3662137da2d781c0b101a598d2650d:/src/osx/cocoa/window.mm diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index 890ccf7c99..195d789478 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -13,7 +13,7 @@ #ifndef WX_PRECOMP #include "wx/dcclient.h" - #include "wx/nonownedwnd.h" + #include "wx/frame.h" #include "wx/log.h" #include "wx/textctrl.h" #endif @@ -131,6 +131,7 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const - (void)setAction:(SEL)aSelector; - (void)setDoubleAction:(SEL)aSelector; - (void)setBackgroundColor:(NSColor*)aColor; +- (void)setOpaque:(BOOL)opaque; - (void)setTextColor:(NSColor *)color; - (void)setImagePosition:(NSCellImagePosition)aPosition; @end @@ -1690,6 +1691,18 @@ void wxWidgetCocoaImpl::SetBackgroundColour( const wxColour &col ) } } +bool wxWidgetCocoaImpl::SetBackgroundStyle( wxBackgroundStyle style ) +{ + BOOL opaque = ( style == wxBG_STYLE_PAINT ); + + if ( [m_osxView respondsToSelector:@selector(setOpaque:) ] ) + { + [m_osxView setOpaque: opaque]; + } + + return true ; +} + void wxWidgetCocoaImpl::SetLabel( const wxString& title, wxFontEncoding encoding ) { if ( [m_osxView respondsToSelector:@selector(setTitle:) ] ) @@ -2084,10 +2097,24 @@ wxWidgetImpl* wxWidgetImpl::CreateUserPane( wxWindowMac* wxpeer, wxWindowMac* WX wxWidgetImpl* wxWidgetImpl::CreateContentView( wxNonOwnedWindow* now ) { NSWindow* tlw = now->GetWXWindow(); - wxNSView* v = [[wxNSView alloc] initWithFrame:[[tlw contentView] frame]]; - - wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( now, v, true ); - c->InstallEventHandler(); - [tlw setContentView:v]; + + wxWidgetCocoaImpl* c = NULL; + if ( now->IsNativeWindowWrapper() ) + { + NSView* cv = [tlw contentView]; + c = new wxWidgetCocoaImpl( now, cv, true ); + // increase ref count, because the impl destructor will decrement it again + CFRetain(cv); + if ( !now->IsShown() ) + [cv setHidden:NO]; + + } + else + { + wxNSView* v = [[wxNSView alloc] initWithFrame:[[tlw contentView] frame]]; + c = new wxWidgetCocoaImpl( now, v, true ); + c->InstallEventHandler(); + [tlw setContentView:v]; + } return c; }