X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d08e6e59ed021b0ecfcbf0760347836d6cc45d11..f47db8f0676be7807693de8bc38c4851c37f56a2:/src/univ/framuniv.cpp?ds=sidebyside diff --git a/src/univ/framuniv.cpp b/src/univ/framuniv.cpp index f6b00d2b10..6c38c6201c 100644 --- a/src/univ/framuniv.cpp +++ b/src/univ/framuniv.cpp @@ -76,6 +76,13 @@ void wxFrame::OnSize(wxSizeEvent& event) event.Skip(); } +void wxFrame::SendSizeEvent() +{ + wxSizeEvent event(GetSize(), GetId()); + event.SetEventObject(this); + GetEventHandler()->ProcessEvent(event); +} + #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; - m_frameMenuBar->SetSize(0, -heightMbar, + m_frameMenuBar->SetSize(0, +#ifdef __WXPM__ + GetClientSize().y - heightMbar, +#else + -heightMbar, +#endif GetClientSize().x, heightMbar); } } +void wxFrame::DetachMenuBar() +{ + wxFrameBase::DetachMenuBar(); + SendSizeEvent(); +} + +void wxFrame::AttachMenuBar(wxMenuBar *menubar) +{ + wxFrameBase::AttachMenuBar(menubar); + SendSizeEvent(); +} + #endif // wxUSE_MENUS #if wxUSE_STATUSBAR @@ -98,19 +122,26 @@ void wxFrame::PositionStatusBar() { 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(); -#if wxUSE_MENUS +#if wxUSE_MENUS && !defined(__WXPM__) if ( m_frameMenuBar ) { pt.y += m_frameMenuBar->GetSize().y;