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:
15886
diff
changeset
|
1 | /** |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
2 | * GNT - The GLib Ncurses Toolkit |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
3 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
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:
15886
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:
15886
diff
changeset
|
6 | * source distribution. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
7 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
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:
15886
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:
15886
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:
15886
diff
changeset
|
11 | * (at your option) any later version. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
12 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
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:
15886
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
16 | * GNU General Public License for more details. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
17 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
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:
15886
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:
18627
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:
15886
diff
changeset
|
21 | */ |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
15886
diff
changeset
|
22 | |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
23 | #include "gntbox.h" |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
24 | #include "gntcombobox.h" |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
25 | #include "gnttree.h" |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
26 | #include "gntmarshal.h" |
|
14406
44eecc8a5b8b
[gaim-migrate @ 17046]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
27 | #include "gntutils.h" |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
28 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
29 | #include <string.h> |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
30 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
31 | enum |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
32 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
33 | SIG_SELECTION_CHANGED, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
34 | SIGS, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
35 | }; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
36 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
37 | static GntWidgetClass *parent_class = NULL; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
38 | static guint signals[SIGS] = { 0 }; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
39 | static void (*widget_lost_focus)(GntWidget *widget); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
40 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
41 | static void |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
42 | set_selection(GntComboBox *box, gpointer key) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
43 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
44 | if (box->selected != key) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
45 | { |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
46 | /* XXX: make sure the key actually does exist */ |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
47 | gpointer old = box->selected; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
48 | box->selected = key; |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
49 | if (GNT_WIDGET(box)->window) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
50 | gnt_widget_draw(GNT_WIDGET(box)); |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
51 | if (box->dropdown) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
52 | gnt_tree_set_selected(GNT_TREE(box->dropdown), key); |
|
14103
bcac61d40461
[gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14041
diff
changeset
|
53 | g_signal_emit(box, signals[SIG_SELECTION_CHANGED], 0, old, key); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
54 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
55 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
56 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
57 | static void |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
58 | hide_popup(GntComboBox *box, gboolean set) |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
59 | { |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
60 | gnt_widget_set_size(box->dropdown, |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
61 | box->dropdown->priv.width - 1, box->dropdown->priv.height); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
62 | if (set) |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
63 | set_selection(box, gnt_tree_get_selection_data(GNT_TREE(box->dropdown))); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
64 | else |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
65 | gnt_tree_set_selected(GNT_TREE(box->dropdown), box->selected); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
66 | gnt_widget_hide(box->dropdown->parent); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
67 | } |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
68 | |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
69 | static void |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
70 | gnt_combo_box_draw(GntWidget *widget) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
71 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
72 | GntComboBox *box = GNT_COMBO_BOX(widget); |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14406
diff
changeset
|
73 | char *text = NULL, *s; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
74 | GntColorType type; |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
75 | int len; |
|
26650
cfa29f8cf9b7
Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
76 | |
|
14406
44eecc8a5b8b
[gaim-migrate @ 17046]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
77 | if (box->dropdown && box->selected) |
|
14109
1af2b9d5ef3f
[gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14104
diff
changeset
|
78 | text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
79 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
80 | if (text == NULL) |
|
14406
44eecc8a5b8b
[gaim-migrate @ 17046]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
81 | text = g_strdup(""); |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
82 | |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
83 | if (gnt_widget_has_focus(widget)) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
84 | type = GNT_COLOR_HIGHLIGHT; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
85 | else |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
86 | type = GNT_COLOR_NORMAL; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
87 | |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
88 | wbkgdset(widget->window, '\0' | gnt_color_pair(type)); |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
89 | |
|
14482
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14406
diff
changeset
|
90 | s = (char*)gnt_util_onscreen_width_to_pointer(text, widget->priv.width - 4, &len); |
|
d974bd81de08
[gaim-migrate @ 17128]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14406
diff
changeset
|
91 | *s = '\0'; |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
92 | |
|
15647
60181abae898
Patch from Richard 'wabz' Nelson. This fixes some possible crashes/exploits.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
93 | mvwaddstr(widget->window, 1, 1, text); |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
94 | whline(widget->window, ' ' | gnt_color_pair(type), widget->priv.width - 4 - len); |
|
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
95 | mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
96 | mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
26650
cfa29f8cf9b7
Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
97 | wmove(widget->window, 1, 1); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
98 | |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
99 | g_free(text); |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
100 | GNTDEBUG; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
101 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
102 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
103 | static void |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
104 | gnt_combo_box_size_request(GntWidget *widget) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
105 | { |
|
14124
181ebb961493
[gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14109
diff
changeset
|
106 | if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED)) |
|
181ebb961493
[gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14109
diff
changeset
|
107 | { |
|
181ebb961493
[gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14109
diff
changeset
|
108 | GntWidget *dd = GNT_COMBO_BOX(widget)->dropdown; |
|
181ebb961493
[gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14109
diff
changeset
|
109 | gnt_widget_size_request(dd); |
|
181ebb961493
[gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14109
diff
changeset
|
110 | widget->priv.height = 3; /* For now, a combobox will have border */ |
|
18627
2a8c2d968eb4
Fix the initial size of a combobox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
111 | widget->priv.width = MAX(10, dd->priv.width + 2); |
|
14124
181ebb961493
[gaim-migrate @ 16681]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14109
diff
changeset
|
112 | } |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
113 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
114 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
115 | static void |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
116 | gnt_combo_box_map(GntWidget *widget) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
117 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
118 | if (widget->priv.width == 0 || widget->priv.height == 0) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
119 | gnt_widget_size_request(widget); |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
120 | GNTDEBUG; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
121 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
122 | |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
123 | static void |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
124 | popup_dropdown(GntComboBox *box) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
125 | { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
126 | GntWidget *widget = GNT_WIDGET(box); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
127 | GntWidget *parent = box->dropdown->parent; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
128 | int height = g_list_length(GNT_TREE(box->dropdown)->list); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
129 | int y = widget->priv.y + widget->priv.height - 1; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
130 | gnt_widget_set_size(box->dropdown, widget->priv.width, height + 2); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
131 | |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
132 | if (y + height + 2 >= getmaxy(stdscr)) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
133 | y = widget->priv.y - height - 1; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
134 | gnt_widget_set_position(parent, widget->priv.x, y); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
135 | if (parent->window) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
136 | { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
137 | mvwin(parent->window, y, widget->priv.x); |
|
14406
44eecc8a5b8b
[gaim-migrate @ 17046]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
138 | wresize(parent->window, height+2, widget->priv.width); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
139 | } |
| 14785 | 140 | parent->priv.width = widget->priv.width; |
| 141 | parent->priv.height = height + 2; | |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
142 | |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
143 | GNT_WIDGET_UNSET_FLAGS(parent, GNT_WIDGET_INVISIBLE); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
144 | gnt_widget_draw(parent); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
145 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
146 | |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
147 | static gboolean |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
148 | gnt_combo_box_key_pressed(GntWidget *widget, const char *text) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
149 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
150 | GntComboBox *box = GNT_COMBO_BOX(widget); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
151 | if (GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED)) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
152 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
153 | if (text[1] == 0) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
154 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
155 | switch (text[0]) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
156 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
157 | case '\r': |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
158 | case '\t': |
|
22421
ccddf3ffaf41
'\n' (ctrl-j) should behave similar to '\r' (ctrl-m). Fixes #4833.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
159 | case '\n': |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
160 | hide_popup(box, TRUE); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
161 | return TRUE; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
162 | case 27: |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
163 | hide_popup(box, FALSE); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
164 | return TRUE; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
165 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
166 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
167 | if (gnt_widget_key_pressed(box->dropdown, text)) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
168 | return TRUE; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
169 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
170 | else |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
171 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
172 | if (text[0] == 27) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
173 | { |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14785
diff
changeset
|
174 | if (strcmp(text, GNT_KEY_UP) == 0 || |
|
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14785
diff
changeset
|
175 | strcmp(text, GNT_KEY_DOWN) == 0) |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
176 | { |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
177 | popup_dropdown(box); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
178 | return TRUE; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
179 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
180 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
181 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
182 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
183 | return FALSE; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
184 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
185 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
186 | static void |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
187 | gnt_combo_box_destroy(GntWidget *widget) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
188 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
189 | gnt_widget_destroy(GNT_COMBO_BOX(widget)->dropdown->parent); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
190 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
191 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
192 | static void |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
193 | gnt_combo_box_lost_focus(GntWidget *widget) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
194 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
195 | GntComboBox *combo = GNT_COMBO_BOX(widget); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
196 | if (GNT_WIDGET_IS_FLAG_SET(combo->dropdown->parent, GNT_WIDGET_MAPPED)) |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
197 | hide_popup(combo, FALSE); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
198 | widget_lost_focus(widget); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
199 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
200 | |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
201 | static gboolean |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
202 | gnt_combo_box_clicked(GntWidget *widget, GntMouseEvent event, int x, int y) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
203 | { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
204 | GntComboBox *box = GNT_COMBO_BOX(widget); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
205 | gboolean dshowing = GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
206 | |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
207 | if (event == GNT_MOUSE_SCROLL_UP) { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
208 | if (dshowing) |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14785
diff
changeset
|
209 | gnt_widget_key_pressed(box->dropdown, GNT_KEY_UP); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
210 | } else if (event == GNT_MOUSE_SCROLL_DOWN) { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
211 | if (dshowing) |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14785
diff
changeset
|
212 | gnt_widget_key_pressed(box->dropdown, GNT_KEY_DOWN); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
213 | } else if (event == GNT_LEFT_MOUSE_DOWN) { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
214 | if (dshowing) { |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
215 | hide_popup(box, TRUE); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
216 | } else { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
217 | popup_dropdown(GNT_COMBO_BOX(widget)); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
218 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
219 | } else |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
220 | return FALSE; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
221 | return TRUE; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
222 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
223 | |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
224 | static void |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
225 | gnt_combo_box_size_changed(GntWidget *widget, int oldw, int oldh) |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
226 | { |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
227 | GntComboBox *box = GNT_COMBO_BOX(widget); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
228 | gnt_widget_set_size(box->dropdown, widget->priv.width - 1, box->dropdown->priv.height); |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
229 | } |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
230 | |
|
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
231 | static void |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
232 | gnt_combo_box_class_init(GntComboBoxClass *klass) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
233 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
234 | parent_class = GNT_WIDGET_CLASS(klass); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
235 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
236 | parent_class->destroy = gnt_combo_box_destroy; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
237 | parent_class->draw = gnt_combo_box_draw; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
238 | parent_class->map = gnt_combo_box_map; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
239 | parent_class->size_request = gnt_combo_box_size_request; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
240 | parent_class->key_pressed = gnt_combo_box_key_pressed; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14194
diff
changeset
|
241 | parent_class->clicked = gnt_combo_box_clicked; |
|
15803
4f04b9413b50
gntcombobox: lost_focus fix, tidy tree size
Richard Nelson <wabz@pidgin.im>
parents:
15647
diff
changeset
|
242 | parent_class->size_changed = gnt_combo_box_size_changed; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
243 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
244 | widget_lost_focus = parent_class->lost_focus; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
245 | parent_class->lost_focus = gnt_combo_box_lost_focus; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
246 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
247 | signals[SIG_SELECTION_CHANGED] = |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
248 | g_signal_new("selection-changed", |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
249 | G_TYPE_FROM_CLASS(klass), |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
250 | G_SIGNAL_RUN_LAST, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
251 | 0, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
252 | NULL, NULL, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
253 | gnt_closure_marshal_VOID__POINTER_POINTER, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
254 | G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
255 | |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
256 | GNTDEBUG; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
257 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
258 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
259 | static void |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
260 | gnt_combo_box_init(GTypeInstance *instance, gpointer class) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
261 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
262 | GntWidget *box; |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13998
diff
changeset
|
263 | GntWidget *widget = GNT_WIDGET(instance); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
264 | GntComboBox *combo = GNT_COMBO_BOX(instance); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
265 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
266 | GNT_WIDGET_SET_FLAGS(GNT_WIDGET(instance), |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
267 | GNT_WIDGET_GROW_X | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
268 | combo->dropdown = gnt_tree_new(); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
269 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
270 | box = gnt_box_new(FALSE, FALSE); |
|
14109
1af2b9d5ef3f
[gaim-migrate @ 16660]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14104
diff
changeset
|
271 | GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | GNT_WIDGET_TRANSIENT); |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
272 | gnt_box_set_pad(GNT_BOX(box), 0); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
273 | gnt_box_add_widget(GNT_BOX(box), combo->dropdown); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
274 | |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13998
diff
changeset
|
275 | widget->priv.minw = 4; |
|
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13998
diff
changeset
|
276 | widget->priv.minh = 3; |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14482
diff
changeset
|
277 | GNTDEBUG; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
278 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
279 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
280 | /****************************************************************************** |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
281 | * GntComboBox API |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
282 | *****************************************************************************/ |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
283 | GType |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
284 | gnt_combo_box_get_gtype(void) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
285 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
286 | static GType type = 0; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
287 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
288 | if(type == 0) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
289 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
290 | static const GTypeInfo info = { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
291 | sizeof(GntComboBoxClass), |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
292 | NULL, /* base_init */ |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
293 | NULL, /* base_finalize */ |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
294 | (GClassInitFunc)gnt_combo_box_class_init, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
295 | NULL, /* class_finalize */ |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
296 | NULL, /* class_data */ |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
297 | sizeof(GntComboBox), |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
298 | 0, /* n_preallocs */ |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
299 | gnt_combo_box_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:
15803
diff
changeset
|
300 | NULL /* value_table */ |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
301 | }; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
302 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
303 | type = g_type_register_static(GNT_TYPE_WIDGET, |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
304 | "GntComboBox", |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
305 | &info, 0); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
306 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
307 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
308 | return type; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
309 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
310 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
311 | GntWidget *gnt_combo_box_new() |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
312 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
313 | GntWidget *widget = g_object_new(GNT_TYPE_COMBO_BOX, NULL); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
314 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
315 | return widget; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
316 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
317 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
318 | void gnt_combo_box_add_data(GntComboBox *box, gpointer key, const char *text) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
319 | { |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
320 | gnt_tree_add_row_last(GNT_TREE(box->dropdown), key, |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
321 | gnt_tree_create_row(GNT_TREE(box->dropdown), text), NULL); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
322 | if (box->selected == NULL) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
323 | set_selection(box, key); |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
324 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
325 | |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
326 | gpointer gnt_combo_box_get_selected_data(GntComboBox *box) |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
327 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
328 | return box->selected; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
329 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
330 | |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
331 | void gnt_combo_box_set_selected(GntComboBox *box, gpointer key) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
332 | { |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
333 | set_selection(box, key); |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
334 | } |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
335 | |
|
14555
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
336 | void gnt_combo_box_remove(GntComboBox *box, gpointer key) |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
337 | { |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
338 | gnt_tree_remove(GNT_TREE(box->dropdown), key); |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
339 | if (box->selected == key) |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
340 | set_selection(box, NULL); |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
341 | } |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
342 | |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
343 | void gnt_combo_box_remove_all(GntComboBox *box) |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
344 | { |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
345 | gnt_tree_remove_all(GNT_TREE(box->dropdown)); |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
346 | set_selection(box, NULL); |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
347 | } |
|
0d6ef581e3ac
[gaim-migrate @ 17212]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
348 |