X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5b60dec5c1941957aee03c4fb179eaaf44207f77..31a06b07cce898a22d0ca3992501e85da9c22f13:/src/univ/framuniv.cpp?ds=inline diff --git a/src/univ/framuniv.cpp b/src/univ/framuniv.cpp index 798ac4558d..19b2c610cb 100644 --- a/src/univ/framuniv.cpp +++ b/src/univ/framuniv.cpp @@ -31,6 +31,7 @@ #include "wx/menu.h" #ifndef WX_PRECOMP #include "wx/frame.h" + #include "wx/statusbr.h" #endif // WX_PRECOMP // ============================================================================ @@ -68,10 +69,20 @@ void wxFrame::OnSize(wxSizeEvent& event) #if wxUSE_MENUS PositionMenuBar(); #endif // wxUSE_MENUS +#if wxUSE_STATUSBAR + PositionStatusBar(); +#endif // wxUSE_STATUSBAR event.Skip(); } +void wxFrame::SendSizeEvent() +{ + wxSizeEvent event(GetSize(), GetId()); + event.SetEventObject(this); + GetEventHandler()->ProcessEvent(event); +} + #if wxUSE_MENUS void wxFrame::PositionMenuBar() @@ -86,8 +97,42 @@ void wxFrame::PositionMenuBar() } } +void wxFrame::DetachMenuBar() +{ + wxFrameBase::DetachMenuBar(); + SendSizeEvent(); +} + +void wxFrame::AttachMenuBar(wxMenuBar *menubar) +{ + wxFrameBase::AttachMenuBar(menubar); + SendSizeEvent(); +} + #endif // wxUSE_MENUS +#if wxUSE_STATUSBAR + +void wxFrame::PositionStatusBar() +{ + if ( m_frameStatusBar ) + { + wxCoord heightBar = m_frameStatusBar->GetSize().y; + m_frameStatusBar->SetSize(0, GetClientSize().y, + GetClientSize().x, heightBar); + } +} + +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(); @@ -105,12 +150,20 @@ wxPoint wxFrame::GetClientAreaOrigin() const void wxFrame::DoGetClientSize(int *width, int *height) const { wxFrameBase::DoGetClientSize(width, height); + #if wxUSE_MENUS if ( m_frameMenuBar && height ) { (*height) -= m_frameMenuBar->GetSize().y; } #endif // wxUSE_MENUS + +#if wxUSE_STATUSBAR + if ( m_frameStatusBar && height ) + { + (*height) -= m_frameStatusBar->GetSize().y; + } +#endif // wxUSE_STATUSBAR } void wxFrame::DoSetClientSize(int width, int height) @@ -121,6 +174,14 @@ void wxFrame::DoSetClientSize(int width, int height) height += m_frameMenuBar->GetSize().y; } #endif // wxUSE_MENUS + +#if wxUSE_STATUSBAR + if ( m_frameStatusBar ) + { + height += m_frameStatusBar->GetSize().y; + } +#endif // wxUSE_STATUSBAR + wxFrameBase::DoSetClientSize(width, height); }