]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/nonownedwnd_osx.cpp
fix memory leak in wxScreenDC, fixes #13249
[wxWidgets.git] / src / osx / nonownedwnd_osx.cpp
index 5ed6cdf443f20a6dd00b680b59d0af5ac01ae9ec..c3f981a100a5ac21bed9947246a718280cecd605 100644 (file)
@@ -144,7 +144,7 @@ bool wxNonOwnedWindow::Create(wxWindow *parent,
                     name
                 );
     wxNonOwnedWindowImpl::Associate( m_nowpeer->GetWXWindow() , m_nowpeer ) ;
-    m_peer = wxWidgetImpl::CreateContentView(this);
+    SetPeer(wxWidgetImpl::CreateContentView(this));
 
     DoSetWindowVariant( m_windowVariant ) ;
 
@@ -177,7 +177,7 @@ void wxNonOwnedWindow::SubclassWin(WXWindow nativeWindow)
     m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, GetParent(), nativeWindow );
     m_isNativeWindowWrapper = true;
     wxNonOwnedWindowImpl::Associate( m_nowpeer->GetWXWindow() , m_nowpeer ) ;
-    m_peer = wxWidgetImpl::CreateContentView(this);
+    SetPeer(wxWidgetImpl::CreateContentView(this));
 }
 
 void wxNonOwnedWindow::UnsubclassWin()
@@ -189,7 +189,7 @@ void wxNonOwnedWindow::UnsubclassWin()
 
     wxNonOwnedWindowImpl::RemoveAssociations(m_nowpeer) ;
     wxDELETE(m_nowpeer);
-    wxDELETE(m_peer);
+    SetPeer(NULL);
     m_isNativeWindowWrapper = false;
 }
 
@@ -467,8 +467,15 @@ void wxNonOwnedWindow::DoGetClientSize( int *width, int *height ) const
         return;
 
     int left, top, w, h;
+    // under iphone with a translucent status bar the m_nowpeer returns the
+    // inner area, while the content area extends under the translucent
+    // status bar, therefore we use the content view's area
+#ifdef __WXOSX_IPHONE__
+    GetPeer()->GetContentArea(left, top, w, h);
+#else
     m_nowpeer->GetContentArea(left, top, w, h);
-
+#endif
+    
     if (width)
        *width = w ;
     if (height)