pidgin/gtkmenutray.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26727
b8885bab55ab
child 26929
2a8ade936729
child 29500
1e0464dad92b
permissions
-rw-r--r--

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.

11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
2 * Pidgin is the legal property of its developers, whose names are too numerous
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * to list here. Please refer to the COPYRIGHT file distributed with this
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 * source distribution.
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 *
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * under the terms of the GNU General Public License as published by
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * (at your option) any later version.
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 *
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * GNU General Public License for more details.
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 *
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * 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: 15931
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 */
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
20 #include "debug.h"
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
21
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 #include "gtkmenutray.h"
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23
26727
b8885bab55ab More updates for GTK+ 3.0. This only fixes the single-includes. Fixing all
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24327
diff changeset
24 #include <gtk/gtk.h>
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
25
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 * Enums
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 enum {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 PROP_ZERO = 0,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 PROP_BOX
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 };
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 * Globals
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 static GObjectClass *parent_class = NULL;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 * Internal Stuff
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 * Item Stuff
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
47 pidgin_menu_tray_select(GtkItem *item) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 /* this may look like nothing, but it's really overriding the
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 * GtkMenuItem's select function so that it doesn't get highlighted like
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 * a normal menu item would.
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 */
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
55 pidgin_menu_tray_deselect(GtkItem *item) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 /* Probably not necessary, but I'd rather be safe than sorry. We're
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 * overridding the select, so it makes sense to override deselect as well.
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 */
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 * Widget Stuff
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 * Object Stuff
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
69 pidgin_menu_tray_get_property(GObject *obj, guint param_id, GValue *value,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 GParamSpec *pspec)
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
72 PidginMenuTray *menu_tray = PIDGIN_MENU_TRAY(obj);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 switch(param_id) {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 case PROP_BOX:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
76 g_value_set_object(value, pidgin_menu_tray_get_box(menu_tray));
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 break;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 default:
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 break;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 static void
24327
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
85 pidgin_menu_tray_map(GtkWidget *widget)
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
86 {
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
87 GTK_WIDGET_CLASS(parent_class)->map(widget);
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
88 gtk_container_add(GTK_CONTAINER(widget),
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
89 PIDGIN_MENU_TRAY(widget)->tray);
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
90 }
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
91
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
92 static void
23187
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
93 pidgin_menu_tray_finalize(GObject *obj)
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
94 {
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
95 PidginMenuTray *tray = PIDGIN_MENU_TRAY(obj);
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
96 #if 0
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
97 /* This _might_ be leaking, but I have a sneaking suspicion that the widget is
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
98 * getting destroyed in GtkContainer's finalize function. But if were are
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
99 * leaking here, be sure to figure out why this causes a crash.
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
100 * -- Gary
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
101 */
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
102
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
103 if(GTK_IS_WIDGET(tray->tray))
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
104 gtk_widget_destroy(GTK_WIDGET(tray->tray));
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
105 #endif
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106
23188
eab7aad90c95 *** Plucked rev 1dc65a60 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23187
diff changeset
107 if (tray->tooltips) {
eab7aad90c95 *** Plucked rev 1dc65a60 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23187
diff changeset
108 gtk_object_sink(GTK_OBJECT(tray->tooltips));
eab7aad90c95 *** Plucked rev 1dc65a60 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23187
diff changeset
109 }
23187
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
110
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 G_OBJECT_CLASS(parent_class)->finalize(obj);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
115 pidgin_menu_tray_class_init(PidginMenuTrayClass *klass) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 GObjectClass *object_class = G_OBJECT_CLASS(klass);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 GtkItemClass *item_class = GTK_ITEM_CLASS(klass);
24327
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
118 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 GParamSpec *pspec;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 parent_class = g_type_class_peek_parent(klass);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
123 object_class->finalize = pidgin_menu_tray_finalize;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
124 object_class->get_property = pidgin_menu_tray_get_property;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
126 item_class->select = pidgin_menu_tray_select;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
127 item_class->deselect = pidgin_menu_tray_deselect;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128
24327
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
129 widget_class->map = pidgin_menu_tray_map;
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
130
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 pspec = g_param_spec_object("box", "The box",
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 "The box",
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 GTK_TYPE_BOX,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 G_PARAM_READABLE);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 g_object_class_install_property(object_class, PROP_BOX, pspec);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
139 pidgin_menu_tray_init(PidginMenuTray *menu_tray) {
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
140 GtkWidget *widget = GTK_WIDGET(menu_tray);
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
141 #if GTK_CHECK_VERSION(2,2,0)
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
142 GtkSettings *settings;
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
143 #endif
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
144 gint height = -1;
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
145
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 gtk_menu_item_set_right_justified(GTK_MENU_ITEM(menu_tray), TRUE);
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
147
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
148 if(!GTK_IS_WIDGET(menu_tray->tray))
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
149 menu_tray->tray = gtk_hbox_new(FALSE, 0);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
151 #if GTK_CHECK_VERSION(2,2,0)
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
152 settings =
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
153 gtk_settings_get_for_screen(gtk_widget_get_screen(widget));
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
154
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
155 if(gtk_icon_size_lookup_for_settings(settings, GTK_ICON_SIZE_MENU,
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
156 NULL, &height))
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
157 #else
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
158 if(gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, NULL, &height))
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
159 #endif
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
160 {
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
161 gtk_widget_set_size_request(widget, -1, height);
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
162 }
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
163
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
164 gtk_widget_show(menu_tray->tray);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 * API
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 GType
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
171 pidgin_menu_tray_get_gtype(void) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 static GType type = 0;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 if(type == 0) {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 static const GTypeInfo info = {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
176 sizeof(PidginMenuTrayClass),
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 NULL,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 NULL,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
179 (GClassInitFunc)pidgin_menu_tray_class_init,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 NULL,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 NULL,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
182 sizeof(PidginMenuTray),
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 0,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
184 (GInstanceInitFunc)pidgin_menu_tray_init,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 NULL
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 };
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 type = g_type_register_static(GTK_TYPE_MENU_ITEM,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
189 "PidginMenuTray",
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 &info, 0);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 return type;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
197 pidgin_menu_tray_new() {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
198 return g_object_new(PIDGIN_TYPE_MENU_TRAY, NULL);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
202 pidgin_menu_tray_get_box(PidginMenuTray *menu_tray) {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
203 g_return_val_if_fail(PIDGIN_IS_MENU_TRAY(menu_tray), NULL);
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
204 return menu_tray->tray;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
207 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
208 pidgin_menu_tray_add(PidginMenuTray *menu_tray, GtkWidget *widget,
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
209 const char *tooltip, gboolean prepend)
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
210 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
211 g_return_if_fail(PIDGIN_IS_MENU_TRAY(menu_tray));
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 g_return_if_fail(GTK_IS_WIDGET(widget));
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
214 if (GTK_WIDGET_NO_WINDOW(widget))
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
215 {
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
216 GtkWidget *event;
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
217
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
218 event = gtk_event_box_new();
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
219 gtk_container_add(GTK_CONTAINER(event), widget);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
220 gtk_widget_show(event);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
221 widget = event;
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
222 }
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
223
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
224 pidgin_menu_tray_set_tooltip(menu_tray, widget, tooltip);
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
225
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
226 if (prepend)
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
227 gtk_box_pack_start(GTK_BOX(menu_tray->tray), widget, FALSE, FALSE, 0);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
228 else
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
229 gtk_box_pack_end(GTK_BOX(menu_tray->tray), widget, FALSE, FALSE, 0);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
230 }
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
231
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
232 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
233 pidgin_menu_tray_append(PidginMenuTray *menu_tray, GtkWidget *widget, const char *tooltip)
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
234 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
235 pidgin_menu_tray_add(menu_tray, widget, tooltip, FALSE);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
239 pidgin_menu_tray_prepend(PidginMenuTray *menu_tray, GtkWidget *widget, const char *tooltip)
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
240 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
241 pidgin_menu_tray_add(menu_tray, widget, tooltip, TRUE);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 }
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
243
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
244 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
245 pidgin_menu_tray_set_tooltip(PidginMenuTray *menu_tray, GtkWidget *widget, const char *tooltip)
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
246 {
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
247 if (!menu_tray->tooltips)
22851
543d5c1cd1f8 Leak fix
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 19859
diff changeset
248 menu_tray->tooltips = gtk_tooltips_new();
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
249
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
250 /* Should we check whether widget is a child of menu_tray? */
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
251
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
252 /*
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
253 * If the widget does not have it's own window, then it
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
254 * must have automatically been added to an event box
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
255 * when it was added to the menu tray. If this is the
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
256 * case, we want to set the tooltip on the widget's parent,
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
257 * not on the widget itself.
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
258 */
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
259 if (GTK_WIDGET_NO_WINDOW(widget))
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
260 widget = widget->parent;
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
261
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
262 gtk_tooltips_set_tip(menu_tray->tooltips, widget, tooltip, NULL);
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
263 }
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
264

mercurial