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:
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -631,10 +631,16 @@ void wxToolBarBase::OnMouseEnter(int id)
|
||||
if( frame )
|
||||
{
|
||||
wxString help;
|
||||
wxToolBarToolBase* tool = id == wxID_ANY ? (wxToolBarToolBase*)NULL : FindById(id);
|
||||
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);
|
||||
|
@@ -1055,7 +1055,7 @@ bool wxFrame::HandleMenuSelect( WXWORD nItem,
|
||||
}
|
||||
else
|
||||
{
|
||||
DoGiveHelp(wxEmptyString, false);
|
||||
DoGiveHelp(wxEmptyString);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user