Re-add a patch that was created by bland back in AbiWord2 2.0.3_2. bland said,
'Fix crash on startup bug for locales with mb acceleratos in menu.' Reported by: Mikhail Teterin <mi@corbulon.video-collage.com> Tested by: Mikhail Teterin <mi@corbulon.video-collage.com>
This commit is contained in:
parent
66cfe51e76
commit
f55f64936a
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=123836
4 changed files with 96 additions and 0 deletions
|
@ -7,6 +7,7 @@
|
|||
|
||||
PORTNAME= abiword
|
||||
PORTVERSION= 2.2.1
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= editors
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
MASTER_SITE_SUBDIR= abiword
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
--- src/af/ev/unix/ev_UnixMenu.cpp.orig Sat Dec 11 16:05:23 2004
|
||||
+++ src/af/ev/unix/ev_UnixMenu.cpp Sat Dec 11 16:09:41 2004
|
||||
@@ -431,22 +431,20 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
-static char _ev_get_underlined_char(const char * szString)
|
||||
+static guint _ev_get_underlined_char(const char * szString)
|
||||
{
|
||||
|
||||
UT_ASSERT(szString);
|
||||
|
||||
- // return the char right after the underline
|
||||
- const char * p = szString;
|
||||
- while (*p && *(p+1))
|
||||
+ // return the keycode right after the underline
|
||||
+ const UT_UCS4String str(szString);
|
||||
+ for (int i = 0; i < str.length() - 1; )
|
||||
{
|
||||
- if (*p == '_')
|
||||
- return *++p;
|
||||
- else
|
||||
- p++;
|
||||
+ if (str[i++] == '_')
|
||||
+ return gdk_unicode_to_keyval(str[i]);
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ return GDK_VoidSymbol;
|
||||
}
|
||||
|
||||
static void _ev_strip_underline(char * bufResult,
|
||||
@@ -749,12 +747,12 @@
|
||||
// version of the underlined char, since all the menus ignore upper
|
||||
// case (SHIFT-MOD1-[char]) invokations of accelerators.
|
||||
|
||||
- if (bAltOnMod1)
|
||||
+ if (keyCode != GDK_VoidSymbol && bAltOnMod1)
|
||||
{
|
||||
EV_EditEventMapper * pEEM = XAP_App::getApp()->getEditEventMapper();
|
||||
UT_ASSERT(pEEM);
|
||||
EV_EditMethod * pEM = NULL;
|
||||
- pEEM->Keystroke(EV_EKP_PRESS|EV_EMS_ALT|tolower(keyCode),&pEM);
|
||||
+ pEEM->Keystroke(EV_EKP_PRESS|EV_EMS_ALT|keyCode,&pEM);
|
||||
|
||||
// if the pointer is valid, there is a conflict
|
||||
bConflict = (pEM != NULL);
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
PORTNAME= abiword
|
||||
PORTVERSION= 2.2.1
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= editors
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
MASTER_SITE_SUBDIR= abiword
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
--- src/af/ev/unix/ev_UnixMenu.cpp.orig Sat Dec 11 16:05:23 2004
|
||||
+++ src/af/ev/unix/ev_UnixMenu.cpp Sat Dec 11 16:09:41 2004
|
||||
@@ -431,22 +431,20 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
-static char _ev_get_underlined_char(const char * szString)
|
||||
+static guint _ev_get_underlined_char(const char * szString)
|
||||
{
|
||||
|
||||
UT_ASSERT(szString);
|
||||
|
||||
- // return the char right after the underline
|
||||
- const char * p = szString;
|
||||
- while (*p && *(p+1))
|
||||
+ // return the keycode right after the underline
|
||||
+ const UT_UCS4String str(szString);
|
||||
+ for (int i = 0; i < str.length() - 1; )
|
||||
{
|
||||
- if (*p == '_')
|
||||
- return *++p;
|
||||
- else
|
||||
- p++;
|
||||
+ if (str[i++] == '_')
|
||||
+ return gdk_unicode_to_keyval(str[i]);
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ return GDK_VoidSymbol;
|
||||
}
|
||||
|
||||
static void _ev_strip_underline(char * bufResult,
|
||||
@@ -749,12 +747,12 @@
|
||||
// version of the underlined char, since all the menus ignore upper
|
||||
// case (SHIFT-MOD1-[char]) invokations of accelerators.
|
||||
|
||||
- if (bAltOnMod1)
|
||||
+ if (keyCode != GDK_VoidSymbol && bAltOnMod1)
|
||||
{
|
||||
EV_EditEventMapper * pEEM = XAP_App::getApp()->getEditEventMapper();
|
||||
UT_ASSERT(pEEM);
|
||||
EV_EditMethod * pEM = NULL;
|
||||
- pEEM->Keystroke(EV_EKP_PRESS|EV_EMS_ALT|tolower(keyCode),&pEM);
|
||||
+ pEEM->Keystroke(EV_EKP_PRESS|EV_EMS_ALT|keyCode,&pEM);
|
||||
|
||||
// if the pointer is valid, there is a conflict
|
||||
bConflict = (pEM != NULL);
|
Loading…
Reference in a new issue