]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/framuniv.cpp
corrected MacSetSelection which was incorrectly deselecting also the previously selec...
[wxWidgets.git] / src / univ / framuniv.cpp
index f6b00d2b102d82e77059efa50f580a8727c30510..6c38c6201c8435c8bc5dce44e0ba01ccd07cf5d3 100644 (file)
@@ -76,6 +76,13 @@ void wxFrame::OnSize(wxSizeEvent& event)
     event.Skip();
 }
 
     event.Skip();
 }
 
+void wxFrame::SendSizeEvent()
+{
+    wxSizeEvent event(GetSize(), GetId());
+    event.SetEventObject(this);
+    GetEventHandler()->ProcessEvent(event);
+}
+
 #if wxUSE_MENUS
 
 void wxFrame::PositionMenuBar()
 #if wxUSE_MENUS
 
 void wxFrame::PositionMenuBar()
@@ -85,11 +92,28 @@ void wxFrame::PositionMenuBar()
         // the menubar is positioned above the client size, hence the negative
         // y coord
         wxCoord heightMbar = m_frameMenuBar->GetSize().y;
         // the menubar is positioned above the client size, hence the negative
         // y coord
         wxCoord heightMbar = m_frameMenuBar->GetSize().y;
-        m_frameMenuBar->SetSize(0, -heightMbar,
+        m_frameMenuBar->SetSize(0, 
+#ifdef __WXPM__        
+                                GetClientSize().y - heightMbar,
+#else
+                               -heightMbar,
+#endif                         
                                 GetClientSize().x, heightMbar);
     }
 }
 
                                 GetClientSize().x, heightMbar);
     }
 }
 
+void wxFrame::DetachMenuBar()
+{
+    wxFrameBase::DetachMenuBar();
+    SendSizeEvent();
+}
+
+void wxFrame::AttachMenuBar(wxMenuBar *menubar)
+{
+    wxFrameBase::AttachMenuBar(menubar);
+    SendSizeEvent();
+}
+
 #endif // wxUSE_MENUS
 
 #if wxUSE_STATUSBAR
 #endif // wxUSE_MENUS
 
 #if wxUSE_STATUSBAR
@@ -98,19 +122,26 @@ void wxFrame::PositionStatusBar()
 {
     if ( m_frameStatusBar )
     {
 {
     if ( m_frameStatusBar )
     {
-        wxCoord heightBar = m_frameStatusBar->GetSize().y;
-        m_frameStatusBar->SetSize(0, GetClientSize().y,
-                                  GetClientSize().x, heightBar);
+        wxSize size = GetClientSize();
+        m_frameStatusBar->SetSize(0, size.y, size.x, -1);
     }
 }
 
     }
 }
 
+wxStatusBar* wxFrame::CreateStatusBar(int number, long style,
+                                      wxWindowID id, const wxString& name)
+{
+    wxStatusBar *bar = wxFrameBase::CreateStatusBar(number, style, id, name);
+    SendSizeEvent();
+    return bar;
+}
+
 #endif // wxUSE_STATUSBAR
 
 wxPoint wxFrame::GetClientAreaOrigin() const
 {
     wxPoint pt = wxFrameBase::GetClientAreaOrigin();
 
 #endif // wxUSE_STATUSBAR
 
 wxPoint wxFrame::GetClientAreaOrigin() const
 {
     wxPoint pt = wxFrameBase::GetClientAreaOrigin();
 
-#if wxUSE_MENUS
+#if wxUSE_MENUS && !defined(__WXPM__)
     if ( m_frameMenuBar )
     {
         pt.y += m_frameMenuBar->GetSize().y;
     if ( m_frameMenuBar )
     {
         pt.y += m_frameMenuBar->GetSize().y;