pidgin/gtkmenutray.c

Fri, 14 Sep 2007 17:55:05 +0000

author
Daniel Atallah <datallah@pidgin.im>
date
Fri, 14 Sep 2007 17:55:05 +0000
changeset 20073
dbea205441ea
parent 19859
71d37b57eff2
child 22851
543d5c1cd1f8
permissions
-rw-r--r--

Fix proxy settings to be loaded correctly when libpurple is initialized. This was broken because it relied on the prefs being loaded after proxy initialization so that the pref callbacks would be triggered and I changed the prefs loading to happen right at the beginning to fix other issues. Fixes #3092.

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
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
24 #include <gtk/gtkeventbox.h>
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
25 #include <gtk/gtkiconfactory.h>
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
26 #include <gtk/gtkversion.h>
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
27
11553
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 * Enums
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 enum {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 PROP_ZERO = 0,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 PROP_BOX
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
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 * Globals
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 static GObjectClass *parent_class = NULL;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40
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 * Internal Stuff
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
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 * Item Stuff
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
49 pidgin_menu_tray_select(GtkItem *item) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 /* this may look like nothing, but it's really overriding the
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 * GtkMenuItem's select function so that it doesn't get highlighted like
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 * a normal menu item would.
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 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
57 pidgin_menu_tray_deselect(GtkItem *item) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 /* 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
59 * overridding the select, so it makes sense to override deselect as well.
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
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 * Widget Stuff
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
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 * Object Stuff
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
71 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
72 GParamSpec *pspec)
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
74 PidginMenuTray *menu_tray = PIDGIN_MENU_TRAY(obj);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 switch(param_id) {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 case PROP_BOX:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
78 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
79 break;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 default:
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 break;
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 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
87 pidgin_menu_tray_finalize(GObject *obj) {
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
88 #if 0
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
89 /* 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
90 * getting destroyed in GtkContainer's finalize function. But if were are
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
91 * 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
92 * -- Gary
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
93 */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
94 PidginMenuTray *tray = PIDGIN_MENU_TRAY(obj);
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
95
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
96 if(GTK_IS_WIDGET(tray->tray))
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
97 gtk_widget_destroy(GTK_WIDGET(tray->tray));
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
98 #endif
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 G_OBJECT_CLASS(parent_class)->finalize(obj);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
104 pidgin_menu_tray_class_init(PidginMenuTrayClass *klass) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 GObjectClass *object_class = G_OBJECT_CLASS(klass);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 GtkItemClass *item_class = GTK_ITEM_CLASS(klass);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 GParamSpec *pspec;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 parent_class = g_type_class_peek_parent(klass);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
111 object_class->finalize = pidgin_menu_tray_finalize;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
112 object_class->get_property = pidgin_menu_tray_get_property;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
114 item_class->select = pidgin_menu_tray_select;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
115 item_class->deselect = pidgin_menu_tray_deselect;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 pspec = g_param_spec_object("box", "The box",
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 "The box",
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 GTK_TYPE_BOX,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 G_PARAM_READABLE);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 g_object_class_install_property(object_class, PROP_BOX, pspec);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
125 pidgin_menu_tray_init(PidginMenuTray *menu_tray) {
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
126 GtkWidget *widget = GTK_WIDGET(menu_tray);
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
127 #if GTK_CHECK_VERSION(2,2,0)
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
128 GtkSettings *settings;
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
129 #endif
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
130 gint height = -1;
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
131
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 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
133
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
134 if(!GTK_IS_WIDGET(menu_tray->tray))
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
135 menu_tray->tray = gtk_hbox_new(FALSE, 0);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
137 menu_tray->tooltips = gtk_tooltips_new();
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
138
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
139 #if GTK_CHECK_VERSION(2,2,0)
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
140 settings =
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
141 gtk_settings_get_for_screen(gtk_widget_get_screen(widget));
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
142
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
143 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
144 NULL, &height))
11888
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
145 #else
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
146 if(gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, NULL, &height))
525706b75438 [gaim-migrate @ 14179]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11787
diff changeset
147 #endif
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
148 {
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
149 gtk_widget_set_size_request(widget, -1, height);
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
150 }
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
151
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
152 gtk_container_add(GTK_CONTAINER(menu_tray), menu_tray->tray);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
154 gtk_widget_show(menu_tray->tray);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 * API
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 GType
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
161 pidgin_menu_tray_get_gtype(void) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 static GType type = 0;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 if(type == 0) {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 static const GTypeInfo info = {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
166 sizeof(PidginMenuTrayClass),
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 NULL,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 NULL,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
169 (GClassInitFunc)pidgin_menu_tray_class_init,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 NULL,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 NULL,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
172 sizeof(PidginMenuTray),
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 0,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
174 (GInstanceInitFunc)pidgin_menu_tray_init,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 NULL
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 };
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 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
179 "PidginMenuTray",
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 &info, 0);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 return type;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
187 pidgin_menu_tray_new() {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
188 return g_object_new(PIDGIN_TYPE_MENU_TRAY, NULL);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
192 pidgin_menu_tray_get_box(PidginMenuTray *menu_tray) {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
193 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
194 return menu_tray->tray;
11553
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
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
197 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
198 pidgin_menu_tray_add(PidginMenuTray *menu_tray, GtkWidget *widget,
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
199 const char *tooltip, gboolean prepend)
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
200 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
201 g_return_if_fail(PIDGIN_IS_MENU_TRAY(menu_tray));
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 g_return_if_fail(GTK_IS_WIDGET(widget));
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
204 if (GTK_WIDGET_NO_WINDOW(widget))
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
205 {
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
206 GtkWidget *event;
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
207
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
208 event = gtk_event_box_new();
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
209 gtk_container_add(GTK_CONTAINER(event), widget);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
210 gtk_widget_show(event);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
211 widget = event;
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
212 }
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
213
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
214 pidgin_menu_tray_set_tooltip(menu_tray, widget, tooltip);
12008
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 if (prepend)
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
217 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
218 else
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
219 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
220 }
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
221
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
222 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
223 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
224 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
225 pidgin_menu_tray_add(menu_tray, widget, tooltip, FALSE);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
229 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
230 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
231 pidgin_menu_tray_add(menu_tray, widget, tooltip, TRUE);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 }
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
233
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
234 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
235 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
236 {
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
237 if (!menu_tray->tooltips)
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
238 return;
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
239
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
240 /* 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
241
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
242 /*
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
243 * 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
244 * must have automatically been added to an event box
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
245 * 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
246 * 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
247 * not on the widget itself.
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
248 */
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
249 if (GTK_WIDGET_NO_WINDOW(widget))
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
250 widget = widget->parent;
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 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
253 }
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
254

mercurial