Make wxMenuItem::GetLabel() handle escaped underscores

(which are '__') correctly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2001-01-07 14:55:03 +00:00
parent 7daab4530c
commit d76419bd54
2 changed files with 48 additions and 20 deletions

View File

@@ -726,21 +726,25 @@ wxMenuItem::~wxMenuItem()
wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
{
wxString label;
#if (GTK_MINOR_VERSION > 0)
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
{
if ( *pc == wxT('_') || *pc == wxT('&') )
if ( *pc == wxT('_') )
{
// '_' is the escape character for GTK+ and '&' is the one for
// wxWindows - skip both of them
// wxGTK escapes "xxx_xxx" to "xxx__xxx"
pc++;
label += *pc;
continue;
}
if ( *pc == wxT('&') )
{
// wxMSW escapes &
continue;
}
label += *pc;
}
#else // GTK+ 1.0
label = text;
#endif // GTK+ 1.2/1.0
return label;
}
@@ -855,11 +859,21 @@ bool wxMenuItem::IsChecked() const
wxString wxMenuItem::GetFactoryPath() const
{
/* in order to get the pointer to the item we need the item text _without_
underscores */
/* in order to get the pointer to the item we need the item text
_without_ underscores */
wxString path( wxT("<main>/") );
path += GetLabel();
for ( const wxChar *pc = m_text.c_str(); *pc; pc++ )
{
if ( *pc == wxT('_') || *pc == wxT('&') )
{
// remove '_' and '&' unconditionally
continue;
}
path += *pc;
}
return path;
}

View File

@@ -726,21 +726,25 @@ wxMenuItem::~wxMenuItem()
wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
{
wxString label;
#if (GTK_MINOR_VERSION > 0)
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
{
if ( *pc == wxT('_') || *pc == wxT('&') )
if ( *pc == wxT('_') )
{
// '_' is the escape character for GTK+ and '&' is the one for
// wxWindows - skip both of them
// wxGTK escapes "xxx_xxx" to "xxx__xxx"
pc++;
label += *pc;
continue;
}
if ( *pc == wxT('&') )
{
// wxMSW escapes &
continue;
}
label += *pc;
}
#else // GTK+ 1.0
label = text;
#endif // GTK+ 1.2/1.0
return label;
}
@@ -855,11 +859,21 @@ bool wxMenuItem::IsChecked() const
wxString wxMenuItem::GetFactoryPath() const
{
/* in order to get the pointer to the item we need the item text _without_
underscores */
/* in order to get the pointer to the item we need the item text
_without_ underscores */
wxString path( wxT("<main>/") );
path += GetLabel();
for ( const wxChar *pc = m_text.c_str(); *pc; pc++ )
{
if ( *pc == wxT('_') || *pc == wxT('&') )
{
// remove '_' and '&' unconditionally
continue;
}
path += *pc;
}
return path;
}