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:
@@ -726,21 +726,25 @@ wxMenuItem::~wxMenuItem()
|
|||||||
wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
|
wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
|
||||||
{
|
{
|
||||||
wxString label;
|
wxString label;
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
|
||||||
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
|
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
|
// wxGTK escapes "xxx_xxx" to "xxx__xxx"
|
||||||
// wxWindows - skip both of them
|
pc++;
|
||||||
|
label += *pc;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( *pc == wxT('&') )
|
||||||
|
{
|
||||||
|
// wxMSW escapes &
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
label += *pc;
|
label += *pc;
|
||||||
}
|
}
|
||||||
#else // GTK+ 1.0
|
|
||||||
label = text;
|
|
||||||
#endif // GTK+ 1.2/1.0
|
|
||||||
|
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
@@ -855,11 +859,21 @@ bool wxMenuItem::IsChecked() const
|
|||||||
|
|
||||||
wxString wxMenuItem::GetFactoryPath() const
|
wxString wxMenuItem::GetFactoryPath() const
|
||||||
{
|
{
|
||||||
/* in order to get the pointer to the item we need the item text _without_
|
/* in order to get the pointer to the item we need the item text
|
||||||
underscores */
|
_without_ underscores */
|
||||||
wxString path( wxT("<main>/") );
|
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;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -726,21 +726,25 @@ wxMenuItem::~wxMenuItem()
|
|||||||
wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
|
wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
|
||||||
{
|
{
|
||||||
wxString label;
|
wxString label;
|
||||||
#if (GTK_MINOR_VERSION > 0)
|
|
||||||
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
|
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
|
// wxGTK escapes "xxx_xxx" to "xxx__xxx"
|
||||||
// wxWindows - skip both of them
|
pc++;
|
||||||
|
label += *pc;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( *pc == wxT('&') )
|
||||||
|
{
|
||||||
|
// wxMSW escapes &
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
label += *pc;
|
label += *pc;
|
||||||
}
|
}
|
||||||
#else // GTK+ 1.0
|
|
||||||
label = text;
|
|
||||||
#endif // GTK+ 1.2/1.0
|
|
||||||
|
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
@@ -855,11 +859,21 @@ bool wxMenuItem::IsChecked() const
|
|||||||
|
|
||||||
wxString wxMenuItem::GetFactoryPath() const
|
wxString wxMenuItem::GetFactoryPath() const
|
||||||
{
|
{
|
||||||
/* in order to get the pointer to the item we need the item text _without_
|
/* in order to get the pointer to the item we need the item text
|
||||||
underscores */
|
_without_ underscores */
|
||||||
wxString path( wxT("<main>/") );
|
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;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user