From: <sa...@us...> - 2006-07-09 00:54:41
|
Revision: 16467 Author: sadrul Date: 2006-07-08 17:54:31 -0700 (Sat, 08 Jul 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16467&view=rev Log Message: ----------- Minor enhancements for the combobox. Modified Paths: -------------- trunk/console/libgnt/gntcombobox.c trunk/console/libgnt/gnttree.c trunk/console/libgnt/test/combo.c Modified: trunk/console/libgnt/gntcombobox.c =================================================================== --- trunk/console/libgnt/gntcombobox.c 2006-07-08 23:58:20 UTC (rev 16466) +++ trunk/console/libgnt/gntcombobox.c 2006-07-09 00:54:31 UTC (rev 16467) @@ -33,6 +33,7 @@ GntComboBox *box = GNT_COMBO_BOX(widget); const char *text = NULL; GntColorType type; + int len; if (box->dropdown) { @@ -43,14 +44,28 @@ if (text == NULL) text = ""; + text = g_strdup(text); + if (gnt_widget_has_focus(widget)) type = GNT_COLOR_HIGHLIGHT; else type = GNT_COLOR_NORMAL; wbkgdset(widget->window, '\0' | COLOR_PAIR(type)); + + if ((len = g_utf8_strlen(text, -1)) > widget->priv.width - 4) + { + char *s = g_utf8_offset_to_pointer(text, widget->priv.width - 4); + *s = '\0'; + len = widget->priv.width - 4; + } + mvwprintw(widget->window, 1, 1, text); + whline(widget->window, '\0' | COLOR_PAIR(type), widget->priv.width - 4 - len); + mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL)); + mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | COLOR_PAIR(GNT_COLOR_NORMAL)); + g_free(text); DEBUG; } @@ -164,6 +179,7 @@ box = gnt_box_new(FALSE, FALSE); GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); + gnt_box_set_pad(GNT_BOX(box), 0); gnt_box_add_widget(GNT_BOX(box), combo->dropdown); DEBUG; Modified: trunk/console/libgnt/gnttree.c =================================================================== --- trunk/console/libgnt/gnttree.c 2006-07-08 23:58:20 UTC (rev 16466) +++ trunk/console/libgnt/gnttree.c 2006-07-09 00:54:31 UTC (rev 16467) @@ -201,11 +201,13 @@ g_snprintf(format, sizeof(format) - 1, "[%c] ", row->isselected ? 'X' : ' '); } - /* XXX: Need a utf8 version of snprintf */ - if ((wr = g_snprintf(str, widget->priv.width, "%s%s", format, row->text)) >= widget->priv.width) + g_snprintf(str, sizeof(str) - 1, "%s%s", format, row->text); + + if ((wr = g_utf8_strlen(str, -1)) >= widget->priv.width - 1 - pos) { /* XXX: ellipsize */ - str[widget->priv.width - 1 - pos] = 0; + char *s = g_utf8_offset_to_pointer(str, widget->priv.width - 1 - pos); + *s = '\0'; } else { Modified: trunk/console/libgnt/test/combo.c =================================================================== --- trunk/console/libgnt/test/combo.c 2006-07-08 23:58:20 UTC (rev 16466) +++ trunk/console/libgnt/test/combo.c 2006-07-09 00:54:31 UTC (rev 16467) @@ -17,7 +17,7 @@ combo = gnt_combo_box_new(); gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "1", "1"); gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "2", "2"); - gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "3", "3"); + gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "3", "3abcdefghijklmnopqrstuvwxyz"); gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "4", "4"); gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "5", "5"); gnt_combo_box_add_data(GNT_COMBO_BOX(combo), "6", "6"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |