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
|
#endif // no wxTopLevelWindowNative
|
||||||
|
|
||||||
#if wxUSE_MENUS || wxUSE_TOOLBAR
|
#if wxUSE_MENUS || wxUSE_TOOLBAR
|
||||||
// show help text (typically in the statusbar); show is false
|
// show help text for the currently selected menu or toolbar item
|
||||||
// if you are hiding the help, true otherwise
|
// (typically in the status bar)
|
||||||
virtual void DoGiveHelp(const wxString& text, bool show);
|
virtual void DoGiveHelp(const wxString& text);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@@ -365,9 +365,7 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *WXUNUSED(statbar), int menuId)
|
|||||||
#if wxUSE_MENUS
|
#if wxUSE_MENUS
|
||||||
// if no help string found, we will clear the status bar text
|
// if no help string found, we will clear the status bar text
|
||||||
wxString helpString;
|
wxString helpString;
|
||||||
bool show = menuId != wxID_SEPARATOR && menuId != -2 /* wxID_TITLE */;
|
if ( menuId != wxID_SEPARATOR && menuId != -3 /* wxID_TITLE */ )
|
||||||
|
|
||||||
if ( show )
|
|
||||||
{
|
{
|
||||||
wxMenuBar *menuBar = GetMenuBar();
|
wxMenuBar *menuBar = GetMenuBar();
|
||||||
if ( menuBar )
|
if ( menuBar )
|
||||||
@@ -380,7 +378,7 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *WXUNUSED(statbar), int menuId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DoGiveHelp(helpString, show);
|
DoGiveHelp(helpString);
|
||||||
|
|
||||||
return !helpString.empty();
|
return !helpString.empty();
|
||||||
#else // !wxUSE_MENUS
|
#else // !wxUSE_MENUS
|
||||||
@@ -404,7 +402,7 @@ void wxFrameBase::SetStatusBar(wxStatusBar *statBar)
|
|||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
|
|
||||||
#if wxUSE_MENUS || wxUSE_TOOLBAR
|
#if wxUSE_MENUS || wxUSE_TOOLBAR
|
||||||
void wxFrameBase::DoGiveHelp(const wxString& text, bool show)
|
void wxFrameBase::DoGiveHelp(const wxString& help)
|
||||||
{
|
{
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
if ( m_statusBarPane < 0 )
|
if ( m_statusBarPane < 0 )
|
||||||
@@ -417,11 +415,6 @@ void wxFrameBase::DoGiveHelp(const wxString& text, bool show)
|
|||||||
if ( !statbar )
|
if ( !statbar )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wxString help;
|
|
||||||
if ( show )
|
|
||||||
{
|
|
||||||
help = text;
|
|
||||||
|
|
||||||
// remember the old status bar text if this is the first time we're
|
// 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
|
// 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
|
// 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');
|
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);
|
statbar->SetStatusText(help, m_statusBarPane);
|
||||||
#else
|
#else
|
||||||
|
@@ -631,10 +631,16 @@ void wxToolBarBase::OnMouseEnter(int id)
|
|||||||
if( frame )
|
if( frame )
|
||||||
{
|
{
|
||||||
wxString help;
|
wxString help;
|
||||||
wxToolBarToolBase* tool = id == wxID_ANY ? (wxToolBarToolBase*)NULL : FindById(id);
|
if ( id != wxID_ANY )
|
||||||
|
{
|
||||||
|
const wxToolBarToolBase * const tool = FindById(id);
|
||||||
if ( tool )
|
if ( tool )
|
||||||
help = tool->GetLongHelp();
|
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);
|
(void)GetEventHandler()->ProcessEvent(event);
|
||||||
|
@@ -1055,7 +1055,7 @@ bool wxFrame::HandleMenuSelect( WXWORD nItem,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DoGiveHelp(wxEmptyString, false);
|
DoGiveHelp(wxEmptyString);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user