Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
|
17586
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
1 | /** |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
2 | * GNT - The GLib Ncurses Toolkit |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
3 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
4 | * GNT is the legal property of its developers, whose names are too numerous |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
6 | * source distribution. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
7 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
8 | * This library is free software; you can redistribute it and/or modify |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
9 | * it under the terms of the GNU General Public License as published by |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
10 | * the Free Software Foundation; either version 2 of the License, or |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
11 | * (at your option) any later version. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
12 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
13 | * This program is distributed in the hope that it will be useful, |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
16 | * GNU General Public License for more details. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
17 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
19 | * along with this program; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19840
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
17586
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
21 | */ |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15991
diff
changeset
|
22 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
23 | #include "gntmenu.h" |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
24 | #include "gntmenuitemcheck.h" |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
25 | |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
26 | #include <ctype.h> |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
27 | #include <string.h> |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
28 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
29 | enum |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
30 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
31 | SIGS = 1, |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
32 | }; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
33 | |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
34 | enum |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
35 | { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
36 | ITEM_TEXT = 0, |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
37 | ITEM_TRIGGER, |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
38 | ITEM_SUBMENU, |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
39 | NUM_COLUMNS |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
40 | }; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
41 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
42 | static GntTreeClass *parent_class = NULL; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
43 | |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
44 | static void (*org_draw)(GntWidget *wid); |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
45 | static void (*org_destroy)(GntWidget *wid); |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
46 | static void (*org_map)(GntWidget *wid); |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
47 | static void (*org_size_request)(GntWidget *wid); |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
48 | static gboolean (*org_key_pressed)(GntWidget *w, const char *t); |
|
22438
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
49 | static gboolean (*org_clicked)(GntWidget *w, GntMouseEvent event, int x, int y); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
50 | |
|
21725
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
51 | static void menuitem_activate(GntMenu *menu, GntMenuItem *item); |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
52 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
53 | static void |
|
21250
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
54 | menu_hide_all(GntMenu *menu) |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
55 | { |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
56 | while (menu->parentmenu) |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
57 | menu = menu->parentmenu; |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
58 | gnt_widget_hide(GNT_WIDGET(menu)); |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
59 | } |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
60 | |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
61 | static void |
|
21725
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
62 | show_submenu(GntMenu *menu) |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
63 | { |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
64 | GntMenuItem *item; |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
65 | |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
66 | if (menu->type != GNT_MENU_TOPLEVEL) |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
67 | return; |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
68 | |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
69 | item = g_list_nth_data(menu->list, menu->selected); |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
70 | if (!item || !item->submenu) |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
71 | return; |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
72 | menuitem_activate(menu, item); |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
73 | } |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
74 | |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
75 | static void |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
76 | gnt_menu_draw(GntWidget *widget) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
77 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
78 | GntMenu *menu = GNT_MENU(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
79 | GList *iter; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
80 | chtype type; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
81 | int i; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
82 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
83 | if (menu->type == GNT_MENU_TOPLEVEL) { |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20824
diff
changeset
|
84 | wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT)); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
85 | werase(widget->window); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
86 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
87 | for (i = 0, iter = menu->list; iter; iter = iter->next, i++) { |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
88 | GntMenuItem *item = GNT_MENU_ITEM(iter->data); |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20824
diff
changeset
|
89 | type = ' ' | gnt_color_pair(GNT_COLOR_HIGHLIGHT); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
90 | if (i == menu->selected) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
91 | type |= A_REVERSE; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
92 | item->priv.x = getcurx(widget->window) + widget->priv.x; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
93 | item->priv.y = getcury(widget->window) + widget->priv.y + 1; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
94 | wbkgdset(widget->window, type); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
95 | wprintw(widget->window, " %s ", item->text); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
96 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
97 | } else { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
98 | org_draw(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
99 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
100 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
101 | GNTDEBUG; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
102 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
103 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
104 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
105 | gnt_menu_size_request(GntWidget *widget) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
106 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
107 | GntMenu *menu = GNT_MENU(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
108 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
109 | if (menu->type == GNT_MENU_TOPLEVEL) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
110 | widget->priv.height = 1; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
111 | widget->priv.width = getmaxx(stdscr); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
112 | } else { |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
113 | org_size_request(widget); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
114 | widget->priv.height = g_list_length(menu->list) + 2; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
115 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
116 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
117 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
118 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
119 | menu_tree_add(GntMenu *menu, GntMenuItem *item, GntMenuItem *parent) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
120 | { |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
121 | char trigger[4] = "\0 )\0"; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
122 | |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
123 | if ((trigger[1] = gnt_menuitem_get_trigger(item)) && trigger[1] != ' ') |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
124 | trigger[0] = '('; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
125 | |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
126 | if (GNT_IS_MENU_ITEM_CHECK(item)) { |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
127 | gnt_tree_add_choice(GNT_TREE(menu), item, |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
128 | gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, " "), parent, NULL); |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
129 | gnt_tree_set_choice(GNT_TREE(menu), item, gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item))); |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
130 | } else |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
131 | gnt_tree_add_row_last(GNT_TREE(menu), item, |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
132 | gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, item->submenu ? ">" : " "), parent); |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
133 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
134 | if (0 && item->submenu) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
135 | GntMenu *sub = GNT_MENU(item->submenu); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
136 | GList *iter; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
137 | for (iter = sub->list; iter; iter = iter->next) { |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
138 | GntMenuItem *it = GNT_MENU_ITEM(iter->data); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
139 | menu_tree_add(menu, it, item); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
140 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
141 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
142 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
143 | |
|
18631
fde7b16fe3ea
Possible crash fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18628
diff
changeset
|
144 | #define GET_VAL(ch) ((ch >= '0' && ch <= '9') ? (ch - '0') : (ch >= 'a' && ch <= 'z') ? (10 + ch - 'a') : 36) |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
145 | |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
146 | static void |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
147 | assign_triggers(GntMenu *menu) |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
148 | { |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
149 | GList *iter; |
|
18631
fde7b16fe3ea
Possible crash fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18628
diff
changeset
|
150 | gboolean bools[37]; |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
151 | |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
152 | memset(bools, 0, sizeof(bools)); |
|
18631
fde7b16fe3ea
Possible crash fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18628
diff
changeset
|
153 | bools[36] = 1; |
|
fde7b16fe3ea
Possible crash fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18628
diff
changeset
|
154 | |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
155 | for (iter = menu->list; iter; iter = iter->next) { |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
156 | GntMenuItem *item = iter->data; |
|
18631
fde7b16fe3ea
Possible crash fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18628
diff
changeset
|
157 | char trigger = tolower(gnt_menuitem_get_trigger(item)); |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
158 | if (trigger == '\0' || trigger == ' ') |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
159 | continue; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
160 | bools[(int)GET_VAL(trigger)] = 1; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
161 | } |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
162 | |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
163 | for (iter = menu->list; iter; iter = iter->next) { |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
164 | GntMenuItem *item = iter->data; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
165 | char trigger = gnt_menuitem_get_trigger(item); |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
166 | const char *text = item->text; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
167 | if (trigger != '\0') |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
168 | continue; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
169 | while (*text) { |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
170 | char ch = tolower(*text++); |
|
23064
1a35c6029964
Check if a key is already bound before assigning a menu trigger
Richard Nelson <wabz@pidgin.im>
parents:
22438
diff
changeset
|
171 | char t[2] = {ch, '\0'}; |
|
1a35c6029964
Check if a key is already bound before assigning a menu trigger
Richard Nelson <wabz@pidgin.im>
parents:
22438
diff
changeset
|
172 | if (ch == ' ' || bools[(int)GET_VAL(ch)] || gnt_bindable_check_key(GNT_BINDABLE(menu), t)) |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
173 | continue; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
174 | trigger = ch; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
175 | break; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
176 | } |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
177 | if (trigger == 0) |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
178 | trigger = item->text[0]; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
179 | gnt_menuitem_set_trigger(item, trigger); |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
180 | bools[(int)GET_VAL(trigger)] = 1; |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
181 | } |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
182 | } |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
183 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
184 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
185 | gnt_menu_map(GntWidget *widget) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
186 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
187 | GntMenu *menu = GNT_MENU(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
188 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
189 | if (menu->type == GNT_MENU_TOPLEVEL) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
190 | gnt_widget_size_request(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
191 | } else { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
192 | /* Populate the tree */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
193 | GList *iter; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
194 | gnt_tree_remove_all(GNT_TREE(widget)); |
|
18628
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
195 | /* Try to assign some trigger for the items */ |
|
04fbaff39b59
Try to automatically assign some hotkeys for the menuitems. Do we like this?
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
196 | assign_triggers(menu); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
197 | for (iter = menu->list; iter; iter = iter->next) { |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
198 | GntMenuItem *item = GNT_MENU_ITEM(iter->data); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
199 | menu_tree_add(menu, item, NULL); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
200 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
201 | org_map(widget); |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
202 | gnt_tree_adjust_columns(GNT_TREE(widget)); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
203 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
204 | GNTDEBUG; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
205 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
206 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
207 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
208 | menuitem_activate(GntMenu *menu, GntMenuItem *item) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
209 | { |
|
21246
1e4738b18075
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
210 | if (!item) |
|
1e4738b18075
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
211 | return; |
|
1e4738b18075
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
212 | |
|
1e4738b18075
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
213 | if (gnt_menuitem_activate(item)) { |
|
21250
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
214 | menu_hide_all(menu); |
|
21246
1e4738b18075
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
215 | } else { |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
216 | if (item->submenu) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
217 | GntMenu *sub = GNT_MENU(item->submenu); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
218 | menu->submenu = sub; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
219 | sub->type = GNT_MENU_POPUP; /* Submenus are *never* toplevel */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
220 | sub->parentmenu = menu; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
221 | if (menu->type != GNT_MENU_TOPLEVEL) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
222 | GntWidget *widget = GNT_WIDGET(menu); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
223 | item->priv.x = widget->priv.x + widget->priv.width - 1; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
224 | item->priv.y = widget->priv.y + gnt_tree_get_selection_visible_line(GNT_TREE(menu)); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
225 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
226 | gnt_widget_set_position(GNT_WIDGET(sub), item->priv.x, item->priv.y); |
|
14968
2b1ed06a4773
[gaim-migrate @ 17678]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
227 | GNT_WIDGET_UNSET_FLAGS(GNT_WIDGET(sub), GNT_WIDGET_INVISIBLE); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
228 | gnt_widget_draw(GNT_WIDGET(sub)); |
|
21250
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
229 | } else { |
|
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
230 | menu_hide_all(menu); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
231 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
232 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
233 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
234 | |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
235 | static GList* |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
236 | find_item_with_trigger(GList *start, GList *end, char trigger) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
237 | { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
238 | GList *iter; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
239 | for (iter = start; iter != (end ? end : NULL); iter = iter->next) { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
240 | if (gnt_menuitem_get_trigger(iter->data) == trigger) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
241 | return iter; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
242 | } |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
243 | return NULL; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
244 | } |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
245 | |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
246 | static gboolean |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
247 | check_for_trigger(GntMenu *menu, char trigger) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
248 | { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
249 | /* check for a trigger key */ |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
250 | GList *iter; |
|
19830
5d2000e59e6f
Do not crash when pressing a key in an empty menu. Thanks to CmdrChalupa in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19237
diff
changeset
|
251 | GList *find; |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
252 | GList *nth = g_list_find(menu->list, gnt_tree_get_selection_data(GNT_TREE(menu))); |
|
19830
5d2000e59e6f
Do not crash when pressing a key in an empty menu. Thanks to CmdrChalupa in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19237
diff
changeset
|
253 | |
|
5d2000e59e6f
Do not crash when pressing a key in an empty menu. Thanks to CmdrChalupa in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19237
diff
changeset
|
254 | if (nth == NULL) |
|
5d2000e59e6f
Do not crash when pressing a key in an empty menu. Thanks to CmdrChalupa in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19237
diff
changeset
|
255 | return FALSE; |
|
21540
2a3ffe144ae1
Add maximize flags for windows.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21250
diff
changeset
|
256 | |
|
19830
5d2000e59e6f
Do not crash when pressing a key in an empty menu. Thanks to CmdrChalupa in
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19237
diff
changeset
|
257 | find = find_item_with_trigger(nth->next, NULL, trigger); |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
258 | if (!find) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
259 | find = find_item_with_trigger(menu->list, nth->next, trigger); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
260 | if (!find) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
261 | return FALSE; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
262 | if (find != nth) { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
263 | gnt_tree_set_selected(GNT_TREE(menu), find->data); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
264 | iter = find_item_with_trigger(find->next, NULL, trigger); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
265 | if (iter != NULL && iter != find) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
266 | return TRUE; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
267 | iter = find_item_with_trigger(menu->list, nth, trigger); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
268 | if (iter != NULL && iter != find) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
269 | return TRUE; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
270 | } |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
271 | gnt_widget_activate(GNT_WIDGET(menu)); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
272 | return TRUE; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
273 | } |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
274 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
275 | static gboolean |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
276 | gnt_menu_key_pressed(GntWidget *widget, const char *text) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
277 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
278 | GntMenu *menu = GNT_MENU(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
279 | int current = menu->selected; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
280 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
281 | if (menu->submenu) { |
|
19237
8f44f135f059
Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19236
diff
changeset
|
282 | GntMenu *sub = menu; |
|
8f44f135f059
Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19236
diff
changeset
|
283 | do sub = sub->submenu; while (sub->submenu); |
|
8f44f135f059
Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19236
diff
changeset
|
284 | if (gnt_widget_key_pressed(GNT_WIDGET(sub), text)) |
|
8f44f135f059
Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19236
diff
changeset
|
285 | return TRUE; |
|
23486
f18cc53ce96a
Fix some key-press issues on nested popup menus where pressing up/down
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23064
diff
changeset
|
286 | if (menu->type != GNT_MENU_TOPLEVEL) |
|
f18cc53ce96a
Fix some key-press issues on nested popup menus where pressing up/down
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23064
diff
changeset
|
287 | return FALSE; |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
288 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
289 | |
|
19236
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
290 | if ((text[0] == 27 && text[1] == 0) || |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
291 | (menu->type != GNT_MENU_TOPLEVEL && strcmp(text, GNT_KEY_LEFT) == 0)) { |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
292 | /* Escape closes menu */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
293 | GntMenu *par = menu->parentmenu; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
294 | if (par != NULL) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
295 | par->submenu = NULL; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
296 | gnt_widget_hide(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
297 | } else |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
298 | gnt_widget_hide(widget); |
|
21725
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
299 | if (par && par->type == GNT_MENU_TOPLEVEL) |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
300 | gnt_menu_key_pressed(GNT_WIDGET(par), text); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
301 | return TRUE; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
302 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
303 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
304 | if (menu->type == GNT_MENU_TOPLEVEL) { |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
305 | if (strcmp(text, GNT_KEY_LEFT) == 0) { |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
306 | menu->selected--; |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
307 | if (menu->selected < 0) |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
308 | menu->selected = g_list_length(menu->list) - 1; |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
309 | } else if (strcmp(text, GNT_KEY_RIGHT) == 0) { |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
310 | menu->selected++; |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
311 | if (menu->selected >= g_list_length(menu->list)) |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14907
diff
changeset
|
312 | menu->selected = 0; |
|
19236
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
313 | } else if (strcmp(text, GNT_KEY_ENTER) == 0 || |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
314 | strcmp(text, GNT_KEY_DOWN) == 0) { |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
315 | gnt_widget_activate(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
316 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
317 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
318 | if (current != menu->selected) { |
|
19237
8f44f135f059
Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19236
diff
changeset
|
319 | GntMenu *sub = menu->submenu; |
|
21250
192d8145cba4
Fix menu hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21246
diff
changeset
|
320 | if (sub) |
|
19237
8f44f135f059
Some more navigation improvement for the menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19236
diff
changeset
|
321 | gnt_widget_hide(GNT_WIDGET(sub)); |
|
21725
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21572
diff
changeset
|
322 | show_submenu(menu); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
323 | gnt_widget_draw(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
324 | return TRUE; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
325 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
326 | } else { |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
327 | if (text[1] == '\0') { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
328 | if (check_for_trigger(menu, text[0])) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
329 | return TRUE; |
|
19236
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
330 | } else if (strcmp(text, GNT_KEY_RIGHT) == 0) { |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
331 | GntMenuItem *item = gnt_tree_get_selection_data(GNT_TREE(menu)); |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
332 | if (item && item->submenu) { |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
333 | menuitem_activate(menu, item); |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
334 | return TRUE; |
|
96ba217f780c
Make the menus a little more usable.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
335 | } |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
336 | } |
|
23486
f18cc53ce96a
Fix some key-press issues on nested popup menus where pressing up/down
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23064
diff
changeset
|
337 | if (gnt_bindable_perform_action_key(GNT_BINDABLE(widget), text)) |
|
f18cc53ce96a
Fix some key-press issues on nested popup menus where pressing up/down
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23064
diff
changeset
|
338 | return TRUE; |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
339 | return org_key_pressed(widget, text); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
340 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
341 | |
|
23486
f18cc53ce96a
Fix some key-press issues on nested popup menus where pressing up/down
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23064
diff
changeset
|
342 | return gnt_bindable_perform_action_key(GNT_BINDABLE(widget), text); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
343 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
344 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
345 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
346 | gnt_menu_destroy(GntWidget *widget) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
347 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
348 | GntMenu *menu = GNT_MENU(widget); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
349 | g_list_foreach(menu->list, (GFunc)g_object_unref, NULL); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
350 | g_list_free(menu->list); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
351 | org_destroy(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
352 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
353 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
354 | static void |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
355 | gnt_menu_toggled(GntTree *tree, gpointer key) |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
356 | { |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
357 | GntMenuItem *item = GNT_MENU_ITEM(key); |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
358 | GntMenu *menu = GNT_MENU(tree); |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
359 | gboolean check = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)); |
|
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
360 | gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), !check); |
|
21246
1e4738b18075
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
361 | gnt_menuitem_activate(item); |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
362 | while (menu) { |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
363 | gnt_widget_hide(GNT_WIDGET(menu)); |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
364 | menu = menu->parentmenu; |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
365 | } |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
366 | } |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
367 | |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
368 | static void |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
369 | gnt_menu_activate(GntWidget *widget) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
370 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
371 | GntMenu *menu = GNT_MENU(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
372 | GntMenuItem *item; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
373 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
374 | if (menu->type == GNT_MENU_TOPLEVEL) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
375 | item = g_list_nth_data(menu->list, menu->selected); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
376 | } else { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
377 | item = gnt_tree_get_selection_data(GNT_TREE(menu)); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
378 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
379 | |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
380 | if (item) { |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15906
diff
changeset
|
381 | if (GNT_IS_MENU_ITEM_CHECK(item)) |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
382 | gnt_menu_toggled(GNT_TREE(widget), item); |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
383 | else |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
384 | menuitem_activate(menu, item); |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
385 | } |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
386 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
387 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
388 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
389 | gnt_menu_hide(GntWidget *widget) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
390 | { |
|
16779
006f50afb7a6
Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents:
15991
diff
changeset
|
391 | GntMenu *sub, *menu = GNT_MENU(widget); |
|
006f50afb7a6
Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents:
15991
diff
changeset
|
392 | |
|
006f50afb7a6
Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents:
15991
diff
changeset
|
393 | while ((sub = menu->submenu)) |
|
006f50afb7a6
Let windows know when the workspace they are in is being hidden/shown
Richard Nelson <wabz@pidgin.im>
parents:
15991
diff
changeset
|
394 | gnt_widget_hide(GNT_WIDGET(sub)); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
395 | if (menu->parentmenu) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
396 | menu->parentmenu->submenu = NULL; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
397 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
398 | |
|
22438
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
399 | static gboolean |
|
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
400 | gnt_menu_clicked(GntWidget *widget, GntMouseEvent event, int x, int y) |
|
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
401 | { |
|
24307
3fe8ef8a8c38
Fix handling mouse events with menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23486
diff
changeset
|
402 | if (GNT_MENU(widget)->type != GNT_MENU_POPUP) |
|
3fe8ef8a8c38
Fix handling mouse events with menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23486
diff
changeset
|
403 | return FALSE; |
|
3fe8ef8a8c38
Fix handling mouse events with menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23486
diff
changeset
|
404 | |
|
3fe8ef8a8c38
Fix handling mouse events with menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23486
diff
changeset
|
405 | if (org_clicked && org_clicked(widget, event, x, y)) |
|
3fe8ef8a8c38
Fix handling mouse events with menus.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23486
diff
changeset
|
406 | return TRUE; |
|
22438
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
407 | gnt_widget_activate(widget); |
|
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
408 | return TRUE; |
|
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
409 | } |
|
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
410 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
411 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
412 | gnt_menu_class_init(GntMenuClass *klass) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
413 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
414 | GntWidgetClass *wid_class = GNT_WIDGET_CLASS(klass); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
415 | parent_class = GNT_TREE_CLASS(klass); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
416 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
417 | org_destroy = wid_class->destroy; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
418 | org_map = wid_class->map; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
419 | org_draw = wid_class->draw; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
420 | org_key_pressed = wid_class->key_pressed; |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
421 | org_size_request = wid_class->size_request; |
|
22438
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
422 | org_clicked = wid_class->clicked; |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
423 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
424 | wid_class->destroy = gnt_menu_destroy; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
425 | wid_class->draw = gnt_menu_draw; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
426 | wid_class->map = gnt_menu_map; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
427 | wid_class->size_request = gnt_menu_size_request; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
428 | wid_class->key_pressed = gnt_menu_key_pressed; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
429 | wid_class->activate = gnt_menu_activate; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
430 | wid_class->hide = gnt_menu_hide; |
|
22438
386cb8f2ec48
Single clicking a menuitem should activate it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
431 | wid_class->clicked = gnt_menu_clicked; |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
432 | |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
433 | parent_class->toggled = gnt_menu_toggled; |
|
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14791
diff
changeset
|
434 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
435 | GNTDEBUG; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
436 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
437 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
438 | static void |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
439 | gnt_menu_init(GTypeInstance *instance, gpointer class) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
440 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
441 | GntWidget *widget = GNT_WIDGET(instance); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
442 | GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | |
|
23486
f18cc53ce96a
Fix some key-press issues on nested popup menus where pressing up/down
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23064
diff
changeset
|
443 | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_TRANSIENT | GNT_WIDGET_DISABLE_ACTIONS); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
444 | GNTDEBUG; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
445 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
446 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
447 | /****************************************************************************** |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
448 | * GntMenu API |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
449 | *****************************************************************************/ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
450 | GType |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
451 | gnt_menu_get_gtype(void) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
452 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
453 | static GType type = 0; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
454 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
455 | if(type == 0) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
456 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
457 | static const GTypeInfo info = { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
458 | sizeof(GntMenuClass), |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
459 | NULL, /* base_init */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
460 | NULL, /* base_finalize */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
461 | (GClassInitFunc)gnt_menu_class_init, |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
462 | NULL, /* class_finalize */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
463 | NULL, /* class_data */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
464 | sizeof(GntMenu), |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
465 | 0, /* n_preallocs */ |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
466 | gnt_menu_init, /* instance_init */ |
|
15874
46df7421a1b5
Enable DEBUG_CFLAGS in libgnt and fix up a number of compile warnings and
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15862
diff
changeset
|
467 | NULL /* value_table */ |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
468 | }; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
469 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
470 | type = g_type_register_static(GNT_TYPE_TREE, |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
471 | "GntMenu", |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
472 | &info, 0); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
473 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
474 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
475 | return type; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
476 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
477 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
478 | GntWidget *gnt_menu_new(GntMenuType type) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
479 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
480 | GntWidget *widget = g_object_new(GNT_TYPE_MENU, NULL); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
481 | GntMenu *menu = GNT_MENU(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
482 | menu->list = NULL; |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
483 | menu->selected = 0; |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
484 | menu->type = type; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
485 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
486 | if (type == GNT_MENU_TOPLEVEL) { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
487 | widget->priv.x = 0; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
488 | widget->priv.y = 0; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
489 | } else { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
490 | GNT_TREE(widget)->show_separator = FALSE; |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18631
diff
changeset
|
491 | g_object_set(G_OBJECT(widget), "columns", NUM_COLUMNS, NULL); |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
492 | gnt_tree_set_col_width(GNT_TREE(widget), ITEM_TRIGGER, 3); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
493 | gnt_tree_set_column_resizable(GNT_TREE(widget), ITEM_TRIGGER, FALSE); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
494 | gnt_tree_set_col_width(GNT_TREE(widget), ITEM_SUBMENU, 1); |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
495 | gnt_tree_set_column_resizable(GNT_TREE(widget), ITEM_SUBMENU, FALSE); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
496 | GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_NO_BORDER); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
497 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
498 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
499 | return widget; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
500 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
501 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
502 | void gnt_menu_add_item(GntMenu *menu, GntMenuItem *item) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
503 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
504 | menu->list = g_list_append(menu->list, item); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
505 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
506 | |
|
20821
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
507 | GntMenuItem *gnt_menu_get_item(GntMenu *menu, const char *id) |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
508 | { |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
509 | GntMenuItem *item = NULL; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
510 | GList *iter = menu->list; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
511 | |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
512 | if (!id || !*id) |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
513 | return NULL; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
514 | |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
515 | for (; iter; iter = iter->next) { |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
516 | GntMenu *sub; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
517 | item = iter->data; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
518 | sub = gnt_menuitem_get_submenu(item); |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
519 | if (sub) { |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
520 | item = gnt_menu_get_item(sub, id); |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
521 | if (item) |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
522 | break; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
523 | } else { |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
524 | const char *itid = gnt_menuitem_get_id(item); |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
525 | if (itid && strcmp(itid, id) == 0) |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
526 | break; |
|
20824
369df93709c0
Add a note: Perhaps look at menu-labels if it doesn't have an ID when processing an accelerator key.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20821
diff
changeset
|
527 | /* XXX: Perhaps look at the menu-label as well? */ |
|
20821
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
528 | } |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
529 | item = NULL; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
530 | } |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
531 | |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
532 | return item; |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
533 | } |
|
51bd63176b50
Allow binding key-shortcuts to menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
534 |