]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/nonownedwnd_osx.cpp
check for wxUSE_REARRANGECTRL being defined
[wxWidgets.git] / src / osx / nonownedwnd_osx.cpp
index f586fcbaee8944e4f719d013a95ee54e5386e15a..d8b9e02ce7392fb6c64adc976b5a134404e8aa84 100644 (file)
@@ -132,23 +132,9 @@ bool wxNonOwnedWindow::Create(wxWindow *parent,
     int w = WidthDefault(size.x);
     int h = HeightDefault(size.y);
 
-    // temporary define, TODO
-#if wxOSX_USE_CARBON
-    m_nowpeer = new wxNonOwnedWindowCarbonImpl( this );    
-#elif wxOSX_USE_COCOA
-    m_nowpeer = new wxNonOwnedWindowCocoaImpl( this );    
-#elif wxOSX_USE_IPHONE
-    m_nowpeer = new wxNonOwnedWindowIPhoneImpl( this );  
-#endif
-
-    m_nowpeer->Create( parent, wxPoint(x,y) , wxSize(w,h) , style , GetExtraStyle(), name ) ;
+    m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, parent, wxPoint(x,y) , wxSize(w,h) , style , GetExtraStyle(), name );
     wxAssociateWindowWithWXWindow( m_nowpeer->GetWXWindow() , this ) ;
-#if wxOSX_USE_CARBON
-    // temporary cast, TODO
-    m_peer = (wxMacControl*) wxWidgetImpl::CreateContentView(this);
-#else
     m_peer = wxWidgetImpl::CreateContentView(this);
-#endif
 
     DoSetWindowVariant( m_windowVariant ) ;
 
@@ -165,9 +151,13 @@ bool wxNonOwnedWindow::Create(wxWindow *parent,
 
 wxNonOwnedWindow::~wxNonOwnedWindow()
 {
+    m_isBeingDeleted = true;
+    
     wxRemoveWXWindowAssociation( this ) ;
-    if ( m_nowpeer )
-        m_nowpeer->Destroy();
+    
+    DestroyChildren();
+    
+    delete m_nowpeer;
 
     // avoid dangling refs
     if ( s_macDeactivateWindow == this )
@@ -216,7 +206,8 @@ bool wxNonOwnedWindow::SetBackgroundColour(const wxColour& c )
     
     if ( GetBackgroundStyle() != wxBG_STYLE_CUSTOM )
     {
-        return m_nowpeer->SetBackgroundColour(c);
+        if ( m_nowpeer )
+            return m_nowpeer->SetBackgroundColour(c);
     }
     return true;
 }    
@@ -359,6 +350,9 @@ bool wxNonOwnedWindow::SetBackgroundStyle(wxBackgroundStyle style)
 
 void wxNonOwnedWindow::DoMoveWindow(int x, int y, int width, int height)
 {
+    if ( m_nowpeer == NULL )
+        return;
+
     m_cachedClippedRectValid = false ;
 
     m_nowpeer->MoveWindow(x, y, width, height);
@@ -367,6 +361,9 @@ void wxNonOwnedWindow::DoMoveWindow(int x, int y, int width, int height)
 
 void wxNonOwnedWindow::DoGetPosition( int *x, int *y ) const
 {
+    if ( m_nowpeer == NULL )
+        return;
+
     int x1,y1 ;
     m_nowpeer->GetPosition(x1, y1);
 
@@ -378,6 +375,9 @@ void wxNonOwnedWindow::DoGetPosition( int *x, int *y ) const
 
 void wxNonOwnedWindow::DoGetSize( int *width, int *height ) const
 {
+    if ( m_nowpeer == NULL )
+        return;
+        
     int w,h;
     
     m_nowpeer->GetSize(w, h);
@@ -390,6 +390,9 @@ void wxNonOwnedWindow::DoGetSize( int *width, int *height ) const
 
 void wxNonOwnedWindow::DoGetClientSize( int *width, int *height ) const
 {
+    if ( m_nowpeer == NULL )
+        return;
+
     int left, top, w, h;
     m_nowpeer->GetContentArea(left, top, w, h);