From: Václav Slavík Date: Sun, 28 Jul 2002 18:48:36 +0000 (+0000) Subject: ported characters escaping in menus to GTK+ 2.0 X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/4e9cbd33d071aa372c366805ff2a715e09face6f ported characters escaping in menus to GTK+ 2.0 (it is now possible to have / in menu entries, unlike in case of GTK+ 1.2; and \ was fixed to work in 2.0) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16305 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 586b2ea034..d74c9b2ca6 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -117,14 +117,25 @@ static wxString wxReplaceUnderscore( const wxString& title ) { if (*pc == wxT('&')) { -#if GTK_CHECK_VERSION(1, 2, 1) +#if GTK_CHECK_VERSION(1, 2, 0) str << wxT('_'); +#endif } +#if GTK_CHECK_VERSION(2, 0, 0) + else if (*pc == wxT('/')) + { + str << wxT("\\/"); + } + else if (*pc == wxT('\\')) + { + str << wxT("\\\\"); + } +#elif GTK_CHECK_VERSION(1, 2, 0) else if (*pc == wxT('/')) { str << wxT('\\'); -#endif } +#endif else { #if __WXGTK12__ @@ -810,20 +821,35 @@ void wxMenuItem::DoSetText( const wxString& str ) const wxChar *pc = str; for (; (*pc != wxT('\0')) && (*pc != wxT('\t')); pc++ ) { +#if GTK_CHECK_VERSION(1, 2, 0) if (*pc == wxT('&')) { -#if GTK_CHECK_VERSION(1, 2, 0) m_text << wxT('_'); } else if ( *pc == wxT('_') ) // escape underscores { m_text << wxT("__"); } +#else // GTK+ < 1.2.0 + if (*pc == wxT('&')) + { + } +#endif +#if GTK_CHECK_VERSION(2, 0, 0) + else if (*pc == wxT('/')) // we have to escape slashes + { + m_text << wxT("\\/"); + } + else if (*pc == wxT('\\')) // we have to double backslashes + { + m_text << wxT("\\\\"); + } +#elif GTK_CHECK_VERSION(1, 2, 0) else if (*pc == wxT('/')) /* we have to filter out slashes ... */ { m_text << wxT('\\'); /* ... and replace them with back slashes */ -#endif // GTK+ 1.2.0+ } +#endif else m_text << *pc; } diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index 586b2ea034..d74c9b2ca6 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -117,14 +117,25 @@ static wxString wxReplaceUnderscore( const wxString& title ) { if (*pc == wxT('&')) { -#if GTK_CHECK_VERSION(1, 2, 1) +#if GTK_CHECK_VERSION(1, 2, 0) str << wxT('_'); +#endif } +#if GTK_CHECK_VERSION(2, 0, 0) + else if (*pc == wxT('/')) + { + str << wxT("\\/"); + } + else if (*pc == wxT('\\')) + { + str << wxT("\\\\"); + } +#elif GTK_CHECK_VERSION(1, 2, 0) else if (*pc == wxT('/')) { str << wxT('\\'); -#endif } +#endif else { #if __WXGTK12__ @@ -810,20 +821,35 @@ void wxMenuItem::DoSetText( const wxString& str ) const wxChar *pc = str; for (; (*pc != wxT('\0')) && (*pc != wxT('\t')); pc++ ) { +#if GTK_CHECK_VERSION(1, 2, 0) if (*pc == wxT('&')) { -#if GTK_CHECK_VERSION(1, 2, 0) m_text << wxT('_'); } else if ( *pc == wxT('_') ) // escape underscores { m_text << wxT("__"); } +#else // GTK+ < 1.2.0 + if (*pc == wxT('&')) + { + } +#endif +#if GTK_CHECK_VERSION(2, 0, 0) + else if (*pc == wxT('/')) // we have to escape slashes + { + m_text << wxT("\\/"); + } + else if (*pc == wxT('\\')) // we have to double backslashes + { + m_text << wxT("\\\\"); + } +#elif GTK_CHECK_VERSION(1, 2, 0) else if (*pc == wxT('/')) /* we have to filter out slashes ... */ { m_text << wxT('\\'); /* ... and replace them with back slashes */ -#endif // GTK+ 1.2.0+ } +#endif else m_text << *pc; }