X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a22895511a250173cf7dd4403fc89f293a898067..62d7be206678146e889a76e30537c74c0e2c0ecc:/src/common/framecmn.cpp diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index 206c959dfb..7cbe913304 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -95,7 +95,7 @@ void wxFrameBase::DeleteAllBars() if ( m_frameMenuBar ) { delete m_frameMenuBar; - m_frameMenuBar = (wxMenuBar *) NULL; + m_frameMenuBar = NULL; } #endif // wxUSE_MENUS @@ -103,7 +103,7 @@ void wxFrameBase::DeleteAllBars() if ( m_frameStatusBar ) { delete m_frameStatusBar; - m_frameStatusBar = (wxStatusBar *) NULL; + m_frameStatusBar = NULL; } #endif // wxUSE_STATUSBAR @@ -111,7 +111,7 @@ void wxFrameBase::DeleteAllBars() if ( m_frameToolBar ) { delete m_frameToolBar; - m_frameToolBar = (wxToolBar *) NULL; + m_frameToolBar = NULL; } #endif // wxUSE_TOOLBAR } @@ -293,7 +293,7 @@ wxStatusBar* wxFrameBase::CreateStatusBar(int number, { // the main status bar can only be created once (or else it should be // deleted before calling CreateStatusBar() again) - wxCHECK_MSG( !m_frameStatusBar, (wxStatusBar *)NULL, + wxCHECK_MSG( !m_frameStatusBar, NULL, wxT("recreating status bar in wxFrame") ); SetStatusBar(OnCreateStatusBar(number, style, id, name)); @@ -415,16 +415,31 @@ void wxFrameBase::DoGiveHelp(const wxString& help, bool show) if ( m_oldStatusText.empty() ) { // use special value to prevent us from doing this the next time - m_oldStatusText += _T('\0'); + m_oldStatusText += wxT('\0'); } } + m_lastHelpShown = text = help; } else // hide help, restore the original text { - text = m_oldStatusText; - m_oldStatusText.clear(); + // clear the last shown help string but remember its value + wxString lastHelpShown; + lastHelpShown.swap(m_lastHelpShown); + + // also clear the old status text but remember it too to restore it + // below + text.swap(m_oldStatusText); + + if ( statbar->GetStatusText(m_statusBarPane) != lastHelpShown ) + { + // if the text was changed with an explicit SetStatusText() call + // from the user code in the meanwhile, do not overwrite it with + // the old status bar contents -- this is almost certainly not what + // the user expects and would be very hard to avoid from user code + return; + } } statbar->SetStatusText(text, m_statusBarPane); @@ -448,7 +463,7 @@ wxToolBar* wxFrameBase::CreateToolBar(long style, { // the main toolbar can't be recreated (unless it was explicitly deleted // before) - wxCHECK_MSG( !m_frameToolBar, (wxToolBar *)NULL, + wxCHECK_MSG( !m_frameToolBar, NULL, wxT("recreating toolbar in wxFrame") ); if ( style == -1 ) @@ -551,7 +566,7 @@ void wxFrameBase::SetMenuBar(wxMenuBar *menubar) this->AttachMenuBar(menubar); } -const wxMenuItem *wxFrameBase::FindItemInMenuBar(int menuId) const +wxMenuItem *wxFrameBase::FindItemInMenuBar(int menuId) const { const wxMenuBar * const menuBar = GetMenuBar();