X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/76b49cf49ba9ee9f3eeec9730cb4bc4569ab17f1..63e02796620637b50a96d74a2264f3dea8def866:/src/common/framecmn.cpp diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index 31a955fede..b0ad197a09 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -29,14 +29,9 @@ #include "wx/menu.h" #include "wx/menuitem.h" #include "wx/dcclient.h" -#endif // WX_PRECOMP - -#if wxUSE_TOOLBAR #include "wx/toolbar.h" -#endif -#if wxUSE_STATUSBAR #include "wx/statusbr.h" -#endif +#endif // WX_PRECOMP // ---------------------------------------------------------------------------- // event table @@ -408,6 +403,7 @@ void wxFrameBase::SetStatusBar(wxStatusBar *statBar) #endif // wxUSE_STATUSBAR +#if wxUSE_MENUS || wxUSE_TOOLBAR void wxFrameBase::DoGiveHelp(const wxString& text, bool show) { #if wxUSE_STATUSBAR @@ -423,27 +419,35 @@ void wxFrameBase::DoGiveHelp(const wxString& text, bool show) wxString help; if ( show ) + { help = text; - // remember the old status bar text if this is the first time we're called - // since the menu has been opened as we're going to overwrite it in our - // DoGiveHelp() and we want to restore it when the menu is closed - // - // note that it would be logical to do this in OnMenuOpen() but under MSW - // we get an EVT_MENU_HIGHLIGHT before EVT_MENU_OPEN, strangely enough, and - // so this doesn't work and instead we use the ugly trick with using - // special m_oldStatusText value as "menu opened" (but it is arguably - // better than adding yet another member variable to wxFrame on all - // platforms) - if ( m_oldStatusText.empty() ) - { - m_oldStatusText = statbar->GetStatusText(m_statusBarPane); + // remember the old status bar text if this is the first time we're + // called since the menu has been opened as we're going to overwrite it + // in our DoGiveHelp() and we want to restore it when the menu is + // closed + // + // note that it would be logical to do this in OnMenuOpen() but under + // MSW we get an EVT_MENU_HIGHLIGHT before EVT_MENU_OPEN, strangely + // enough, and so this doesn't work and instead we use the ugly trick + // with using special m_oldStatusText value as "menu opened" (but it is + // arguably better than adding yet another member variable to wxFrame + // on all platforms) if ( m_oldStatusText.empty() ) { - // use special value to prevent us from doing this the next time - m_oldStatusText += _T('\0'); + m_oldStatusText = statbar->GetStatusText(m_statusBarPane); + if ( m_oldStatusText.empty() ) + { + // use special value to prevent us from doing this the next time + m_oldStatusText += _T('\0'); + } } } + else // hide the status bar text + { + // i.e. restore the old one + help = m_oldStatusText; + } statbar->SetStatusText(help, m_statusBarPane); #else @@ -451,6 +455,7 @@ void wxFrameBase::DoGiveHelp(const wxString& text, bool show) wxUnusedVar(show); #endif // wxUSE_STATUSBAR } +#endif // wxUSE_MENUS || wxUSE_TOOLBAR // ---------------------------------------------------------------------------- @@ -463,7 +468,7 @@ wxToolBar* wxFrameBase::CreateToolBar(long style, wxWindowID id, const wxString& name) { - // the main toolbar can't be recreated (unless it was explicitly deeleted + // the main toolbar can't be recreated (unless it was explicitly deleted // before) wxCHECK_MSG( !m_frameToolBar, (wxToolBar *)NULL, wxT("recreating toolbar in wxFrame") );