Mercurial > pidgin.yaz
comparison console/libgnt/gntcombobox.c @ 14047:c5bfede33622
[gaim-migrate @ 16660]
A couple of minor adjustments, memory leak fixes.
And request-ui is almost complete now.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Mon, 07 Aug 2006 02:15:58 +0000 |
parents | 143474e2b1cb |
children | fa8f65cd912c |
comparison
equal
deleted
inserted
replaced
14046:eb1a7d176149 | 14047:c5bfede33622 |
---|---|
39 GntColorType type; | 39 GntColorType type; |
40 int len; | 40 int len; |
41 | 41 |
42 if (box->dropdown) | 42 if (box->dropdown) |
43 { | 43 { |
44 text = (char *)gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); | 44 text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); |
45 box->selected = gnt_tree_get_selection_data(GNT_TREE(box->dropdown)); | 45 box->selected = gnt_tree_get_selection_data(GNT_TREE(box->dropdown)); |
46 } | 46 } |
47 | 47 |
48 if (text == NULL) | 48 if (text == NULL) |
49 text = ""; | 49 text = g_strdup(text); |
50 | |
51 text = g_strdup(text); | |
52 | 50 |
53 if (gnt_widget_has_focus(widget)) | 51 if (gnt_widget_has_focus(widget)) |
54 type = GNT_COLOR_HIGHLIGHT; | 52 type = GNT_COLOR_HIGHLIGHT; |
55 else | 53 else |
56 type = GNT_COLOR_NORMAL; | 54 type = GNT_COLOR_NORMAL; |
100 { | 98 { |
101 case '\r': | 99 case '\r': |
102 case '\t': | 100 case '\t': |
103 set_selection(box, gnt_tree_get_selection_data(GNT_TREE(box->dropdown))); | 101 set_selection(box, gnt_tree_get_selection_data(GNT_TREE(box->dropdown))); |
104 case 27: | 102 case 27: |
103 gnt_tree_set_selected(GNT_TREE(box->dropdown), box->selected); | |
105 gnt_widget_hide(box->dropdown->parent); | 104 gnt_widget_hide(box->dropdown->parent); |
106 return TRUE; | 105 return TRUE; |
107 break; | 106 break; |
108 } | 107 } |
109 } | 108 } |
116 { | 115 { |
117 if (strcmp(text + 1, GNT_KEY_UP) == 0 || | 116 if (strcmp(text + 1, GNT_KEY_UP) == 0 || |
118 strcmp(text + 1, GNT_KEY_DOWN) == 0) | 117 strcmp(text + 1, GNT_KEY_DOWN) == 0) |
119 { | 118 { |
120 GntWidget *parent = box->dropdown->parent; | 119 GntWidget *parent = box->dropdown->parent; |
121 gnt_widget_set_size(box->dropdown, widget->priv.width, 9); | 120 int height = g_list_length(GNT_TREE(box->dropdown)->list); |
122 gnt_widget_set_position(parent, | 121 int y = widget->priv.y + widget->priv.height - 1; |
123 widget->priv.x, widget->priv.y + widget->priv.height - 1); | 122 gnt_widget_set_size(box->dropdown, widget->priv.width, height + 2); |
123 | |
124 if (y + height + 2 >= getmaxy(stdscr)) | |
125 y = widget->priv.y - height - 1; | |
126 gnt_widget_set_position(parent, widget->priv.x, y); | |
124 if (parent->window) | 127 if (parent->window) |
125 { | 128 { |
126 if (mvwin(parent->window, widget->priv.y + widget->priv.height - 1, | 129 mvwin(parent->window, y, widget->priv.x); |
127 widget->priv.x) == ERR) | |
128 mvwin(parent->window, | |
129 widget->priv.y - 9 + 1, widget->priv.x); | |
130 } | 130 } |
131 | 131 |
132 GNT_WIDGET_SET_FLAGS(parent, GNT_WIDGET_TRANSIENT); | |
133 gnt_widget_draw(parent); | 132 gnt_widget_draw(parent); |
134 return TRUE; | 133 return TRUE; |
135 } | 134 } |
136 } | 135 } |
137 } | 136 } |
190 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(instance), | 189 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(instance), |
191 GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); | 190 GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); |
192 combo->dropdown = gnt_tree_new(); | 191 combo->dropdown = gnt_tree_new(); |
193 | 192 |
194 box = gnt_box_new(FALSE, FALSE); | 193 box = gnt_box_new(FALSE, FALSE); |
195 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER); | 194 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | GNT_WIDGET_TRANSIENT); |
196 gnt_box_set_pad(GNT_BOX(box), 0); | 195 gnt_box_set_pad(GNT_BOX(box), 0); |
197 gnt_box_add_widget(GNT_BOX(box), combo->dropdown); | 196 gnt_box_add_widget(GNT_BOX(box), combo->dropdown); |
198 | 197 |
199 widget->priv.minw = 4; | 198 widget->priv.minw = 4; |
200 widget->priv.minh = 3; | 199 widget->priv.minh = 3; |