X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f0e9f0d3ff8552bcbb19b323714471f06711c00e..4f55a07f9f4c6ba6905aaa8e584e6fb14771d278:/src/common/framecmn.cpp?ds=sidebyside diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index 3cc2dff527..714400961b 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -27,10 +27,12 @@ #pragma hdrstop #endif -#include "wx/frame.h" -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/dcclient.h" +#ifndef WX_PRECOMP + #include "wx/frame.h" + #include "wx/menu.h" + #include "wx/menuitem.h" + #include "wx/dcclient.h" +#endif // WX_PRECOMP #if wxUSE_TOOLBAR #include "wx/toolbar.h" @@ -60,7 +62,9 @@ END_EVENT_TABLE() wxFrameBase::wxFrameBase() { +#if wxUSE_MENUS m_frameMenuBar = NULL; +#endif // wxUSE_MENUS #if wxUSE_TOOLBAR m_frameToolBar = NULL; @@ -94,11 +98,13 @@ wxFrame *wxFrameBase::New(wxWindow *parent, void wxFrameBase::DeleteAllBars() { +#if wxUSE_MENUS if ( m_frameMenuBar ) { delete m_frameMenuBar; m_frameMenuBar = (wxMenuBar *) NULL; } +#endif // wxUSE_MENUS #if wxUSE_STATUSBAR if ( m_frameStatusBar ) @@ -117,6 +123,26 @@ void wxFrameBase::DeleteAllBars() #endif // wxUSE_TOOLBAR } +bool wxFrameBase::IsOneOfBars(const wxWindow *win) const +{ +#if wxUSE_MENUS + if ( win == GetMenuBar() ) + return TRUE; +#endif // wxUSE_MENUS + +#if wxUSE_STATUSBAR + if ( win == GetStatusBar() ) + return TRUE; +#endif // wxUSE_STATUSBAR + +#if wxUSE_TOOLBAR + if ( win == GetToolBar() ) + return TRUE; +#endif // wxUSE_TOOLBAR + + return FALSE; +} + // ---------------------------------------------------------------------------- // wxFrame size management: we exclude the areas taken by menu/status/toolbars // from the client area, so the client area is what's really available for the @@ -192,6 +218,7 @@ void wxFrameBase::MakeModal(bool modal) bool wxFrameBase::ProcessCommand(int id) { +#if wxUSE_MENUS wxMenuBar *bar = GetMenuBar(); if ( !bar ) return FALSE; @@ -209,6 +236,9 @@ bool wxFrameBase::ProcessCommand(int id) } return GetEventHandler()->ProcessEvent(commandEvent); +#else // !wxUSE_MENUS + return FALSE; +#endif // wxUSE_MENUS/!wxUSE_MENUS } // ---------------------------------------------------------------------------- @@ -226,7 +256,7 @@ void wxFrameBase::OnSize(wxSizeEvent& WXUNUSED(event)) Layout(); } else -#endif +#endif // wxUSE_CONSTRAINTS { // do we have _exactly_ one child? wxWindow *child = (wxWindow *)NULL; @@ -239,14 +269,7 @@ void wxFrameBase::OnSize(wxSizeEvent& WXUNUSED(event)) // exclude top level and managed windows (status bar isn't // currently in the children list except under wxMac anyhow, but // it makes no harm to test for it) - if ( !win->IsTopLevel() -#if wxUSE_STATUSBAR - && (win != GetStatusBar()) -#endif // wxUSE_STATUSBAR -#if wxUSE_TOOLBAR - && (win != GetToolBar()) -#endif // wxUSE_TOOLBAR - ) + if ( !win->IsTopLevel() && !IsOneOfBars(win) ) { if ( child ) { @@ -290,6 +313,14 @@ void wxFrameBase::OnMenuHighlight(wxMenuEvent& event) #endif // wxUSE_STATUSBAR } +bool wxFrameBase::SendIconizeEvent(bool iconized) +{ + wxIconizeEvent event(GetId(), iconized); + event.SetEventObject(this); + + return GetEventHandler()->ProcessEvent(event); +} + // ---------------------------------------------------------------------------- // status bar stuff // ---------------------------------------------------------------------------- @@ -419,9 +450,13 @@ wxToolBar* wxFrameBase::OnCreateToolBar(long style, void wxFrameBase::OnIdle(wxIdleEvent& WXUNUSED(event) ) { +#if wxUSE_MENUS DoMenuUpdates(); +#endif // wxUSE_MENUS } +#if wxUSE_MENUS + // update all menus void wxFrameBase::DoMenuUpdates() { @@ -470,3 +505,5 @@ void wxFrameBase::DoMenuUpdates(wxMenu* menu, wxWindow* focusWin) node = node->GetNext(); } } + +#endif // wxUSE_MENUS