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