removed second parameter of wxFrame::DoGiveHelp(), the help string is always shown (even if it's empty), not hidden; this hopefully really fixes restoring the previously shown status bar text when the menu is dismissed

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-04-02 22:00:52 +00:00
parent ddeca22ce8
commit fa36fe3680
4 changed files with 32 additions and 42 deletions

View File

@@ -169,9 +169,9 @@ public:
#endif // no wxTopLevelWindowNative
#if wxUSE_MENUS || wxUSE_TOOLBAR
// show help text (typically in the statusbar); show is false
// if you are hiding the help, true otherwise
virtual void DoGiveHelp(const wxString& text, bool show);
// show help text for the currently selected menu or toolbar item
// (typically in the status bar)
virtual void DoGiveHelp(const wxString& text);
#endif
protected:

View File

@@ -365,9 +365,7 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *WXUNUSED(statbar), int menuId)
#if wxUSE_MENUS
// if no help string found, we will clear the status bar text
wxString helpString;
bool show = menuId != wxID_SEPARATOR && menuId != -2 /* wxID_TITLE */;
if ( show )
if ( menuId != wxID_SEPARATOR && menuId != -3 /* wxID_TITLE */ )
{
wxMenuBar *menuBar = GetMenuBar();
if ( menuBar )
@@ -380,7 +378,7 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *WXUNUSED(statbar), int menuId)
}
}
DoGiveHelp(helpString, show);
DoGiveHelp(helpString);
return !helpString.empty();
#else // !wxUSE_MENUS
@@ -404,7 +402,7 @@ void wxFrameBase::SetStatusBar(wxStatusBar *statBar)
#endif // wxUSE_STATUSBAR
#if wxUSE_MENUS || wxUSE_TOOLBAR
void wxFrameBase::DoGiveHelp(const wxString& text, bool show)
void wxFrameBase::DoGiveHelp(const wxString& help)
{
#if wxUSE_STATUSBAR
if ( m_statusBarPane < 0 )
@@ -417,11 +415,6 @@ void wxFrameBase::DoGiveHelp(const wxString& text, bool show)
if ( !statbar )
return;
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
@@ -442,15 +435,6 @@ void wxFrameBase::DoGiveHelp(const wxString& text, bool show)
m_oldStatusText += _T('\0');
}
}
}
else // hide the status bar text
{
// i.e. restore the old one
help = m_oldStatusText;
// make sure we get the up to date text when showing it the next time
m_oldStatusText.clear();
}
statbar->SetStatusText(help, m_statusBarPane);
#else

View File

@@ -631,10 +631,16 @@ void wxToolBarBase::OnMouseEnter(int id)
if( frame )
{
wxString help;
wxToolBarToolBase* tool = id == wxID_ANY ? (wxToolBarToolBase*)NULL : FindById(id);
if(tool)
if ( id != wxID_ANY )
{
const wxToolBarToolBase * const tool = FindById(id);
if ( tool )
help = tool->GetLongHelp();
frame->DoGiveHelp( help, id != wxID_ANY );
}
// do it even if help string is empty to avoid showing the help for the
// previously selected tool when another one is selected
frame->DoGiveHelp(help);
}
(void)GetEventHandler()->ProcessEvent(event);

View File

@@ -1055,7 +1055,7 @@ bool wxFrame::HandleMenuSelect( WXWORD nItem,
}
else
{
DoGiveHelp(wxEmptyString, false);
DoGiveHelp(wxEmptyString);
return false;
}
}