+wxOSXWidgetImpl* wxWindowMac::GetPeer() const
+{
+ return m_peer == kOSXNoWidgetImpl ? NULL : m_peer ;
+}
+
+void wxWindowMac::DontCreatePeer()
+{
+ m_peer = kOSXNoWidgetImpl;
+}
+
+void wxWindowMac::SetWrappingPeer(wxOSXWidgetImpl* wrapper)
+{
+ wxOSXWidgetImpl* inner = GetPeer();
+ wxASSERT_MSG( inner != NULL && inner->IsOk(), "missing or incomplete inner peer" );
+ wxASSERT_MSG( wrapper != NULL && wrapper->IsOk(), "missing or incomplete wrapper" );
+
+ if ( !(inner != NULL && inner->IsOk() && wrapper != NULL && wrapper->IsOk()) )
+ return;
+
+ inner->RemoveFromParent();
+ wrapper->InstallEventHandler();
+ wrapper->Embed(inner);
+ m_peer = wrapper;
+}
+
+void wxWindowMac::SetPeer(wxOSXWidgetImpl* peer)
+{
+ if ( GetPeer() )
+ {
+ if ( !GetPeer()->IsRootControl() )
+ GetPeer()->RemoveFromParent();
+ wxDELETE(m_peer);
+ }
+
+ m_peer = peer;
+
+ if ( GetPeer() && !GetPeer()->IsRootControl())
+ {
+ wxASSERT_MSG( GetPeer()->IsOk() , wxT("The native control must exist already") ) ;
+
+ if (!GetParent()->GetChildren().Find((wxWindow*)this))
+ GetParent()->AddChild( this );
+
+ GetPeer()->InstallEventHandler();
+ GetPeer()->Embed(GetParent()->GetPeer());
+
+ GetParent()->MacChildAdded() ;
+
+ // adjust font, controlsize etc
+ DoSetWindowVariant( m_windowVariant ) ;
+
+ GetPeer()->SetLabel( wxStripMenuCodes(m_label, wxStrip_Mnemonics), GetFont().GetEncoding() ) ;
+
+ // for controls we want to use best size for wxDefaultSize params )
+ if ( !GetPeer()->IsUserPane() )
+ SetInitialSize(GetMinSize());
+
+ SetCursor( *wxSTANDARD_CURSOR ) ;
+ }
+}
+
+#if WXWIN_COMPATIBILITY_2_8
+
+bool wxWindowMac::MacIsUserPane()
+{
+ return GetPeer() == NULL || GetPeer()->IsUserPane();
+}
+
+#endif
+
+bool wxWindowMac::MacIsUserPane() const
+{
+ return GetPeer() == NULL || GetPeer()->IsUserPane();
+}
+