Fix:gui_internal:Made gui_internal_label_new_abbrev abbreviations utf-aware.
authormdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 1 Jan 2012 21:53:25 +0000 (21:53 +0000)
committermdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 1 Jan 2012 21:53:25 +0000 (21:53 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4882 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/gui/internal/gui_internal.c

index 7e8494f..4a8b25e 100644 (file)
@@ -655,12 +655,10 @@ static struct widget *
 gui_internal_label_new_abbrev(struct gui_priv *this, char *text, int maxwidth)
 {
        struct widget *ret=NULL;
-       char *tmp=g_malloc(strlen(text)+3);
-       int i;
-
-
-       i=strlen(text)-1;
-       while (i >= 0) {
+       char *tmp=g_malloc(strlen(text)+3), *p;
+       p=text+strlen(text);
+       while ((p=g_utf8_find_prev_char(text, p)) >= text) {
+               int i=p-text;
                strcpy(tmp, text);
                strcpy(tmp+i,"..");
                ret=gui_internal_label_new(this, tmp);
@@ -668,7 +666,6 @@ gui_internal_label_new_abbrev(struct gui_priv *this, char *text, int maxwidth)
                        break;
                gui_internal_widget_destroy(this, ret);
                ret=NULL;
-               i--;
        }
        if(!ret)
                ret=gui_internal_label_new(this, "");