Mercurial > pidgin
comparison console/libgnt/gntcombobox.c @ 13943:25be562aaca8
[gaim-migrate @ 16480]
New widget GntLine to use as a separator.
A partial dialog for add-account callback. Updating the dialog
as a result of selection-change in the prpl dropdown is way ickier
than I had expected it to be. It 'works' now, but quite a bit
quirky. I will try to smooth things up later, perhaps next week.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Mon, 10 Jul 2006 23:55:24 +0000 |
parents | 669898e6aa11 |
children | 0a0d2a1fd2bc |
comparison
equal
deleted
inserted
replaced
13942:b14fdab68eac | 13943:25be562aaca8 |
---|---|
29 | 29 |
30 static void | 30 static void |
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 char *text = NULL; |
35 GntColorType type; | 35 GntColorType type; |
36 int len; | 36 int len; |
37 | 37 |
38 if (box->dropdown) | 38 if (box->dropdown) |
39 { | 39 { |
40 text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); | 40 text = (char *)gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); |
41 box->selected = gnt_tree_get_selection_data(GNT_TREE(box->dropdown)); | 41 box->selected = gnt_tree_get_selection_data(GNT_TREE(box->dropdown)); |
42 } | 42 } |
43 | 43 |
44 if (text == NULL) | 44 if (text == NULL) |
45 text = ""; | 45 text = ""; |
94 { | 94 { |
95 switch (text[0]) | 95 switch (text[0]) |
96 { | 96 { |
97 case '\r': | 97 case '\r': |
98 case '\t': | 98 case '\t': |
99 /* XXX: Get the selction */ | |
100 set_selection(box, gnt_tree_get_selection_data(GNT_TREE(box->dropdown))); | 99 set_selection(box, gnt_tree_get_selection_data(GNT_TREE(box->dropdown))); |
101 case 27: | 100 case 27: |
102 gnt_widget_hide(box->dropdown->parent); | 101 gnt_widget_hide(box->dropdown->parent); |
103 return TRUE; | 102 return TRUE; |
104 break; | 103 break; |
112 if (text[0] == 27) | 111 if (text[0] == 27) |
113 { | 112 { |
114 if (strcmp(text + 1, GNT_KEY_UP) == 0 || | 113 if (strcmp(text + 1, GNT_KEY_UP) == 0 || |
115 strcmp(text + 1, GNT_KEY_DOWN) == 0) | 114 strcmp(text + 1, GNT_KEY_DOWN) == 0) |
116 { | 115 { |
116 GntWidget *parent = box->dropdown->parent; | |
117 gnt_widget_set_size(box->dropdown, widget->priv.width, 9); | 117 gnt_widget_set_size(box->dropdown, widget->priv.width, 9); |
118 gnt_widget_set_position(box->dropdown->parent, | 118 gnt_widget_set_position(parent, |
119 widget->priv.x, widget->priv.y + widget->priv.height - 1); | 119 widget->priv.x, widget->priv.y + widget->priv.height - 1); |
120 gnt_widget_draw(box->dropdown->parent); | 120 if (parent->window) |
121 { | |
122 if (mvwin(parent->window, widget->priv.y + widget->priv.height - 1, | |
123 widget->priv.x) == ERR) | |
124 mvwin(parent->window, | |
125 widget->priv.y - 9 + 1, widget->priv.x); | |
126 } | |
127 | |
128 gnt_widget_draw(parent); | |
121 return TRUE; | 129 return TRUE; |
122 } | 130 } |
123 } | 131 } |
124 } | 132 } |
125 | 133 |
169 | 177 |
170 static void | 178 static void |
171 gnt_combo_box_init(GTypeInstance *instance, gpointer class) | 179 gnt_combo_box_init(GTypeInstance *instance, gpointer class) |
172 { | 180 { |
173 GntWidget *box; | 181 GntWidget *box; |
182 GntWidget *widget = GNT_WIDGET(instance); | |
174 GntComboBox *combo = GNT_COMBO_BOX(instance); | 183 GntComboBox *combo = GNT_COMBO_BOX(instance); |
175 | 184 |
176 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(instance), | 185 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(instance), |
177 GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); | 186 GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); |
178 combo->dropdown = gnt_tree_new(); | 187 combo->dropdown = gnt_tree_new(); |
180 box = gnt_box_new(FALSE, FALSE); | 189 box = gnt_box_new(FALSE, FALSE); |
181 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); | 190 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); |
182 gnt_box_set_pad(GNT_BOX(box), 0); | 191 gnt_box_set_pad(GNT_BOX(box), 0); |
183 gnt_box_add_widget(GNT_BOX(box), combo->dropdown); | 192 gnt_box_add_widget(GNT_BOX(box), combo->dropdown); |
184 | 193 |
194 widget->priv.minw = 4; | |
195 widget->priv.minh = 3; | |
185 DEBUG; | 196 DEBUG; |
186 } | 197 } |
187 | 198 |
188 /****************************************************************************** | 199 /****************************************************************************** |
189 * GntComboBox API | 200 * GntComboBox API |