Mercurial > pidgin
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 |