Wed, 28 Jun 2006 19:12:38 +0000
[gaim-migrate @ 16369]
Get rid of a whole lot of compile warnings.
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1 | #include "gnt.h" |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13947
diff
changeset
|
2 | #include "gntbox.h" |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
3 | #include "gntkeys.h" |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
4 | #include "gntcolors.h" |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13947
diff
changeset
|
5 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
6 | #include <stdio.h> |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
7 | #include <stdlib.h> |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
8 | #include <locale.h> |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13947
diff
changeset
|
9 | #include <unistd.h> |
|
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13947
diff
changeset
|
10 | #include <string.h> |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
11 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
12 | static GList *focus_list; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
13 | static int max_x; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
14 | static int max_y; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
15 | |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
16 | static GHashTable *nodes; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
17 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
18 | static void free_node(gpointer data); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
19 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
20 | void gnt_screen_take_focus(GntWidget *widget) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
21 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
22 | focus_list = g_list_prepend(focus_list, widget); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
23 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
24 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
25 | void gnt_screen_remove_widget(GntWidget *widget) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
26 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
27 | focus_list = g_list_remove(focus_list, widget); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
28 | if (focus_list) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
29 | gnt_widget_draw(focus_list->data); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
30 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
31 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
32 | static gboolean |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
33 | io_invoke(GIOChannel *source, GIOCondition cond, gpointer null) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
34 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
35 | char buffer[256]; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
36 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
37 | int rd = read(0, buffer, sizeof(buffer) - 1); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
38 | if (rd < 0) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
39 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
40 | endwin(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
41 | printf("ERROR!\n"); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
42 | exit(1); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
43 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
44 | else if (rd == 0) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
45 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
46 | endwin(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
47 | printf("EOF\n"); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
48 | exit(1); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
49 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
50 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
51 | buffer[rd] = 0; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
52 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
53 | if (focus_list) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
54 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
55 | gboolean ret = FALSE; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
56 | ret = gnt_widget_key_pressed(focus_list->data, buffer); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
57 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
58 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
59 | if (buffer[0] == 27) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
60 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
61 | /* Some special key has been pressed */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
62 | if (strcmp(buffer+1, GNT_KEY_POPUP) == 0) |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
63 | {} |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
64 | else if (strcmp(buffer + 1, "c") == 0) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
65 | { |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
66 | /* Alt + c was pressed. I am going to use it to close a window. */ |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
67 | if (focus_list) |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
68 | { |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
69 | gnt_widget_destroy(focus_list->data); |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
70 | gnt_screen_remove_widget(focus_list->data); |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
71 | } |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
72 | } |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
73 | else if (strcmp(buffer + 1, "q") == 0) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
74 | { |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
75 | /* I am going to use Alt + q to quit. */ |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
76 | endwin(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
77 | exit(1); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
78 | } |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
79 | else if (strcmp(buffer + 1, "n") == 0) |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
80 | { |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
81 | /* Alt + n to go to the next window */ |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
82 | if (focus_list && focus_list->next) |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
83 | focus_list = focus_list->next; |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
84 | else |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
85 | focus_list = g_list_first(focus_list); |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
86 | if (focus_list) |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
87 | { |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
88 | /* XXX: Need a way to bring it on top */ |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
89 | gnt_widget_draw(focus_list->data); |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
90 | } |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
91 | } |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
92 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
93 | refresh(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
94 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
95 | return TRUE; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
96 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
97 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
98 | void gnt_init() |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
99 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
100 | GIOChannel *channel = g_io_channel_unix_new(0); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
101 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
102 | g_io_channel_set_encoding(channel, NULL, NULL); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
103 | g_io_channel_set_buffered(channel, FALSE); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
104 | g_io_channel_set_flags(channel, G_IO_FLAG_NONBLOCK, NULL ); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
105 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
106 | int result = g_io_add_watch(channel, |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
107 | (G_IO_IN | G_IO_HUP | G_IO_ERR), |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
108 | io_invoke, NULL); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
109 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
110 | setlocale(LC_ALL, ""); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
111 | initscr(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
112 | start_color(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
113 | gnt_init_colors(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
114 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
115 | max_x = getmaxx(stdscr); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
116 | max_y = getmaxy(stdscr); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
117 | |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
118 | nodes = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, free_node); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
119 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
120 | wbkgdset(stdscr, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL)); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
121 | noecho(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
122 | refresh(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
123 | mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
124 | g_type_init(); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
125 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
126 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
127 | void gnt_main() |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
128 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
129 | GMainLoop *loop = g_main_new(FALSE); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
130 | g_main_run(loop); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
131 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
132 | |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
133 | /********************************* |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
134 | * Stuff for 'window management' * |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
135 | *********************************/ |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
136 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
137 | typedef struct |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
138 | { |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
139 | GntWidget *me; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
140 | GList *below; /* List of widgets below me */ |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
141 | GList *above; /* List of widgets above me */ |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
142 | } GntNode; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
143 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
144 | static void |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
145 | free_node(gpointer data) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
146 | { |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
147 | GntNode *node = data; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
148 | g_list_free(node->below); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
149 | g_list_free(node->above); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
150 | g_free(node); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
151 | } |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
152 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
153 | static void |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
154 | check_intersection(gpointer key, gpointer value, gpointer data) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
155 | { |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
156 | GntNode *n = value; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
157 | GntNode *nu = data; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
158 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
159 | if (value == NULL) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
160 | return; |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
161 | if (n->me == nu->me) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
162 | return; |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
163 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
164 | if (n->me->priv.x + n->me->priv.width < nu->me->priv.x) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
165 | return; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
166 | if (nu->me->priv.x + nu->me->priv.width < n->me->priv.x) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
167 | return; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
168 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
169 | if (n->me->priv.y + n->me->priv.height < nu->me->priv.y) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
170 | return; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
171 | if (nu->me->priv.y + nu->me->priv.height < n->me->priv.y) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
172 | return; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
173 | |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
174 | n->above = g_list_prepend(n->above, nu); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
175 | nu->below = g_list_prepend(nu->below, n); |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
176 | } |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
177 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
178 | void gnt_screen_occupy(GntWidget *widget) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
179 | { |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
180 | GntNode *node; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
181 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
182 | if (widget->parent) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
183 | { |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
184 | while (widget->parent) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
185 | widget = widget->parent; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
186 | } |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
187 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
188 | if (g_hash_table_lookup(nodes, widget)) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
189 | return; /* XXX: perhaps _update instead? */ |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
190 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
191 | node = g_new0(GntNode, 1); |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
192 | node->me = widget; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
193 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
194 | g_hash_table_foreach(nodes, check_intersection, node); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
195 | g_hash_table_replace(nodes, widget, node); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
196 | } |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
197 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
198 | void gnt_screen_release(GntWidget *widget) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
199 | { |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
200 | WINDOW *win; |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
201 | GList *iter; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
202 | GntNode *node = g_hash_table_lookup(nodes, widget); |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
203 | if (node == NULL) /* Yay! Nothing to do. */ |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
204 | return; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
205 | |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
206 | win = dupwin(widget->window); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
207 | werase(win); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
208 | |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
209 | /* XXX: This is not going to work. |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
210 | * It will be necessary to build a topology and go from there. */ |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
211 | for (iter = node->below; iter; iter = iter->next) |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
212 | { |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
213 | GntNode *n = iter->data; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
214 | GntWidget *w = n->me; |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
215 | int left, right, top, bottom; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
216 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
217 | left = MAX(widget->priv.x, w->priv.x) - w->priv.x; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
218 | right = MIN(widget->priv.x + widget->priv.width, w->priv.x + w->priv.width) - w->priv.x; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
219 | |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
220 | top = MAX(widget->priv.y, w->priv.y) - w->priv.y; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
221 | bottom = MIN(widget->priv.y + widget->priv.height, w->priv.y + w->priv.height) - w->priv.y; |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
222 | |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
223 | copywin(w->window, win, top, left, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
224 | w->priv.y + top, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
225 | w->priv.x + left, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
226 | w->priv.y + bottom - top - 1, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
227 | w->priv.x + right - left - 1, FALSE); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
228 | n->above = g_list_remove(n->above, node); |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
229 | } |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
230 | |
|
13947
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
231 | for (iter = node->above; iter; iter = iter->next) |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
232 | { |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
233 | GntNode *n = iter->data; |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
234 | n->below = g_list_remove(n->below, node); |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
235 | } |
|
a77f6f615c20
[gaim-migrate @ 16365]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
236 | |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
237 | wrefresh(win); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
238 | delwin(win); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
239 | |
|
13931
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
240 | g_hash_table_remove(nodes, widget); |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
241 | } |
|
a0a91e17f899
[gaim-migrate @ 16335]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
242 | |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
243 | void gnt_screen_update(GntWidget *widget) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
244 | { |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
245 | GList *iter; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
246 | WINDOW *win; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
247 | GntNode *node; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
248 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
249 | if (widget->parent) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
250 | { |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
251 | while (widget->parent) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
252 | widget = widget->parent; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
253 | } |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
254 | |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13947
diff
changeset
|
255 | gnt_box_sync_children(GNT_BOX(widget)); |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
256 | node = g_hash_table_lookup(nodes, widget); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
257 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
258 | win = dupwin(widget->window); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
259 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
260 | if (node && node->above) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
261 | { |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
262 | /* XXX: Same here: need to build a topology first. */ |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
263 | for (iter = node->above; iter; iter = iter->next) |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
264 | { |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
265 | GntNode *n = iter->data; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
266 | GntWidget *w = n->me; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
267 | int left, right, top, bottom; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
268 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
269 | left = MAX(widget->priv.x, w->priv.x) - w->priv.x; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
270 | right = MIN(widget->priv.x + widget->priv.width, w->priv.x + w->priv.width) - w->priv.x; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
271 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
272 | top = MAX(widget->priv.y, w->priv.y) - w->priv.y; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
273 | bottom = MIN(widget->priv.y + widget->priv.height, w->priv.y + w->priv.height) - w->priv.y; |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
274 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
275 | copywin(w->window, win, top, left, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
276 | w->priv.y + top, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
277 | w->priv.x + left, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
278 | w->priv.y + bottom - top - 1, |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
279 | w->priv.x + right - left - 1, FALSE); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
280 | } |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
281 | } |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
282 | |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
283 | wrefresh(win); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
284 | delwin(win); |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
285 | } |
|
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13931
diff
changeset
|
286 |