Fix:Core:Double _ in popups to avoid it being mistaken for hotkey indication
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Wed, 11 Mar 2009 09:48:48 +0000 (09:48 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Wed, 11 Mar 2009 09:48:48 +0000 (09:48 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@2098 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/popup.c

index d58de40..0e6f596 100644 (file)
@@ -124,13 +124,33 @@ popup_break_crossing(struct display_list *l)
 static void *
 popup_printf_cb(void *menu, enum menu_type type, struct callback *cb, const char *fmt, ...)
 {
-       gchar *str;
+       gchar *str,*us;
+       int usc=0;
        va_list ap;
        void *ret;
 
        va_start(ap, fmt);
        str=g_strdup_vprintf(fmt, ap);
        dbg(0,"%s\n", str);
+       us=str;
+       while (*us) {
+               if (*us == '_')
+                       usc++;
+               us++;
+       }
+       if (usc) {
+               gchar *str2=g_malloc(strlen(str)+us+1);
+               gchar *us2=str2;
+               us=str;
+               while (*us) {
+                       if (*us == '_')
+                               *us2++=*us;
+                       *us2++=*us++;
+               }
+               *us2='\0';
+               g_free(str);
+               str=str2;
+       }
        ret=menu_add(menu, str, type, cb);
        va_end(ap);
        g_free(str);