pidgin/eggtrayicon.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 20796
2d8f7517f6c4
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.

3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
2 /* eggtrayicon.c
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
3 * Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
4 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
9 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
13 * Lesser General Public License for more details.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
14 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
16 * License along with this library; if not, write to the
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18709
diff changeset
17 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18709
diff changeset
18 * Boston, MA 02111-1301, USA.
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
19 */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
20
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
21 #include <config.h>
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
22 #include <string.h>
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
23
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
24 #include "eggtrayicon.h"
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
25
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
26 #include <gdk/gdkx.h>
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
27 #include <X11/Xatom.h>
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
28
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
29 #define _(x) x
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
30 #define N_(x) x
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
31
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
32 #define SYSTEM_TRAY_REQUEST_DOCK 0
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
33 #define SYSTEM_TRAY_BEGIN_MESSAGE 1
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
34 #define SYSTEM_TRAY_CANCEL_MESSAGE 2
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
35
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
36 #define SYSTEM_TRAY_ORIENTATION_HORZ 0
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
37 #define SYSTEM_TRAY_ORIENTATION_VERT 1
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
38
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
39 enum {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
40 PROP_0,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
41 PROP_ORIENTATION
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
42 };
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
43
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
44 static GtkPlugClass *parent_class = NULL;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
45
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
46 static void egg_tray_icon_init (EggTrayIcon *icon);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
47 static void egg_tray_icon_class_init (EggTrayIconClass *klass);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
48
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
49 static void egg_tray_icon_get_property (GObject *object,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
50 guint prop_id,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
51 GValue *value,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
52 GParamSpec *pspec);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
53
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
54 static void egg_tray_icon_realize (GtkWidget *widget);
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
55 static void egg_tray_icon_unrealize (GtkWidget *widget);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
56
14231
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
57 static void egg_tray_icon_add (GtkContainer *container,
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
58 GtkWidget *widget);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
59
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
60 static void egg_tray_icon_update_manager_window (EggTrayIcon *icon,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
61 gboolean dock_if_realized);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
62 static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
63
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
64 GType
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
65 egg_tray_icon_get_type (void)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
66 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
67 static GType our_type = 0;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
68
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
69 if (our_type == 0)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
70 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
71 our_type = g_type_from_name("EggTrayIcon");
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
72
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
73 if (our_type == 0)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
74 {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
75 static const GTypeInfo our_info =
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
76 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
77 sizeof (EggTrayIconClass),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
78 (GBaseInitFunc) NULL,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
79 (GBaseFinalizeFunc) NULL,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
80 (GClassInitFunc) egg_tray_icon_class_init,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
81 NULL, /* class_finalize */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
82 NULL, /* class_data */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
83 sizeof (EggTrayIcon),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
84 0, /* n_preallocs */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 11291
diff changeset
85 (GInstanceInitFunc) egg_tray_icon_init,
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 11291
diff changeset
86 NULL /* value_table */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
87 };
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
88
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
89 our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0);
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
90 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
91 else if (parent_class == NULL)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
92 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
93 /* we're reheating the old class from a previous instance - engage ugly hack =( */
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
94 egg_tray_icon_class_init((EggTrayIconClass *)g_type_class_peek(our_type));
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
95 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
96 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
97
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
98 return our_type;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
99 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
100
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
101 static void
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
102 egg_tray_icon_init (EggTrayIcon *icon)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
103 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
104 icon->stamp = 1;
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
105 icon->orientation = GTK_ORIENTATION_HORIZONTAL;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
106
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
107 gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
108 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
109
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
110 static void
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
111 egg_tray_icon_class_init (EggTrayIconClass *klass)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
112 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
113 GObjectClass *gobject_class = (GObjectClass *)klass;
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
114 GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
14231
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
115 GtkContainerClass *container_class = (GtkContainerClass *)klass;
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
116
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
117 parent_class = g_type_class_peek_parent (klass);
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
118
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
119 gobject_class->get_property = egg_tray_icon_get_property;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
120
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
121 widget_class->realize = egg_tray_icon_realize;
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
122 widget_class->unrealize = egg_tray_icon_unrealize;
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
123
14231
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
124 container_class->add = egg_tray_icon_add;
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
125
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
126 g_object_class_install_property (gobject_class,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
127 PROP_ORIENTATION,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
128 g_param_spec_enum ("orientation",
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
129 _("Orientation"),
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
130 _("The orientation of the tray."),
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
131 GTK_TYPE_ORIENTATION,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
132 GTK_ORIENTATION_HORIZONTAL,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
133 G_PARAM_READABLE));
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
134 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
135
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
136 static void
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
137 egg_tray_icon_get_property (GObject *object,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
138 guint prop_id,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
139 GValue *value,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
140 GParamSpec *pspec)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
141 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
142 EggTrayIcon *icon = EGG_TRAY_ICON (object);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
143
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
144 switch (prop_id)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
145 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
146 case PROP_ORIENTATION:
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
147 g_value_set_enum (value, icon->orientation);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
148 break;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
149 default:
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
150 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
151 break;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
152 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
153 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
154
18346
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
155 static Display *
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
156 egg_tray_icon_get_x_display(EggTrayIcon *icon)
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
157 {
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
158 Display *xdisplay = NULL;
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
159
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
160 #if GTK_CHECK_VERSION(2,1,0)
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
161 {
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
162 GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (icon));
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
163 if (!GDK_IS_DISPLAY (display))
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
164 display = gdk_display_get_default ();
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
165
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
166 xdisplay = GDK_DISPLAY_XDISPLAY (display);
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
167 }
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
168 #else
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
169 xdisplay = gdk_display;
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
170 #endif
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
171
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
172 return xdisplay;
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
173 }
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
174
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
175 static void
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
176 egg_tray_icon_get_orientation_property (EggTrayIcon *icon)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
177 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
178 Display *xdisplay;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
179 Atom type;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
180 int format;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
181 union {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
182 gulong *prop;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
183 guchar *prop_ch;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
184 } prop = { NULL };
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
185 gulong nitems;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
186 gulong bytes_after;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
187 int error, result;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
188
11291
5441d2419942 [gaim-migrate @ 13491]
Mark Doliner <markdoliner@pidgin.im>
parents: 10779
diff changeset
189 g_return_if_fail(icon->manager_window != None);
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
190
18346
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
191 xdisplay = egg_tray_icon_get_x_display(icon);
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
192
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
193 if (xdisplay == NULL)
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
194 return;
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
195
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
196 gdk_error_trap_push ();
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
197 type = None;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
198 result = XGetWindowProperty (xdisplay,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
199 icon->manager_window,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
200 icon->orientation_atom,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
201 0, G_MAXLONG, FALSE,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
202 XA_CARDINAL,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
203 &type, &format, &nitems,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
204 &bytes_after, &(prop.prop_ch));
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
205 error = gdk_error_trap_pop ();
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
206
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
207 if (error || result != Success)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
208 return;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
209
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
210 if (type == XA_CARDINAL)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
211 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
212 GtkOrientation orientation;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
213
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
214 orientation = (prop.prop [0] == SYSTEM_TRAY_ORIENTATION_HORZ) ?
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
215 GTK_ORIENTATION_HORIZONTAL :
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
216 GTK_ORIENTATION_VERTICAL;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
217
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
218 if (icon->orientation != orientation)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
219 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
220 icon->orientation = orientation;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
221
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
222 g_object_notify (G_OBJECT (icon), "orientation");
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
223 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
224 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
225
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
226 if (prop.prop)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
227 XFree (prop.prop);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
228 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
229
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
230 static GdkFilterReturn
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
231 egg_tray_icon_manager_filter (GdkXEvent *xevent, GdkEvent *event, gpointer user_data)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
232 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
233 EggTrayIcon *icon = user_data;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
234 XEvent *xev = (XEvent *)xevent;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
235
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
236 if (xev->xany.type == ClientMessage &&
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
237 xev->xclient.message_type == icon->manager_atom &&
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
238 xev->xclient.data.l[1] == icon->selection_atom)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
239 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
240 egg_tray_icon_update_manager_window (icon, TRUE);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
241 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
242 else if (xev->xany.window == icon->manager_window)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
243 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
244 if (xev->xany.type == PropertyNotify &&
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
245 xev->xproperty.atom == icon->orientation_atom)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
246 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
247 egg_tray_icon_get_orientation_property (icon);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
248 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
249 if (xev->xany.type == DestroyNotify)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
250 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
251 egg_tray_icon_manager_window_destroyed (icon);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
252 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
253 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
254
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
255 return GDK_FILTER_CONTINUE;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
256 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
257
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
258 static void
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
259 egg_tray_icon_unrealize (GtkWidget *widget)
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
260 {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
261 EggTrayIcon *icon = EGG_TRAY_ICON (widget);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
262 GdkWindow *root_window;
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
263
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
264 if (icon->manager_window != None)
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
265 {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
266 GdkWindow *gdkwin;
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
267
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
268 #if GTK_CHECK_VERSION(2,1,0)
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
269 gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (widget),
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
270 icon->manager_window);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
271 #else
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
272 gdkwin = gdk_window_lookup (icon->manager_window);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
273 #endif
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
274
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
275 gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
276 }
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
277
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
278 #if GTK_CHECK_VERSION(2,1,0)
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
279 root_window = gdk_screen_get_root_window (gtk_widget_get_screen (widget));
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
280 #else
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
281 root_window = gdk_window_lookup (gdk_x11_get_default_root_xwindow ());
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
282 #endif
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
283
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
284 gdk_window_remove_filter (root_window, egg_tray_icon_manager_filter, icon);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
285
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
286 if (GTK_WIDGET_CLASS (parent_class)->unrealize)
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
287 (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
288 }
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
289
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 3510
diff changeset
290 static void
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
291 egg_tray_icon_send_manager_message (EggTrayIcon *icon,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
292 long message,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
293 Window window,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
294 long data1,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
295 long data2,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
296 long data3)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
297 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
298 XClientMessageEvent ev;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
299 Display *display;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
300
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
301 ev.type = ClientMessage;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
302 ev.window = window;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
303 ev.message_type = icon->system_tray_opcode_atom;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
304 ev.format = 32;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
305 ev.data.l[0] = gdk_x11_get_server_time (GTK_WIDGET (icon)->window);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
306 ev.data.l[1] = message;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
307 ev.data.l[2] = data1;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
308 ev.data.l[3] = data2;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
309 ev.data.l[4] = data3;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
310
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
311 #if GTK_CHECK_VERSION(2,1,0)
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
312 display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
313 #else
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
314 display = gdk_display;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
315 #endif
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
316
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
317 gdk_error_trap_push ();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
318 XSendEvent (display,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
319 icon->manager_window, False, NoEventMask, (XEvent *)&ev);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
320 XSync (display, False);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
321 gdk_error_trap_pop ();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
322 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
323
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
324 static void
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
325 egg_tray_icon_send_dock_request (EggTrayIcon *icon)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
326 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
327 egg_tray_icon_send_manager_message (icon,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
328 SYSTEM_TRAY_REQUEST_DOCK,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
329 icon->manager_window,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
330 gtk_plug_get_id (GTK_PLUG (icon)),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
331 0, 0);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
332 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
333
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
334 static void
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
335 egg_tray_icon_update_manager_window (EggTrayIcon *icon,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
336 gboolean dock_if_realized)
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
337 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
338 Display *xdisplay;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
339
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
340 if (icon->manager_window != None)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
341 return;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
342
18346
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
343 xdisplay = egg_tray_icon_get_x_display(icon);
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
344
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
345 if (xdisplay == NULL)
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
346 return;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
347
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
348 XGrabServer (xdisplay);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
349
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
350 icon->manager_window = XGetSelectionOwner (xdisplay,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
351 icon->selection_atom);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
352
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
353 if (icon->manager_window != None)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
354 XSelectInput (xdisplay,
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
355 icon->manager_window, StructureNotifyMask|PropertyChangeMask);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
356
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
357 XUngrabServer (xdisplay);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
358 XFlush (xdisplay);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
359
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
360 if (icon->manager_window != None)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
361 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
362 GdkWindow *gdkwin;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
363
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
364 #if GTK_CHECK_VERSION(2,1,0)
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
365 gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
366 icon->manager_window);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
367 #else
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
368 gdkwin = gdk_window_lookup (icon->manager_window);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
369 #endif
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
370
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
371 gdk_window_add_filter (gdkwin, egg_tray_icon_manager_filter, icon);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
372
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
373 if (dock_if_realized && GTK_WIDGET_REALIZED (icon))
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
374 egg_tray_icon_send_dock_request (icon);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
375
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
376 egg_tray_icon_get_orientation_property (icon);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
377 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
378 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
379
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
380 static void
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
381 egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
382 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
383 GdkWindow *gdkwin;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
384
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
385 g_return_if_fail (icon->manager_window != None);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
386
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
387 #if GTK_CHECK_VERSION(2,1,0)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
388 gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
389 icon->manager_window);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
390 #else
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
391 gdkwin = gdk_window_lookup (icon->manager_window);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
392 #endif
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
393
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
394 gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
395
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
396 icon->manager_window = None;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
397
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
398 egg_tray_icon_update_manager_window (icon, TRUE);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
399 }
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
400
14231
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
401 static gboolean
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
402 transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
403 {
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
404 gdk_window_clear_area (widget->window, event->area.x, event->area.y,
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
405 event->area.width, event->area.height);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
406 return FALSE;
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
407 }
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
408
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
409 static void
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
410 make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
411 gpointer user_data)
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
412 {
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
413 gdk_window_set_back_pixmap(widget->window, NULL, TRUE);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
414 }
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
415
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
416 static void
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
417 make_transparent (GtkWidget *widget, gpointer user_data)
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
418 {
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
419 if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
420 return;
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
421
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
422 gtk_widget_set_app_paintable (widget, TRUE);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
423 gtk_widget_set_double_buffered (widget, FALSE);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
424 gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
425 g_signal_connect (widget, "expose_event",
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
426 G_CALLBACK (transparent_expose_event), NULL);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
427 g_signal_connect_after (widget, "style_set",
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
428 G_CALLBACK (make_transparent_again), NULL);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
429 }
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
430
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
431 static void
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
432 egg_tray_icon_realize (GtkWidget *widget)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
433 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
434 EggTrayIcon *icon = EGG_TRAY_ICON (widget);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
435 gint screen;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
436 Display *xdisplay;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
437 char buffer[256];
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
438 GdkWindow *root_window;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
439
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
440 if (GTK_WIDGET_CLASS (parent_class)->realize)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
441 GTK_WIDGET_CLASS (parent_class)->realize (widget);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
442
14231
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
443 make_transparent (widget, NULL);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
444
18346
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
445 xdisplay = egg_tray_icon_get_x_display(icon);
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
446
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
447 if (xdisplay == NULL)
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
448 return;
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
449
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
450 #if GTK_CHECK_VERSION(2,1,0)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
451 screen = gdk_screen_get_number (gtk_widget_get_screen (widget));
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
452 #else
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
453 screen = XScreenNumberOfScreen (DefaultScreenOfDisplay (gdk_display));
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
454 #endif
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
455
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
456 /* Now see if there's a manager window around */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
457 g_snprintf (buffer, sizeof (buffer),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
458 "_NET_SYSTEM_TRAY_S%d",
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
459 screen);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
460
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
461 icon->selection_atom = XInternAtom (xdisplay, buffer, False);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
462
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
463 icon->manager_atom = XInternAtom (xdisplay, "MANAGER", False);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
464
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
465 icon->system_tray_opcode_atom = XInternAtom (xdisplay,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
466 "_NET_SYSTEM_TRAY_OPCODE",
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
467 False);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
468
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
469 icon->orientation_atom = XInternAtom (xdisplay,
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
470 "_NET_SYSTEM_TRAY_ORIENTATION",
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
471 False);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
472
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
473 egg_tray_icon_update_manager_window (icon, FALSE);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
474 egg_tray_icon_send_dock_request (icon);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
475
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
476 #if GTK_CHECK_VERSION(2,1,0)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
477 root_window = gdk_screen_get_root_window (gtk_widget_get_screen (widget));
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
478 #else
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
479 root_window = gdk_window_lookup (gdk_x11_get_default_root_xwindow ());
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
480 #endif
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
481
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
482 /* Add a root window filter so that we get changes on MANAGER */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
483 gdk_window_add_filter (root_window,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
484 egg_tray_icon_manager_filter, icon);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
485 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
486
14231
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
487 static void
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
488 egg_tray_icon_add (GtkContainer *container, GtkWidget *widget)
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
489 {
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
490 g_signal_connect (widget, "realize",
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
491 G_CALLBACK (make_transparent), NULL);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
492 GTK_CONTAINER_CLASS (parent_class)->add (container, widget);
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
493 }
bdae40bccd7f [gaim-migrate @ 16819]
Dan Winship
parents: 12600
diff changeset
494
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
495 #if GTK_CHECK_VERSION(2,1,0)
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
496 EggTrayIcon *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
497 egg_tray_icon_new_for_screen (GdkScreen *screen, const char *name)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
498 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
499 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
500
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
501 return g_object_new (EGG_TYPE_TRAY_ICON, "screen", screen, "title", name, NULL);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
502 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
503 #endif
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
504
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
505 EggTrayIcon*
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
506 egg_tray_icon_new (const gchar *name)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
507 {
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
508 return g_object_new (EGG_TYPE_TRAY_ICON, "title", name, NULL);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
509 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
511 guint
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
512 egg_tray_icon_send_message (EggTrayIcon *icon,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
513 gint timeout,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
514 const gchar *message,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
515 gint len)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
516 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
517 guint stamp;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
518
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
519 g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), 0);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
520 g_return_val_if_fail (timeout >= 0, 0);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
521 g_return_val_if_fail (message != NULL, 0);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
522
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
523 if (icon->manager_window == None)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
524 return 0;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
525
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
526 if (len < 0)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
527 len = strlen (message);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
528
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
529 stamp = icon->stamp++;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
530
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
531 /* Get ready to send the message */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
532 egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
533 (Window)gtk_plug_get_id (GTK_PLUG (icon)),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
534 timeout, len, stamp);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
535
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
536 /* Now to send the actual message */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
537 gdk_error_trap_push ();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
538 while (len > 0)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
539 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
540 XClientMessageEvent ev;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
541 Display *xdisplay;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
542
18346
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
543 xdisplay = egg_tray_icon_get_x_display(icon);
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
544
8a6dfdd516d4 Guard against passing NULL to GDK_DISPLAY_XDISPLAY. This resolves a crash
Casey Harkins <charkins@pidgin.im>
parents: 15435
diff changeset
545 if (xdisplay == NULL)
18709
e93e7776283e Return 0 to silence the following warning
Mark Doliner <markdoliner@pidgin.im>
parents: 18346
diff changeset
546 return 0;
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
547
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
548 ev.type = ClientMessage;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
549 ev.window = (Window)gtk_plug_get_id (GTK_PLUG (icon));
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
550 ev.format = 8;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
551 ev.message_type = XInternAtom (xdisplay,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
552 "_NET_SYSTEM_TRAY_MESSAGE_DATA", False);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
553 if (len > 20)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
554 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
555 memcpy (&ev.data, message, 20);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
556 len -= 20;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
557 message += 20;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
558 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
559 else
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
560 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
561 memcpy (&ev.data, message, len);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
562 len = 0;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
563 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
564
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
565 XSendEvent (xdisplay,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
566 icon->manager_window, False, StructureNotifyMask, (XEvent *)&ev);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
567 XSync (xdisplay, False);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
568 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
569 gdk_error_trap_pop ();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
570
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
571 return stamp;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
572 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
573
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
574 void
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
575 egg_tray_icon_cancel_message (EggTrayIcon *icon,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
576 guint id)
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
577 {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
578 g_return_if_fail (EGG_IS_TRAY_ICON (icon));
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
579 g_return_if_fail (id > 0);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
580
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
581 egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE,
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
582 (Window)gtk_plug_get_id (GTK_PLUG (icon)),
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
583 id, 0, 0);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
584 }
10779
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
585
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
586 GtkOrientation
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
587 egg_tray_icon_get_orientation (EggTrayIcon *icon)
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
588 {
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
589 g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), GTK_ORIENTATION_HORIZONTAL);
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
590
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
591 return icon->orientation;
553d127bb300 [gaim-migrate @ 12402]
Luke Schierer <lschiere@pidgin.im>
parents: 8735
diff changeset
592 }

mercurial