Mercurial > pidgin.yaz
annotate plugins/docklet/docklet.h @ 12498:a2de852981c1
[gaim-migrate @ 14810]
SF Patch #1380806 from charkins
"leave docklet loaded when notification area is not present"
"From the summary, this sounds weird, but I think its
better behavior. This really only effects some odd
corner cases. The existing behavior is that the docklet
plugin unloads itself after 10 seconds if the tray icon
isn't created. The behavior with this patch is that
there is a 3 second timeout (this is necessary to avoid
race condition when restoring the gtkblist's visibility
state on startup). After this timeout, the docklet
plugin stays loaded waiting for a notification to
appear, but is essentially non-functional.
In the typical scenario, this patch doesn't effect the
behavior. Here are some examples of where it does matter:
1) If gaim is closed with the buddy list hidden to the
docklet, then gaim is started again without a
notification area, the buddy list doesn't show up for
10 seconds (the time it takes for the docklet to
timeout). This patch would reduce this to 3 seconds.
2) If the user removes the notification area from their
panel, maybe to remove it from one panel and add it to
a different panel, but doesn't add a new one back
within 10 seconds, the current behavior would cause the
docklet plugin to be unloaded. With this patch, the
tray icon would automatically be added to the new
notification area when it becomes available.
3) The gnome-panel dies and is not restarted within 10
seconds. Similar to #2. (There was a bug filed for
this, but can't find it right now).
My main concern was that it could be confusing to the
user if they enable the docklet plugin, then 10 seconds
later it gets disabled without any notification. This
patch doesn't add any notification, but leaves the
plugin running so it will automatically use a
notification area when one becomes available.
I also removed an unused parameter from
docklet_remove() and changed the plugin description
slightly to reflect the change in queuing/notification.
Not sure how clear this is, so bug me on #gaim if you
have any questions. --charkins"
I made a few changes to this patch, but nothing terribly significant...
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Fri, 16 Dec 2005 09:16:14 +0000 |
parents | 202ce52b77a9 |
children |
rev | line source |
---|---|
6208
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
1 /* |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
2 * System tray icon (aka docklet) plugin for Gaim |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
3 * |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
4 * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org> |
6077
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 */ |
6208
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
24 |
6077
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
25 #ifndef _DOCKLET_H_ |
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
26 #define _DOCKLET_H_ |
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
27 |
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
28 typedef enum |
6208
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
29 { |
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
30 DOCKLET_STATUS_OFFLINE, |
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
31 DOCKLET_STATUS_ONLINE, |
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
32 DOCKLET_STATUS_ONLINE_PENDING, |
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
33 DOCKLET_STATUS_AWAY, |
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
34 DOCKLET_STATUS_AWAY_PENDING, |
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
35 DOCKLET_STATUS_CONNECTING |
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
36 } DockletStatus; |
6077
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
37 |
6208
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
38 struct docklet_ui_ops |
6077
b2c8e08508af
[gaim-migrate @ 6536]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff
changeset
|
39 { |
12323
fc464a0abccc
[gaim-migrate @ 14627]
Richard Laager <rlaager@wiktel.com>
parents:
12016
diff
changeset
|
40 void (*create)(void); |
fc464a0abccc
[gaim-migrate @ 14627]
Richard Laager <rlaager@wiktel.com>
parents:
12016
diff
changeset
|
41 void (*destroy)(void); |
11709
cae2fb7e8594
[gaim-migrate @ 14000]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
10504
diff
changeset
|
42 void (*update_icon)(DockletStatus); |
12323
fc464a0abccc
[gaim-migrate @ 14627]
Richard Laager <rlaager@wiktel.com>
parents:
12016
diff
changeset
|
43 void (*blank_icon)(void); |
12471
011efeb86b8d
[gaim-migrate @ 14781]
Richard Laager <rlaager@wiktel.com>
parents:
12323
diff
changeset
|
44 void (*set_tooltip)(gchar *); |
10268
d082b2a71ee7
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
6894
diff
changeset
|
45 GtkMenuPositionFunc position_menu; |
6077
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 |
6208
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
48 /* useful for setting idle callbacks that will be cleaned up */ |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
49 extern GaimPlugin *handle; |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
50 |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
51 /* functions in docklet.c */ |
12497
202ce52b77a9
[gaim-migrate @ 14809]
Richard Laager <rlaager@wiktel.com>
parents:
12471
diff
changeset
|
52 void docklet_clicked(int); |
202ce52b77a9
[gaim-migrate @ 14809]
Richard Laager <rlaager@wiktel.com>
parents:
12471
diff
changeset
|
53 void docklet_embedded(void); |
12498
a2de852981c1
[gaim-migrate @ 14810]
Richard Laager <rlaager@wiktel.com>
parents:
12497
diff
changeset
|
54 void docklet_remove(void); |
12497
202ce52b77a9
[gaim-migrate @ 14809]
Richard Laager <rlaager@wiktel.com>
parents:
12471
diff
changeset
|
55 void docklet_set_ui_ops(struct docklet_ui_ops *); |
202ce52b77a9
[gaim-migrate @ 14809]
Richard Laager <rlaager@wiktel.com>
parents:
12471
diff
changeset
|
56 void docklet_unload(void); |
6208
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
57 |
3e3ee3cba192
[gaim-migrate @ 6694]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6077
diff
changeset
|
58 /* function in docklet-{x11,win32}.c */ |
12497
202ce52b77a9
[gaim-migrate @ 14809]
Richard Laager <rlaager@wiktel.com>
parents:
12471
diff
changeset
|
59 void docklet_ui_init(void); |
6077
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 #endif /* _DOCKLET_H_ */ |