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)