pidgin/gtkmenutray.c

Thu, 29 Jun 2017 15:33:29 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Thu, 29 Jun 2017 15:33:29 -0500
changeset 38578
c81f0a8301fe
parent 37422
07dcc28b6039
child 40195
fb4b0ae193c0
permissions
-rw-r--r--

gtkidle: Port XScreensaver to DBus ScreenSaver interfaces

Modern Linux desktops use one of 3 DBus interfaces for querying if
the screensaver is currently active. There's a FreeDesktop one, a
GNOME one, and a KDE one. Rather than querying XScreensaver, which
may not be available, such as with Wayland, this patch ports Pidgin's
idle checking function to use these modern DBus interfaces.

Because Gio includes built-in DBus API, this patch also drops the
guards around pidgin_get_time_idle(), which also re-enables the
Win32 code which wasn't enabled with the previous guards.

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 */
33759
20349cbb57a0 Fix a linker error when building with gtk3. Specifically:
Mark Doliner <mark@kingant.net>
parents: 33683
diff changeset
20 #include "internal.h"
20349cbb57a0 Fix a linker error when building with gtk3. Specifically:
Mark Doliner <mark@kingant.net>
parents: 33683
diff changeset
21
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
22 #include "debug.h"
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
23
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include "gtkmenutray.h"
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25
35533
8ca83abbc248 Fix some crashes and bugs introduced by recent deprecation fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35532
diff changeset
26 #include "glibcompat.h"
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33167
diff changeset
27 #include "gtk3compat.h"
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33167
diff changeset
28
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 * Enums
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 enum {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 PROP_ZERO = 0,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 PROP_BOX
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 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 * Globals
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 static GObjectClass *parent_class = NULL;
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
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32375
diff changeset
49 pidgin_menu_tray_select(GtkMenuItem *widget) {
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
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32375
diff changeset
57 pidgin_menu_tray_deselect(GtkMenuItem *widget) {
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 * Object 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 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
67 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
68 GParamSpec *pspec)
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
70 PidginMenuTray *menu_tray = PIDGIN_MENU_TRAY(obj);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 switch(param_id) {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 case PROP_BOX:
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
74 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
75 break;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 default:
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 break;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 }
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 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
83 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
84 {
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
85 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
86 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
87 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
88 }
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
89
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
90 static void
23187
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
91 pidgin_menu_tray_finalize(GObject *obj)
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
92 {
33114
142968b1ac07 Hide tooltips field from PidginMenuTray.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32913
diff changeset
93 #if 0
23187
671e00775afb *** Plucked rev 69b22e32f7ada182101e0746f02891389ceb0c52 (sadrul@pidgin.im):
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22851
diff changeset
94 PidginMenuTray *tray = PIDGIN_MENU_TRAY(obj);
33114
142968b1ac07 Hide tooltips field from PidginMenuTray.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32913
diff changeset
95
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
96 /* 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
97 * getting destroyed in GtkContainer's finalize function. But if were are
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
98 * 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
99 * -- Gary
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
100 */
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
101
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
102 if(GTK_IS_WIDGET(tray->tray))
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
103 gtk_widget_destroy(GTK_WIDGET(tray->tray));
11599
431352c132c8 [gaim-migrate @ 13869]
Gary Kramlich <grim@reaperworld.com>
parents: 11558
diff changeset
104 #endif
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 G_OBJECT_CLASS(parent_class)->finalize(obj);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 }
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 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
110 pidgin_menu_tray_class_init(PidginMenuTrayClass *klass) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 GObjectClass *object_class = G_OBJECT_CLASS(klass);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32375
diff changeset
112 GtkMenuItemClass *menu_item_class = GTK_MENU_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
113 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 GParamSpec *pspec;
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 parent_class = g_type_class_peek_parent(klass);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
118 object_class->finalize = pidgin_menu_tray_finalize;
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
119 object_class->get_property = pidgin_menu_tray_get_property;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32375
diff changeset
121 menu_item_class->select = pidgin_menu_tray_select;
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32375
diff changeset
122 menu_item_class->deselect = pidgin_menu_tray_deselect;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123
24327
2c0e33b2dc94 Change some menutray internals. This makes the tray-icons behave better.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23188
diff changeset
124 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
125
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 pspec = g_param_spec_object("box", "The box",
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 "The box",
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 GTK_TYPE_BOX,
35060
195dbb3b6432 pidgin: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35019
diff changeset
129 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 g_object_class_install_property(object_class, PROP_BOX, pspec);
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
134 pidgin_menu_tray_init(PidginMenuTray *menu_tray) {
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
135 GtkWidget *widget = GTK_WIDGET(menu_tray);
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
136 GtkSettings *settings;
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
137 gint height = -1;
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
138
35533
8ca83abbc248 Fix some crashes and bugs introduced by recent deprecation fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35532
diff changeset
139 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
8ca83abbc248 Fix some crashes and bugs introduced by recent deprecation fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35532
diff changeset
140 /* Gtk3 docs says, it should be replaced with gtk_widget_set_hexpand and
8ca83abbc248 Fix some crashes and bugs introduced by recent deprecation fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35532
diff changeset
141 * gtk_widget_set_halign. But it doesn't seems to work. */
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 gtk_menu_item_set_right_justified(GTK_MENU_ITEM(menu_tray), TRUE);
35533
8ca83abbc248 Fix some crashes and bugs introduced by recent deprecation fixes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35532
diff changeset
143 G_GNUC_END_IGNORE_DEPRECATIONS
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
144
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
145 if(!GTK_IS_WIDGET(menu_tray->tray))
35527
707c3c2b2c8a Fix more gtk_[hv]box_new gtk3 deprecation warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35060
diff changeset
146 menu_tray->tray = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
11787
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
148 settings =
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
149 gtk_settings_get_for_screen(gtk_widget_get_screen(widget));
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 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
152 NULL, &height))
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
153 {
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
154 gtk_widget_set_size_request(widget, -1, height);
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
155 }
fb0c7b22368d [gaim-migrate @ 14078]
Gary Kramlich <grim@reaperworld.com>
parents: 11599
diff changeset
156
11558
06d3ac66e65a [gaim-migrate @ 13820]
Sean Egan <seanegan@pidgin.im>
parents: 11553
diff changeset
157 gtk_widget_show(menu_tray->tray);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 }
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 /******************************************************************************
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 * API
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 *****************************************************************************/
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 GType
35019
b6a724b4cdfb Renamed pidgin_menu_tray_get_gtype to pidgin_menu_tray_get_type so that gtk-doc can find it
Ankit Vani <a@nevitus.org>
parents: 33759
diff changeset
164 pidgin_menu_tray_get_type(void) {
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 static GType type = 0;
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 if(type == 0) {
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 static const GTypeInfo info = {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
169 sizeof(PidginMenuTrayClass),
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 (GClassInitFunc)pidgin_menu_tray_class_init,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 NULL,
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 NULL,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
175 sizeof(PidginMenuTray),
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 0,
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
177 (GInstanceInitFunc)pidgin_menu_tray_init,
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 NULL
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 };
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 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
182 "PidginMenuTray",
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 &info, 0);
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 return type;
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
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
190 pidgin_menu_tray_new() {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
191 return g_object_new(PIDGIN_TYPE_MENU_TRAY, NULL);
11553
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
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
195 pidgin_menu_tray_get_box(PidginMenuTray *menu_tray) {
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
196 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
197 return menu_tray->tray;
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
200 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
201 pidgin_menu_tray_add(PidginMenuTray *menu_tray, GtkWidget *widget,
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
202 const char *tooltip, gboolean prepend)
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
203 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
204 g_return_if_fail(PIDGIN_IS_MENU_TRAY(menu_tray));
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 g_return_if_fail(GTK_IS_WIDGET(widget));
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206
32913
af2c726febce Fix all deprecated GTK_WIDGET_* macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32906
diff changeset
207 if (!gtk_widget_get_has_window(widget))
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
208 {
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
209 GtkWidget *event;
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
210
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
211 event = gtk_event_box_new();
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
212 gtk_container_add(GTK_CONTAINER(event), widget);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
213 gtk_widget_show(event);
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
214 widget = event;
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
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
217 pidgin_menu_tray_set_tooltip(menu_tray, widget, tooltip);
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
218
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
219 if (prepend)
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
220 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
221 else
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
222 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
223 }
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
224
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
225 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
226 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
227 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
228 pidgin_menu_tray_add(menu_tray, widget, tooltip, FALSE);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229 }
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
232 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
233 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
234 pidgin_menu_tray_add(menu_tray, widget, tooltip, TRUE);
11553
473bd98f493b [gaim-migrate @ 13813]
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 }
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 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
238 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
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 /*
26929
2a8ade936729 Replace GtkTooltips code with GtkTooltip on GTK+ 2.12+.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26727
diff changeset
243 * If the widget does not have its own window, then it
12008
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 */
32913
af2c726febce Fix all deprecated GTK_WIDGET_* macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32906
diff changeset
249 if (!gtk_widget_get_has_window(widget))
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32375
diff changeset
250 widget = gtk_widget_get_parent(widget);
12008
df998b18ec60 [gaim-migrate @ 14301]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11908
diff changeset
251
26929
2a8ade936729 Replace GtkTooltips code with GtkTooltip on GTK+ 2.12+.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26727
diff changeset
252 gtk_widget_set_tooltip_text(widget, tooltip);
11908
ad9c7ca74793 [gaim-migrate @ 14199]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11888
diff changeset
253 }

mercurial