Mercurial > pidgin
comparison console/libgnt/gntmain.c @ 13919:0febf380b473
[gaim-migrate @ 16430]
Remove some warnings, and make sure the window in focus is always
on top of all other windows.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 05 Jul 2006 00:09:56 +0000 |
parents | 3111c8105199 |
children | 9309d27d780c |
comparison
equal
deleted
inserted
replaced
13918:61ba85cf05a6 | 13919:0febf380b473 |
---|---|
45 | 45 |
46 static GHashTable *nodes; | 46 static GHashTable *nodes; |
47 | 47 |
48 static void free_node(gpointer data); | 48 static void free_node(gpointer data); |
49 static void draw_taskbar(); | 49 static void draw_taskbar(); |
50 static void bring_on_top(GntWidget *widget); | |
50 | 51 |
51 void gnt_screen_take_focus(GntWidget *widget) | 52 void gnt_screen_take_focus(GntWidget *widget) |
52 { | 53 { |
53 GntWidget *w = NULL; | 54 GntWidget *w = NULL; |
54 | 55 |
86 if (next) | 87 if (next) |
87 focus_list = next; | 88 focus_list = next; |
88 | 89 |
89 if (focus_list) | 90 if (focus_list) |
90 { | 91 { |
91 gnt_widget_set_focus(focus_list->data, TRUE); | 92 bring_on_top(focus_list->data); |
92 gnt_widget_draw(focus_list->data); | |
93 } | 93 } |
94 draw_taskbar(); | 94 draw_taskbar(); |
95 } | 95 } |
96 | 96 |
97 static void | 97 static void |
98 bring_on_top(GntWidget *widget) | 98 bring_on_top(GntWidget *widget) |
99 { | 99 { |
100 GntNode *node = g_hash_table_lookup(nodes, widget); | 100 GntNode *node = g_hash_table_lookup(nodes, widget); |
101 GList *iter; | |
102 | 101 |
103 g_return_if_fail(focus_list->data == widget); | 102 g_return_if_fail(focus_list->data == widget); |
104 | 103 |
105 if (!node) | 104 if (!node) |
106 return; | 105 return; |
122 static void | 121 static void |
123 draw_taskbar() | 122 draw_taskbar() |
124 { | 123 { |
125 static WINDOW *taskbar = NULL; | 124 static WINDOW *taskbar = NULL; |
126 GList *iter; | 125 GList *iter; |
127 int n, width; | 126 int n, width = 0; |
128 int i; | 127 int i; |
129 | 128 |
130 if (taskbar == NULL) | 129 if (taskbar == NULL) |
131 { | 130 { |
132 taskbar = newwin(1, getmaxx(stdscr), getmaxy(stdscr) - 1, 0); | 131 taskbar = newwin(1, getmaxx(stdscr), getmaxy(stdscr) - 1, 0); |
202 | 201 |
203 static void | 202 static void |
204 window_list_activate(GntTree *tree, gpointer null) | 203 window_list_activate(GntTree *tree, gpointer null) |
205 { | 204 { |
206 GntWidget *widget = gnt_tree_get_selection_data(GNT_TREE(tree)); | 205 GntWidget *widget = gnt_tree_get_selection_data(GNT_TREE(tree)); |
207 GntWidget *old; | 206 GntWidget *old = NULL; |
208 | 207 |
209 if (focus_list) | 208 if (focus_list) |
210 old = focus_list->data; | 209 old = focus_list->data; |
211 | 210 |
212 focus_list = g_list_find(g_list_first(focus_list), widget); | 211 focus_list = g_list_find(g_list_first(focus_list), widget); |
216 { | 215 { |
217 gnt_widget_set_focus(old, FALSE); | 216 gnt_widget_set_focus(old, FALSE); |
218 } | 217 } |
219 } | 218 } |
220 | 219 |
221 static GntWidget * | 220 static void |
222 show_window_list() | 221 show_window_list() |
223 { | 222 { |
224 GntWidget *tree, *win; | 223 GntWidget *tree, *win; |
225 GList *iter; | 224 GList *iter; |
226 int id; | |
227 | 225 |
228 if (window_list.window) | 226 if (window_list.window) |
229 return window_list.window; | 227 return; |
230 | 228 |
231 win = window_list.window = gnt_box_new(FALSE, FALSE); | 229 win = window_list.window = gnt_box_new(FALSE, FALSE); |
232 gnt_box_set_toplevel(GNT_BOX(win), TRUE); | 230 gnt_box_set_toplevel(GNT_BOX(win), TRUE); |
233 gnt_box_set_title(GNT_BOX(win), "Window List"); | 231 gnt_box_set_title(GNT_BOX(win), "Window List"); |
234 gnt_box_set_pad(GNT_BOX(win), 0); | 232 gnt_box_set_pad(GNT_BOX(win), 0); |
495 doupdate(); | 493 doupdate(); |
496 } | 494 } |
497 | 495 |
498 void gnt_screen_release(GntWidget *widget) | 496 void gnt_screen_release(GntWidget *widget) |
499 { | 497 { |
500 WINDOW *win; | |
501 GList *iter; | |
502 GntNode *node; | 498 GntNode *node; |
503 | 499 |
504 gnt_screen_remove_widget(widget); | 500 gnt_screen_remove_widget(widget); |
505 node = g_hash_table_lookup(nodes, widget); | 501 node = g_hash_table_lookup(nodes, widget); |
506 | 502 |
518 doupdate(); | 514 doupdate(); |
519 } | 515 } |
520 | 516 |
521 void gnt_screen_update(GntWidget *widget) | 517 void gnt_screen_update(GntWidget *widget) |
522 { | 518 { |
523 GList *iter; | |
524 WINDOW *win; | |
525 GntNode *node; | 519 GntNode *node; |
526 | 520 |
527 if (widget->parent) | 521 if (widget->parent) |
528 { | 522 { |
529 while (widget->parent) | 523 while (widget->parent) |