comparison console/libgnt/gntcombobox.c @ 13936:669898e6aa11

[gaim-migrate @ 16467] Minor enhancements for the combobox. committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 09 Jul 2006 00:54:31 +0000
parents cd2da4b079cf
children 25be562aaca8
comparison
equal deleted inserted replaced
13935:cd2da4b079cf 13936:669898e6aa11
31 gnt_combo_box_draw(GntWidget *widget) 31 gnt_combo_box_draw(GntWidget *widget)
32 { 32 {
33 GntComboBox *box = GNT_COMBO_BOX(widget); 33 GntComboBox *box = GNT_COMBO_BOX(widget);
34 const char *text = NULL; 34 const char *text = NULL;
35 GntColorType type; 35 GntColorType type;
36 int len;
36 37
37 if (box->dropdown) 38 if (box->dropdown)
38 { 39 {
39 text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); 40 text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown));
40 box->selected = gnt_tree_get_selection_data(GNT_TREE(box->dropdown)); 41 box->selected = gnt_tree_get_selection_data(GNT_TREE(box->dropdown));
41 } 42 }
42 43
43 if (text == NULL) 44 if (text == NULL)
44 text = ""; 45 text = "";
46
47 text = g_strdup(text);
45 48
46 if (gnt_widget_has_focus(widget)) 49 if (gnt_widget_has_focus(widget))
47 type = GNT_COLOR_HIGHLIGHT; 50 type = GNT_COLOR_HIGHLIGHT;
48 else 51 else
49 type = GNT_COLOR_NORMAL; 52 type = GNT_COLOR_NORMAL;
50 53
51 wbkgdset(widget->window, '\0' | COLOR_PAIR(type)); 54 wbkgdset(widget->window, '\0' | COLOR_PAIR(type));
55
56 if ((len = g_utf8_strlen(text, -1)) > widget->priv.width - 4)
57 {
58 char *s = g_utf8_offset_to_pointer(text, widget->priv.width - 4);
59 *s = '\0';
60 len = widget->priv.width - 4;
61 }
62
52 mvwprintw(widget->window, 1, 1, text); 63 mvwprintw(widget->window, 1, 1, text);
53 64 whline(widget->window, '\0' | COLOR_PAIR(type), widget->priv.width - 4 - len);
65 mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | COLOR_PAIR(GNT_COLOR_NORMAL));
66 mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | COLOR_PAIR(GNT_COLOR_NORMAL));
67
68 g_free(text);
54 DEBUG; 69 DEBUG;
55 } 70 }
56 71
57 static void 72 static void
58 gnt_combo_box_size_request(GntWidget *widget) 73 gnt_combo_box_size_request(GntWidget *widget)
162 GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); 177 GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW);
163 combo->dropdown = gnt_tree_new(); 178 combo->dropdown = gnt_tree_new();
164 179
165 box = gnt_box_new(FALSE, FALSE); 180 box = gnt_box_new(FALSE, FALSE);
166 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); 181 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER);
182 gnt_box_set_pad(GNT_BOX(box), 0);
167 gnt_box_add_widget(GNT_BOX(box), combo->dropdown); 183 gnt_box_add_widget(GNT_BOX(box), combo->dropdown);
168 184
169 DEBUG; 185 DEBUG;
170 } 186 }
171 187