Mon, 12 Dec 2005 20:38:10 +0000
[gaim-migrate @ 14782]
SF Patch #1373967 from charkins
"This patch requires #1372898 to be applied first. It
adds two 3-way preferences to the docklet plugin to
determine when the tray icon should blink. One pref is
for unread IM messages, the other for unread chat
messages. The options for each:
im: never, when hidden, always
chat: never, when nick said, always
I've set the defaults to match the 1.x behavior (when
hidden for im, never for chat)."
This patch provided a function used by a previous patch. I undid my (now incorrect) changes there. I modified this to have a limit to the number of tooltips to display. I also tweaked the preference strings a bit. So, blame me if those things are wrong. ;)
committer: Richard Laager <rlaager@pidgin.im>
|
6278
d0cd8645bf90
[gaim-migrate @ 6777]
Herman Bloggs <herman@bluedigits.com>
parents:
6261
diff
changeset
|
1 | /* |
| 6209 | 2 | * System tray icon (aka docklet) plugin for Gaim |
| 3 | * | |
| 4 | * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org> | |
| 5 | * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com> | |
| 6 | * Inspired by a similar plugin by: | |
| 7 | * John (J5) Palmieri <johnp@martianrock.com> | |
| 8 | * | |
| 9 | * This program is free software; you can redistribute it and/or | |
| 10 | * modify it under the terms of the GNU General Public License as | |
| 11 | * published by the Free Software Foundation; either version 2 of the | |
| 12 | * License, or (at your option) any later version. | |
| 13 | * | |
| 14 | * This program is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 17 | * General Public License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU General Public License | |
| 20 | * along with this program; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
| 22 | * 02111-1307, USA. | |
| 23 | */ | |
| 24 | ||
| 25 | #include <windows.h> | |
| 26 | #include <gdk/gdkwin32.h> | |
| 27 | #include <gdk/gdk.h> | |
| 28 | ||
| 29 | #include "internal.h" | |
| 30 | #include "gtkblist.h" | |
| 31 | #include "gtkprefs.h" | |
| 32 | #include "debug.h" | |
| 33 | ||
| 34 | #include "gaim.h" | |
|
9709
2e73f176cc80
[gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents:
6894
diff
changeset
|
35 | #include "gtkdialogs.h" |
| 6209 | 36 | |
| 37 | #include "resource.h" | |
| 38 | #include "MinimizeToTray.h" | |
| 39 | #include "docklet.h" | |
| 40 | ||
| 41 | /* | |
| 42 | * DEFINES, MACROS & DATA TYPES | |
| 43 | */ | |
| 44 | #define WM_TRAYMESSAGE WM_USER /* User defined WM Message */ | |
| 45 | ||
| 46 | /* | |
| 47 | * LOCALS | |
| 48 | */ | |
| 49 | static HWND systray_hwnd=0; | |
| 50 | static HICON sysicon_disconn=0; | |
| 51 | static HICON sysicon_conn=0; | |
| 52 | static HICON sysicon_away=0; | |
| 53 | static HICON sysicon_pend=0; | |
| 54 | static HICON sysicon_awypend=0; | |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
55 | static HICON sysicon_blank=0; |
| 6209 | 56 | static NOTIFYICONDATA wgaim_nid; |
| 57 | ||
| 58 | ||
| 59 | static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { | |
| 60 | static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ | |
| 61 | ||
| 62 | switch(msg) { | |
| 63 | case WM_CREATE: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
64 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_CREATE\n"); |
| 6209 | 65 | taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated"); |
| 66 | break; | |
| 67 | ||
| 68 | case WM_TIMER: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
69 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_TIMER\n"); |
| 6209 | 70 | break; |
| 71 | ||
| 72 | case WM_DESTROY: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
73 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_DESTROY\n"); |
| 6209 | 74 | break; |
| 75 | ||
| 76 | case WM_TRAYMESSAGE: | |
| 77 | { | |
| 78 | int type = 0; | |
| 79 | ||
| 80 | /* We'll use Double Click - Single click over on linux */ | |
| 81 | if( lparam == WM_LBUTTONDBLCLK ) | |
| 82 | type = 1; | |
| 83 | else if( lparam == WM_MBUTTONUP ) | |
| 84 | type = 2; | |
| 85 | else if( lparam == WM_RBUTTONUP ) | |
| 86 | type = 3; | |
| 87 | else | |
| 88 | break; | |
| 89 | ||
| 90 | docklet_clicked(type); | |
| 91 | break; | |
| 92 | } | |
| 93 | default: | |
| 94 | if (msg == taskbarRestartMsg) { | |
| 95 | /* explorer crashed and left us hanging... | |
| 96 | This will put the systray icon back in it's place, when it restarts */ | |
| 97 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); | |
| 98 | } | |
| 99 | break; | |
| 100 | }/* end switch */ | |
| 101 | ||
| 102 | return DefWindowProc(hwnd, msg, wparam, lparam); | |
| 103 | } | |
| 104 | ||
| 105 | /* Create hidden window to process systray messages */ | |
| 106 | static HWND systray_create_hiddenwin() { | |
| 107 | WNDCLASSEX wcex; | |
| 108 | TCHAR wname[32]; | |
| 109 | ||
| 110 | strcpy(wname, "GaimWin"); | |
| 111 | ||
| 112 | wcex.cbSize = sizeof(WNDCLASSEX); | |
| 113 | ||
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
114 | wcex.style = 0; |
| 6209 | 115 | wcex.lpfnWndProc = (WNDPROC)systray_mainmsg_handler; |
| 116 | wcex.cbClsExtra = 0; | |
| 117 | wcex.cbWndExtra = 0; | |
| 118 | wcex.hInstance = wgaim_hinstance(); | |
| 119 | wcex.hIcon = NULL; | |
| 120 | wcex.hCursor = NULL, | |
| 121 | wcex.hbrBackground = NULL; | |
| 122 | wcex.lpszMenuName = NULL; | |
| 123 | wcex.lpszClassName = wname; | |
| 124 | wcex.hIconSm = NULL; | |
| 125 | ||
| 126 | RegisterClassEx(&wcex); | |
| 127 | ||
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
128 | /* Create the window */ |
| 6209 | 129 | return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, wgaim_hinstance(), 0)); |
| 130 | } | |
| 131 | ||
| 132 | static void systray_init_icon(HWND hWnd, HICON icon) { | |
| 133 | ZeroMemory(&wgaim_nid,sizeof(wgaim_nid)); | |
| 134 | wgaim_nid.cbSize=sizeof(NOTIFYICONDATA); | |
| 135 | wgaim_nid.hWnd=hWnd; | |
| 136 | wgaim_nid.uID=0; | |
| 137 | wgaim_nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP; | |
| 138 | wgaim_nid.uCallbackMessage=WM_TRAYMESSAGE; | |
| 139 | wgaim_nid.hIcon=icon; | |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
140 | lstrcpy(wgaim_nid.szTip, ""); |
| 6209 | 141 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); |
| 142 | docklet_embedded(); | |
| 143 | } | |
| 144 | ||
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
145 | static void systray_change_icon(HICON icon) { |
| 6209 | 146 | wgaim_nid.hIcon = icon; |
| 147 | Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid); | |
| 148 | } | |
| 149 | ||
| 150 | static void systray_remove_nid(void) { | |
| 151 | Shell_NotifyIcon(NIM_DELETE,&wgaim_nid); | |
| 152 | } | |
| 153 | ||
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
154 | static void wgaim_tray_update_icon(DockletStatus icon) { |
| 6209 | 155 | switch (icon) { |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
156 | case DOCKLET_STATUS_OFFLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
157 | systray_change_icon(sysicon_disconn); |
| 6209 | 158 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
159 | case DOCKLET_STATUS_CONNECTING: |
| 6209 | 160 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
161 | case DOCKLET_STATUS_ONLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
162 | systray_change_icon(sysicon_conn); |
| 6209 | 163 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
164 | case DOCKLET_STATUS_ONLINE_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
165 | systray_change_icon(sysicon_pend); |
| 6209 | 166 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
167 | case DOCKLET_STATUS_AWAY: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
168 | systray_change_icon(sysicon_away); |
| 6209 | 169 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
170 | case DOCKLET_STATUS_AWAY_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
171 | systray_change_icon(sysicon_awypend); |
| 6209 | 172 | break; |
| 173 | } | |
| 174 | } | |
| 175 | ||
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
176 | static void wgaim_tray_blank_icon() { |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
177 | systray_change_icon(sysicon_blank); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
178 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
179 | |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
180 | static void wgaim_tray_set_tooltip(gchar *tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
181 | if (tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
182 | char *locenc = NULL; |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
183 | locenc = g_locale_from_utf8(tooltip, -1, NULL, NULL, NULL); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
184 | lstrcpyn(wgaim_nid.szTip, locenc, sizeof(wgaim_nid.szTip)/sizeof(TCHAR)); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
185 | g_free(locenc); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
186 | } else { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
187 | lstrcpy(wgaim_nid.szTip, ""); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
188 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
189 | Shell_NotifyIcon(NIM_MODIFY, &wgaim_nid); |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
190 | } |
|
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
191 | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
192 | void wgaim_tray_minimize(GaimGtkBuddyList *gtkblist) { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
193 | MinimizeWndToTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
194 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
195 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
196 | void wgaim_tray_maximize(GaimGtkBuddyList *gtkblist) { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
197 | RestoreWndFromTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
198 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
199 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
200 | |
| 6209 | 201 | static void wgaim_tray_create() { |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
202 | OSVERSIONINFO osinfo; |
| 6209 | 203 | /* dummy window to process systray messages */ |
| 204 | systray_hwnd = systray_create_hiddenwin(); | |
| 205 | ||
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
206 | osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
207 | GetVersionEx(&osinfo); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
208 | |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
209 | /* Load icons, and init systray notify icon |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
210 | * NOTE: Windows > XP only supports displaying 4-bit images in the Systray, |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
211 | * 2K and ME will use the highest color depth that the desktop will support, |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
212 | * but will scale it back to 4-bits for display. |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
213 | * That is why we use custom 4-bit icons for pre XP Windowses */ |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
214 | if (osinfo.dwMajorVersion == 5 && osinfo.dwMinorVersion > 0) { |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
215 | sysicon_disconn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
216 | sysicon_conn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
217 | sysicon_away = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
218 | sysicon_pend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
219 | sysicon_awypend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAYPEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
220 | } else { |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
221 | sysicon_disconn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
222 | sysicon_conn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
223 | sysicon_away = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
224 | sysicon_pend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
225 | sysicon_awypend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAYPEND_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
226 | } |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
227 | sysicon_blank = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_BLANK_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
| 6209 | 228 | |
| 229 | /* Create icon in systray */ | |
| 230 | systray_init_icon(systray_hwnd, sysicon_disconn); | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
231 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
232 | gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-hiding", |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
233 | &handle, GAIM_CALLBACK(wgaim_tray_minimize), NULL); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
234 | gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-unhiding", |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
235 | &handle, GAIM_CALLBACK(wgaim_tray_maximize), NULL); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
236 | |
| 6209 | 237 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "created\n"); |
| 238 | } | |
| 239 | ||
| 240 | static void wgaim_tray_destroy() { | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
241 | gaim_signals_disconnect_by_handle(&handle); |
| 6209 | 242 | systray_remove_nid(); |
| 243 | DestroyWindow(systray_hwnd); | |
| 244 | docklet_remove(TRUE); | |
| 245 | } | |
| 246 | ||
| 247 | static struct docklet_ui_ops wgaim_tray_ops = | |
| 248 | { | |
| 249 | wgaim_tray_create, | |
| 250 | wgaim_tray_destroy, | |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
251 | wgaim_tray_update_icon, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
252 | wgaim_tray_blank_icon, |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
253 | wgaim_tray_set_tooltip, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
254 | NULL |
| 6209 | 255 | }; |
| 256 | ||
| 257 | /* Used by docklet's plugin load func */ | |
| 258 | void docklet_ui_init() { | |
| 259 | docklet_set_ui_ops(&wgaim_tray_ops); | |
| 260 | } |