# HG changeset patch # User Sadrul Habib Chowdhury # Date 1157223327 0 # Node ID c4a32405af68d4216d336923a0fa07b500126197 # Parent b50aa149e09d6b69546cfcedb4ab507c24d8a127 [gaim-migrate @ 17128] Keep things neat and clean in gnt_util_onscreen_width_to_pointer. The only use of this function currently is to truncate a string to make sure it fits in the drawing area, eg, the title of a window, or in the combobox. The function is called on a newly allocated string, which is truncated (if necessary), printed, and freed. committer: Tailor Script diff -r b50aa149e09d -r c4a32405af68 console/libgnt/gntbox.c --- a/console/libgnt/gntbox.c Sat Sep 02 16:55:32 2006 +0000 +++ b/console/libgnt/gntbox.c Sat Sep 02 18:55:27 2006 +0000 @@ -30,7 +30,7 @@ { GntWidget *widget = GNT_WIDGET(box); int len; - char *end = gnt_util_onscreen_width_to_pointer(title, widget->priv.width - 4, &len); + char *end = (char*)gnt_util_onscreen_width_to_pointer(title, widget->priv.width - 4, &len); if (p) *p = (widget->priv.width - len) / 2; diff -r b50aa149e09d -r c4a32405af68 console/libgnt/gntcombobox.c --- a/console/libgnt/gntcombobox.c Sat Sep 02 16:55:32 2006 +0000 +++ b/console/libgnt/gntcombobox.c Sat Sep 02 18:55:27 2006 +0000 @@ -36,7 +36,7 @@ gnt_combo_box_draw(GntWidget *widget) { GntComboBox *box = GNT_COMBO_BOX(widget); - char *text = NULL; + char *text = NULL, *s; GntColorType type; int len; @@ -53,12 +53,8 @@ wbkgdset(widget->window, '\0' | COLOR_PAIR(type)); - if ((len = g_utf8_strlen(text, -1)) > widget->priv.width - 4) - { - char *s = gnt_util_onscreen_width_to_pointer(text, widget->priv.width - 4, NULL); - *s = '\0'; - len = widget->priv.width - 4; - } + s = (char*)gnt_util_onscreen_width_to_pointer(text, widget->priv.width - 4, &len); + *s = '\0'; mvwprintw(widget->window, 1, 1, text); whline(widget->window, ' ' | COLOR_PAIR(type), widget->priv.width - 4 - len); diff -r b50aa149e09d -r c4a32405af68 console/libgnt/gntutils.c --- a/console/libgnt/gntutils.c Sat Sep 02 16:55:32 2006 +0000 +++ b/console/libgnt/gntutils.c Sat Sep 02 18:55:27 2006 +0000 @@ -20,15 +20,15 @@ if (*s == '\n' || *s == '\r') { count++; - len = g_utf8_pointer_to_offset(last, s); + len = gnt_util_onscreen_width(last, s); if (max < len) max = len; last = s + 1; } - s++; + s = g_utf8_next_char(s); } - len = g_utf8_pointer_to_offset(last, s); + len = gnt_util_onscreen_width(last, s); if (max < len) max = len; } @@ -50,11 +50,11 @@ return width; } -char *gnt_util_onscreen_width_to_pointer(const char *string, int len, int *w) +const char *gnt_util_onscreen_width_to_pointer(const char *string, int len, int *w) { int size; int width = 0; - char *str = (char*)string; + const char *str = string; while (width < len && *str) { size = g_unichar_iswide(g_utf8_get_char(str)) ? 2 : 1; diff -r b50aa149e09d -r c4a32405af68 console/libgnt/gntutils.h --- a/console/libgnt/gntutils.h Sat Sep 02 16:55:32 2006 +0000 +++ b/console/libgnt/gntutils.h Sat Sep 02 18:55:27 2006 +0000 @@ -8,4 +8,4 @@ /* excluding *end */ int gnt_util_onscreen_width(const char *start, const char *end); -char *gnt_util_onscreen_width_to_pointer(const char *str, int len, int *w); +const char *gnt_util_onscreen_width_to_pointer(const char *str, int len, int *w); diff -r b50aa149e09d -r c4a32405af68 console/libgnt/test/focus.c --- a/console/libgnt/test/focus.c Sat Sep 02 16:55:32 2006 +0000 +++ b/console/libgnt/test/focus.c Sat Sep 02 18:55:27 2006 +0000 @@ -25,7 +25,7 @@ gnt_init(); #endif - GntWidget *label = gnt_label_new("So wassup dudes and dudettes!!\nSo this is, like,\nthe third line!! \\o/"); + GntWidget *label = gnt_label_new("So wassup dudes and dudettes!!\u4e0a1\u6d772\u67003\u4f4e4\u67085\nSo this is, like,\nthe third line!! \\o/"); GntWidget *vbox, *hbox, *tree, *box, *button; WINDOW *test; @@ -61,7 +61,7 @@ gnt_tree_add_choice(GNT_TREE(tree), "b", gnt_tree_create_row(GNT_TREE(tree), "b"), "d", NULL); GNT_WIDGET_UNSET_FLAGS(hbox, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW); - gnt_box_set_title(GNT_BOX(hbox), "This is the title …"); + gnt_box_set_title(GNT_BOX(hbox), "\u4e0a\u6d77\u6700\u4f4e\u6708\u5de5 …"); g_signal_connect(G_OBJECT(tree), "toggled", G_CALLBACK(toggled), NULL);