Mercurial > pidgin
annotate plugins/docklet/trayicon-x11.c @ 6138:1894de5f7fbd
[gaim-migrate @ 6612]
make the docklet do the right thing when the accounts menu item is clicked
thanks chickenboycole
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Tue, 15 Jul 2003 14:20:13 +0000 |
| parents | 29ddc42ff402 |
| children |
| rev | line source |
|---|---|
| 6104 | 1 /* |
| 2 * System tray icon (aka docklet) plugin for Gaim | |
| 3 * | |
|
6077
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
4 * Copyright (C) 2002 Robert McQueen <robot101@debian.org> |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
5 * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com> |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
6 * Inspired by a similar plugin by: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
7 * John (J5) Palmieri <johnp@martianrock.com> |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
8 * |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
9 * This program is free software; you can redistribute it and/or |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
10 * modify it under the terms of the GNU General Public License as |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
11 * published by the Free Software Foundation; either version 2 of the |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
12 * License, or (at your option) any later version. |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
13 * |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
14 * This program is distributed in the hope that it will be useful, but |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
15 * WITHOUT ANY WARRANTY; without even the implied warranty of |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
17 * General Public License for more details. |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
18 * |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
19 * You should have received a copy of the GNU General Public License |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
20 * along with this program; if not, write to the Free Software |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
22 * 02111-1307, USA. |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
23 */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
24 #include "internal.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
25 #include "debug.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
26 #include "stock.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
27 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
28 #include "gaim.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
29 #include "ui.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
30 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
31 #include "eggtrayicon.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
32 #include "docklet.h" |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
33 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
34 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
35 /* globals */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
36 static EggTrayIcon *docklet = NULL; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
37 static GtkWidget *image = NULL; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
38 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
39 /* protos */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
40 static void gaim_tray_remove_callbacks(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
41 static void gaim_tray_create(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
42 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
43 static void gaim_tray_embedded_cb(GtkWidget *widget, void *data) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
44 docklet_embedded(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
45 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
46 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
47 static gboolean gaim_tray_create_cb() { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
48 gaim_tray_create(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
49 return FALSE; /* for when we're called by the glib idle handler */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
50 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
51 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
52 static void gaim_tray_clicked_cb(GtkWidget *button, GdkEventButton *event, void *data) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
53 if (event->type != GDK_BUTTON_PRESS) |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
54 return; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
55 docklet_clicked(event->button); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
56 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
57 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
58 static void gaim_tray_destroyed_cb(GtkWidget *widget, void *data) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
59 gaim_debug(GAIM_DEBUG_INFO, "docklet", "Tray Icon: destroyed\n"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
60 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
61 docklet_flush_queue(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
62 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
63 gaim_tray_remove_callbacks(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
64 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
65 g_object_unref(G_OBJECT(docklet)); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
66 docklet = NULL; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
67 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
68 g_idle_add(gaim_tray_create_cb, &docklet); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
69 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
70 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
71 static void gaim_tray_remove_callbacks() { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
72 gaim_debug(GAIM_DEBUG_INFO, "docklet", "Tray Icon: removing callbacks"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
73 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
74 while (g_source_remove_by_user_data(&docklet)) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
75 gaim_debug(GAIM_DEBUG_INFO, NULL, "."); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
76 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
77 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
78 gaim_debug(GAIM_DEBUG_INFO, NULL, "\n"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
79 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
80 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
81 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
82 static void gaim_tray_update_icon(enum docklet_status icon) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
83 const gchar *icon_name = NULL; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
84 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
85 switch (icon) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
86 case offline: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
87 icon_name = GAIM_STOCK_ICON_OFFLINE; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
88 break; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
89 case offline_connecting: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
90 case online_connecting: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
91 icon_name = GAIM_STOCK_ICON_CONNECT; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
92 break; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
93 case online: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
94 icon_name = GAIM_STOCK_ICON_ONLINE; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
95 break; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
96 case online_pending: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
97 icon_name = GAIM_STOCK_ICON_ONLINE_MSG; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
98 break; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
99 case away: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
100 icon_name = GAIM_STOCK_ICON_AWAY; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
101 break; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
102 case away_pending: |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
103 icon_name = GAIM_STOCK_ICON_AWAY_MSG; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
104 break; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
105 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
106 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
107 gtk_image_set_from_stock(GTK_IMAGE(image), icon_name, GTK_ICON_SIZE_LARGE_TOOLBAR); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
108 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
109 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
110 static void gaim_tray_create() { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
111 GtkWidget *box; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
112 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
113 if (docklet) { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
114 /* if this is being called when a tray icon exists, it's because |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
115 something messed up. try destroying it before we proceed, |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
116 although docklet_refcount may be all hosed. hopefully won't happen. */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
117 gaim_debug(GAIM_DEBUG_WARNING, "docklet", |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
118 "Tray Icon: trying to create icon but it already exists?\n"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
119 /*plugin_unload(NULL);*/ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
120 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
121 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
122 docklet = egg_tray_icon_new("Gaim"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
123 box = gtk_event_box_new(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
124 image = gtk_image_new(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
125 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
126 g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(gaim_tray_embedded_cb), NULL); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
127 g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(gaim_tray_destroyed_cb), NULL); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
128 g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(gaim_tray_clicked_cb), NULL); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
129 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
130 gtk_container_add(GTK_CONTAINER(box), image); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
131 gtk_container_add(GTK_CONTAINER(docklet), box); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
132 gtk_widget_show_all(GTK_WIDGET(docklet)); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
133 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
134 /* ref the docklet before we bandy it about the place */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
135 g_object_ref(G_OBJECT(docklet)); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
136 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
137 gaim_debug(GAIM_DEBUG_INFO, "docklet", "Tray Icon: created\n"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
138 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
139 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
140 static void gaim_tray_destroy() { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
141 gaim_tray_remove_callbacks(); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
142 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
143 g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(gaim_tray_destroyed_cb), NULL); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
144 gtk_widget_destroy(GTK_WIDGET(docklet)); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
145 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
146 g_object_unref(G_OBJECT(docklet)); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
147 docklet = NULL; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
148 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
149 gaim_debug(GAIM_DEBUG_INFO, "docklet", "Tray Icon: removed\n"); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
150 } |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
151 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
152 static struct gaim_tray_ops tray_ops = |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
153 { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
154 gaim_tray_create, |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
155 gaim_tray_destroy, |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
156 gaim_tray_update_icon |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
157 }; |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
158 |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
159 /* Used by docklet's plugin load func */ |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
160 void trayicon_init() { |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
161 docklet_set_tray_ops(&tray_ops); |
|
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
162 } |
