Mercurial > pidgin.yaz
annotate pidgin/win32/gtkdocklet-win32.c @ 21400:cb9e962d4f7f
Fix iterating over accounts_signed_on_elsewhere while doing things that will
cause it to change.
author | Will Thompson <will.thompson@collabora.co.uk> |
---|---|
date | Sat, 03 Nov 2007 16:32:28 +0000 |
parents | 38c4fe48ebb5 |
children | d3e0eb05ac94 |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
2 * System tray icon (aka docklet) plugin for Winpidgin |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4 * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
6 * Inspired by a similar plugin by: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * John (J5) Palmieri <johnp@martianrock.com> |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
8 * |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * This program is free software; you can redistribute it and/or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * modify it under the terms of the GNU General Public License as |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * published by the Free Software Foundation; either version 2 of the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * License, or (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * This program is distributed in the hope that it will be useful, but |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * General Public License for more details. |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
18 * |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19653
diff
changeset
|
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19653
diff
changeset
|
22 * 02111-1301, USA. |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 #include <windows.h> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 #include <gdk/gdkwin32.h> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #include <gdk/gdk.h> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "internal.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "gtkblist.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 #include "resource.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 #include "MinimizeToTray.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 #include "gtkwin32dep.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 #include "gtkdocklet.h" |
15831
e04c98c1bce9
win32 fixes for s/gaim/purple/ stuff.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15823
diff
changeset
|
37 #include "pidginstock.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 * DEFINES, MACROS & DATA TYPES |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 #define WM_TRAYMESSAGE WM_USER /* User defined WM Message */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
43 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 * LOCALS |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 */ |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
47 static HWND systray_hwnd = NULL; |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
48 /* additional two cached_icons entries for pending and connecting icons */ |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
49 static HICON cached_icons[PURPLE_STATUS_NUM_PRIMITIVES + 2]; |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
50 static GtkWidget *image = NULL; |
20246
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
51 /* This is used to trigger click events on so they appear to GTK+ as if they are triggered by input */ |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
52 static GtkWidget *dummy_button = NULL; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
53 static GtkWidget *dummy_window = NULL; |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
54 static NOTIFYICONDATA _nicon_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 |
20246
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
56 static gboolean dummy_button_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
57 pidgin_docklet_clicked(event->button); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
58 return TRUE; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
59 } |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
60 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
63 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 switch(msg) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 case WM_CREATE: |
15823 | 66 purple_debug_info("docklet", "WM_CREATE\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 break; |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
69 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
70 case WM_TIMER: |
15823 | 71 purple_debug_info("docklet", "WM_TIMER\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
72 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
73 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 case WM_DESTROY: |
15823 | 75 purple_debug_info("docklet", "WM_DESTROY\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 case WM_TRAYMESSAGE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 int type = 0; |
20246
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
81 GdkEvent *event; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
82 GdkEventButton *event_btn; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 /* We'll use Double Click - Single click over on linux */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 if(lparam == WM_LBUTTONDBLCLK) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 type = 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
87 else if(lparam == WM_MBUTTONUP) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 type = 2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 else if(lparam == WM_RBUTTONUP) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 type = 3; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 |
20246
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
94 gtk_widget_show_all(dummy_window); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
95 event = gdk_event_new(GDK_BUTTON_PRESS); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
96 event_btn = (GdkEventButton *) event; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
97 event_btn->window = g_object_ref (gdk_get_default_root_window()); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
98 event_btn->send_event = TRUE; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
99 event_btn->time = GetTickCount(); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
100 event_btn->axes = NULL; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
101 event_btn->state = 0; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
102 event_btn->button = type; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
103 event_btn->device = gdk_display_get_default ()->core_pointer; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
104 event->any.window = g_object_ref(dummy_window->window); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
105 gdk_window_set_user_data(event->any.window, dummy_button); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
106 |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
107 gtk_main_do_event((GdkEvent *)event); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
108 gtk_widget_hide(dummy_window); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
109 gdk_event_free((GdkEvent *)event); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
110 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
111 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 default: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 if (msg == taskbarRestartMsg) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
115 /* explorer crashed and left us hanging... |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 This will put the systray icon back in it's place, when it restarts */ |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
117 Shell_NotifyIcon(NIM_ADD, &_nicon_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 }/* end switch */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 return DefWindowProc(hwnd, msg, wparam, lparam); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 /* Create hidden window to process systray messages */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 static HWND systray_create_hiddenwin() { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 WNDCLASSEX wcex; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 LPCTSTR wname; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
130 wname = TEXT("WinpidginSystrayWinCls"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 wcex.cbSize = sizeof(wcex); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 wcex.style = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 wcex.lpfnWndProc = systray_mainmsg_handler; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 wcex.cbClsExtra = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
136 wcex.cbWndExtra = 0; |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
137 wcex.hInstance = winpidgin_exe_hinstance(); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 wcex.hIcon = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 wcex.hCursor = NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 wcex.hbrBackground = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 wcex.lpszMenuName = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 wcex.lpszClassName = wname; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 wcex.hIconSm = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 RegisterClassEx(&wcex); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 /* Create the window */ |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
148 return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, winpidgin_exe_hinstance(), 0)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
151 static void systray_init_icon(HWND hWnd) { |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
152 ZeroMemory(&_nicon_data, sizeof(_nicon_data)); |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
153 _nicon_data.cbSize = sizeof(NOTIFYICONDATA); |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
154 _nicon_data.hWnd = hWnd; |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
155 _nicon_data.uID = 0; |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
156 _nicon_data.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
157 _nicon_data.uCallbackMessage = WM_TRAYMESSAGE; |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
158 _nicon_data.hIcon = NULL; |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
159 lstrcpy(_nicon_data.szTip, PIDGIN_NAME); |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
160 Shell_NotifyIcon(NIM_ADD, &_nicon_data); |
15501
d75099d2567e
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents:
15461
diff
changeset
|
161 pidgin_docklet_embedded(); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
164 /* This is ganked from GTK+. |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
165 * When we can use GTK+ 2.10 and the GtkStatusIcon stuff, this will no longer be necesary */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
166 #define WIN32_GDI_FAILED(api) printf("GDI FAILED %s\n", api) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
167 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
168 static gboolean |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
169 _gdk_win32_pixbuf_to_hicon_supports_alpha (void) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
170 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
171 static gboolean is_win_xp=FALSE, is_win_xp_checked=FALSE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
172 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
173 if (!is_win_xp_checked) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
174 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
175 is_win_xp_checked = TRUE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
176 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
177 if (!G_WIN32_IS_NT_BASED ()) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
178 is_win_xp = FALSE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
179 else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
180 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
181 OSVERSIONINFO version; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
182 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
183 memset (&version, 0, sizeof (version)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
184 version.dwOSVersionInfoSize = sizeof (version); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
185 is_win_xp = GetVersionEx (&version) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
186 && version.dwPlatformId == VER_PLATFORM_WIN32_NT |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
187 && (version.dwMajorVersion > 5 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
188 || (version.dwMajorVersion == 5 && version.dwMinorVersion >= 1)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
189 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
190 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
191 return is_win_xp; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
192 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
193 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
194 static HBITMAP |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
195 create_alpha_bitmap (gint size, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
196 guchar **outdata) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
197 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
198 BITMAPV5HEADER bi; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
199 HDC hdc; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
200 HBITMAP hBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
201 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
202 ZeroMemory (&bi, sizeof (BITMAPV5HEADER)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
203 bi.bV5Size = sizeof (BITMAPV5HEADER); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
204 bi.bV5Height = bi.bV5Width = size; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
205 bi.bV5Planes = 1; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
206 bi.bV5BitCount = 32; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
207 bi.bV5Compression = BI_BITFIELDS; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
208 /* The following mask specification specifies a supported 32 BPP |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
209 * alpha format for Windows XP (BGRA format). |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
210 */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
211 bi.bV5RedMask = 0x00FF0000; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
212 bi.bV5GreenMask = 0x0000FF00; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
213 bi.bV5BlueMask = 0x000000FF; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
214 bi.bV5AlphaMask = 0xFF000000; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
215 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
216 /* Create the DIB section with an alpha channel. */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
217 hdc = GetDC (NULL); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
218 if (!hdc) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
219 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
220 WIN32_GDI_FAILED ("GetDC"); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
221 return NULL; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
222 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
223 hBitmap = CreateDIBSection (hdc, (BITMAPINFO *)&bi, DIB_RGB_COLORS, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
224 (PVOID *) outdata, NULL, (DWORD)0); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
225 if (hBitmap == NULL) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
226 WIN32_GDI_FAILED ("CreateDIBSection"); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
227 ReleaseDC (NULL, hdc); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
228 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
229 return hBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
230 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
231 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
232 static HBITMAP |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
233 create_color_bitmap (gint size, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
234 guchar **outdata, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
235 gint bits) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
236 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
237 struct { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
238 BITMAPV4HEADER bmiHeader; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
239 RGBQUAD bmiColors[2]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
240 } bmi; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
241 HDC hdc; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
242 HBITMAP hBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
243 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
244 ZeroMemory (&bmi, sizeof (bmi)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
245 bmi.bmiHeader.bV4Size = sizeof (BITMAPV4HEADER); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
246 bmi.bmiHeader.bV4Height = bmi.bmiHeader.bV4Width = size; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
247 bmi.bmiHeader.bV4Planes = 1; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
248 bmi.bmiHeader.bV4BitCount = bits; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
249 bmi.bmiHeader.bV4V4Compression = BI_RGB; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
250 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
251 /* when bits is 1, these will be used. |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
252 * bmiColors[0] already zeroed from ZeroMemory() |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
253 */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
254 bmi.bmiColors[1].rgbBlue = 0xFF; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
255 bmi.bmiColors[1].rgbGreen = 0xFF; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
256 bmi.bmiColors[1].rgbRed = 0xFF; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
257 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
258 hdc = GetDC (NULL); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
259 if (!hdc) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
260 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
261 WIN32_GDI_FAILED ("GetDC"); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
262 return NULL; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
263 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
264 hBitmap = CreateDIBSection (hdc, (BITMAPINFO *)&bmi, DIB_RGB_COLORS, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
265 (PVOID *) outdata, NULL, (DWORD)0); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
266 if (hBitmap == NULL) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
267 WIN32_GDI_FAILED ("CreateDIBSection"); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
268 ReleaseDC (NULL, hdc); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
269 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
270 return hBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
271 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
272 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
273 static gboolean |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
274 pixbuf_to_hbitmaps_alpha_winxp (GdkPixbuf *pixbuf, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
275 HBITMAP *color, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
276 HBITMAP *mask) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
277 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
278 /* Based on code from |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
279 * http://www.dotnet247.com/247reference/msgs/13/66301.aspx |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
280 */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
281 HBITMAP hColorBitmap, hMaskBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
282 guchar *indata, *inrow; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
283 guchar *colordata, *colorrow, *maskdata, *maskbyte; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
284 gint width, height, size, i, i_offset, j, j_offset, rowstride; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
285 guint maskstride, mask_bit; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
286 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
287 width = gdk_pixbuf_get_width (pixbuf); /* width of icon */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
288 height = gdk_pixbuf_get_height (pixbuf); /* height of icon */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
289 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
290 /* The bitmaps are created square */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
291 size = MAX (width, height); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
292 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
293 hColorBitmap = create_alpha_bitmap (size, &colordata); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
294 if (!hColorBitmap) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
295 return FALSE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
296 hMaskBitmap = create_color_bitmap (size, &maskdata, 1); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
297 if (!hMaskBitmap) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
298 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
299 DeleteObject (hColorBitmap); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
300 return FALSE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
301 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
302 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
303 /* MSDN says mask rows are aligned to "LONG" boundaries */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
304 maskstride = (((size + 31) & ~31) >> 3); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
305 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
306 indata = gdk_pixbuf_get_pixels (pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
307 rowstride = gdk_pixbuf_get_rowstride (pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
308 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
309 if (width > height) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
310 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
311 i_offset = 0; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
312 j_offset = (width - height) / 2; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
313 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
314 else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
315 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
316 i_offset = (height - width) / 2; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
317 j_offset = 0; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
318 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
319 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
320 for (j = 0; j < height; j++) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
321 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
322 colorrow = colordata + 4*(j+j_offset)*size + 4*i_offset; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
323 maskbyte = maskdata + (j+j_offset)*maskstride + i_offset/8; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
324 mask_bit = (0x80 >> (i_offset % 8)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
325 inrow = indata + (height-j-1)*rowstride; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
326 for (i = 0; i < width; i++) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
327 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
328 colorrow[4*i+0] = inrow[4*i+2]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
329 colorrow[4*i+1] = inrow[4*i+1]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
330 colorrow[4*i+2] = inrow[4*i+0]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
331 colorrow[4*i+3] = inrow[4*i+3]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
332 if (inrow[4*i+3] == 0) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
333 maskbyte[0] |= mask_bit; /* turn ON bit */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
334 else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
335 maskbyte[0] &= ~mask_bit; /* turn OFF bit */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
336 mask_bit >>= 1; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
337 if (mask_bit == 0) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
338 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
339 mask_bit = 0x80; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
340 maskbyte++; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
341 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
342 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
343 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
344 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
345 *color = hColorBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
346 *mask = hMaskBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
347 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
348 return TRUE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
349 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
350 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
351 static gboolean |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
352 pixbuf_to_hbitmaps_normal (GdkPixbuf *pixbuf, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
353 HBITMAP *color, |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
354 HBITMAP *mask) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
355 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
356 /* Based on code from |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
357 * http://www.dotnet247.com/247reference/msgs/13/66301.aspx |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
358 */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
359 HBITMAP hColorBitmap, hMaskBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
360 guchar *indata, *inrow; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
361 guchar *colordata, *colorrow, *maskdata, *maskbyte; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
362 gint width, height, size, i, i_offset, j, j_offset, rowstride, nc, bmstride; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
363 gboolean has_alpha; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
364 guint maskstride, mask_bit; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
365 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
366 width = gdk_pixbuf_get_width (pixbuf); /* width of icon */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
367 height = gdk_pixbuf_get_height (pixbuf); /* height of icon */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
368 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
369 /* The bitmaps are created square */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
370 size = MAX (width, height); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
371 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
372 hColorBitmap = create_color_bitmap (size, &colordata, 24); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
373 if (!hColorBitmap) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
374 return FALSE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
375 hMaskBitmap = create_color_bitmap (size, &maskdata, 1); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
376 if (!hMaskBitmap) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
377 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
378 DeleteObject (hColorBitmap); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
379 return FALSE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
380 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
381 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
382 /* rows are always aligned on 4-byte boundarys */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
383 bmstride = size * 3; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
384 if (bmstride % 4 != 0) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
385 bmstride += 4 - (bmstride % 4); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
386 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
387 /* MSDN says mask rows are aligned to "LONG" boundaries */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
388 maskstride = (((size + 31) & ~31) >> 3); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
389 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
390 indata = gdk_pixbuf_get_pixels (pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
391 rowstride = gdk_pixbuf_get_rowstride (pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
392 nc = gdk_pixbuf_get_n_channels (pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
393 has_alpha = gdk_pixbuf_get_has_alpha (pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
394 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
395 if (width > height) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
396 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
397 i_offset = 0; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
398 j_offset = (width - height) / 2; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
399 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
400 else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
401 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
402 i_offset = (height - width) / 2; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
403 j_offset = 0; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
404 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
405 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
406 for (j = 0; j < height; j++) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
407 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
408 colorrow = colordata + (j+j_offset)*bmstride + 3*i_offset; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
409 maskbyte = maskdata + (j+j_offset)*maskstride + i_offset/8; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
410 mask_bit = (0x80 >> (i_offset % 8)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
411 inrow = indata + (height-j-1)*rowstride; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
412 for (i = 0; i < width; i++) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
413 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
414 if (has_alpha && inrow[nc*i+3] < 128) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
415 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
416 colorrow[3*i+0] = colorrow[3*i+1] = colorrow[3*i+2] = 0; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
417 maskbyte[0] |= mask_bit; /* turn ON bit */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
418 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
419 else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
420 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
421 colorrow[3*i+0] = inrow[nc*i+2]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
422 colorrow[3*i+1] = inrow[nc*i+1]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
423 colorrow[3*i+2] = inrow[nc*i+0]; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
424 maskbyte[0] &= ~mask_bit; /* turn OFF bit */ |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
425 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
426 mask_bit >>= 1; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
427 if (mask_bit == 0) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
428 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
429 mask_bit = 0x80; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
430 maskbyte++; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
431 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
432 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
433 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
434 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
435 *color = hColorBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
436 *mask = hMaskBitmap; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
437 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
438 return TRUE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
439 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
440 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
441 static HICON |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
442 pixbuf_to_hicon (GdkPixbuf *pixbuf) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
443 { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
444 gint x = 0, y = 0; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
445 gboolean is_icon = TRUE; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
446 ICONINFO ii; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
447 HICON icon; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
448 gboolean success; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
449 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
450 if (pixbuf == NULL) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
451 return NULL; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
452 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
453 if (_gdk_win32_pixbuf_to_hicon_supports_alpha() && gdk_pixbuf_get_has_alpha (pixbuf)) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
454 success = pixbuf_to_hbitmaps_alpha_winxp (pixbuf, &ii.hbmColor, &ii.hbmMask); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
455 else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
456 success = pixbuf_to_hbitmaps_normal (pixbuf, &ii.hbmColor, &ii.hbmMask); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
457 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
458 if (!success) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
459 return NULL; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
460 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
461 ii.fIcon = is_icon; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
462 ii.xHotspot = x; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
463 ii.yHotspot = y; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
464 icon = CreateIconIndirect (&ii); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
465 DeleteObject (ii.hbmColor); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
466 DeleteObject (ii.hbmMask); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
467 return icon; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
468 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
469 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
470 static HICON load_hicon_from_stock(const char *stock) { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
471 HICON hicon = NULL; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
472 GdkPixbuf *pixbuf = gtk_widget_render_icon(image, stock, |
15773
79144a15ea78
16px tray icons. These are used if the tray is shorter than 22px, and in Windows where all tray icons are 16x16. I still need to attach to a resizing signal to make them automatically update when the tray resizes.
Sean Egan <seanegan@gmail.com>
parents:
15715
diff
changeset
|
473 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), NULL); |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
474 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
475 if (pixbuf) { |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
476 hicon = pixbuf_to_hicon(pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
477 g_object_unref(pixbuf); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
478 } else |
19653
941965d6fd88
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16949
diff
changeset
|
479 purple_debug_error("docklet", "Unable to load pixbuf for %s.\n", stock); |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
480 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
481 return hicon; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
482 } |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
483 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
484 |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
485 static void systray_change_icon(HICON hicon) { |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
486 g_return_if_fail(hicon != NULL); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
487 |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
488 _nicon_data.hIcon = hicon; |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
489 Shell_NotifyIcon(NIM_MODIFY, &_nicon_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
490 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
492 static void systray_remove_nid(void) { |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
493 Shell_NotifyIcon(NIM_DELETE, &_nicon_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
494 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
495 |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
496 static void winpidgin_tray_update_icon(PurpleStatusPrimitive status, |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
497 gboolean connecting, gboolean pending) { |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
498 |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
499 int icon_index; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
500 g_return_if_fail(image != NULL); |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
501 |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
502 if(connecting) |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
503 icon_index = PURPLE_STATUS_NUM_PRIMITIVES; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
504 else if(pending) |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
505 icon_index = PURPLE_STATUS_NUM_PRIMITIVES+1; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
506 else |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
507 icon_index = status; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
508 |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
509 g_return_if_fail(icon_index < (sizeof(cached_icons) / sizeof(HICON))); |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
510 |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
511 /* Look up and cache the HICON if we don't already have it */ |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
512 if (cached_icons[icon_index] == NULL) { |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
513 const gchar *icon_name = NULL; |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
514 switch (status) { |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
515 case PURPLE_STATUS_OFFLINE: |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
516 icon_name = PIDGIN_STOCK_TRAY_OFFLINE; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
517 break; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
518 case PURPLE_STATUS_AWAY: |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
519 icon_name = PIDGIN_STOCK_TRAY_AWAY; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
520 break; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
521 case PURPLE_STATUS_UNAVAILABLE: |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
522 icon_name = PIDGIN_STOCK_TRAY_BUSY; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
523 break; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
524 case PURPLE_STATUS_EXTENDED_AWAY: |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
525 icon_name = PIDGIN_STOCK_TRAY_XA; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
526 break; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
527 case PURPLE_STATUS_INVISIBLE: |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
528 icon_name = PIDGIN_STOCK_TRAY_INVISIBLE; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
529 break; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
530 default: |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
531 icon_name = PIDGIN_STOCK_TRAY_AVAILABLE; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
532 break; |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
533 } |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
534 |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
535 if (pending) |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
536 icon_name = PIDGIN_STOCK_TRAY_PENDING; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
537 if (connecting) |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
538 icon_name = PIDGIN_STOCK_TRAY_CONNECT; |
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
539 |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
540 g_return_if_fail(icon_name != NULL); |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
541 |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
542 cached_icons[icon_index] = load_hicon_from_stock(icon_name); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 } |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
544 |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
545 systray_change_icon(cached_icons[icon_index]); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
548 static void winpidgin_tray_blank_icon() { |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
549 _nicon_data.hIcon = NULL; |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
550 Shell_NotifyIcon(NIM_MODIFY, &_nicon_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
553 static void winpidgin_tray_set_tooltip(gchar *tooltip) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 if (tooltip) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
555 char *locenc = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
556 locenc = g_locale_from_utf8(tooltip, -1, NULL, NULL, NULL); |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
557 lstrcpyn(_nicon_data.szTip, locenc, sizeof(_nicon_data.szTip) / sizeof(TCHAR)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 g_free(locenc); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 } else { |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
560 lstrcpy(_nicon_data.szTip, PIDGIN_NAME); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 } |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
562 Shell_NotifyIcon(NIM_MODIFY, &_nicon_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
563 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
564 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
565 static void winpidgin_tray_minimize(PidginBuddyList *gtkblist) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 MinimizeWndToTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
568 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
569 static void winpidgin_tray_maximize(PidginBuddyList *gtkblist) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
570 RestoreWndFromTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 |
20882
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
573 /* Checks to see if a window matches a specified name. If it matches, |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
574 * the matched_hwnd pointer is set to the checked window. |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
575 * |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
576 * hwnd is the window to check |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
577 * matched_hwnd points to hwnd on a match |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
578 * name is the expected class name |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
579 * |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
580 * returns TRUE if there was a match, otherwise FALSE |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
581 */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
582 static BOOL |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
583 check_hwnd_class_name(HWND hwnd, HWND *matched_hwnd, char *name) |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
584 { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
585 TCHAR class_name[256]; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
586 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
587 /* get class name of window */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
588 GetClassName(hwnd, class_name, 255); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
589 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
590 /* compare class name with specified name */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
591 if(strncmp(class_name, name, 255)!=0) return FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
592 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
593 /* set matched_hwnd to hwnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
594 *matched_hwnd = hwnd; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
595 return TRUE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
596 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
597 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
598 /* callback for EnumChildWindows looking for TrayNotifyWnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
599 static BOOL CALLBACK |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
600 find_tray_notify_hwnd_cb(HWND hwnd, LPARAM lparam) |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
601 { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
602 return !check_hwnd_class_name(hwnd, (HWND*)lparam, "TrayNotifyWnd"); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
603 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
604 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
605 /* callback for EnumChildWindows looking for ToolbarWindow32 */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
606 static BOOL CALLBACK |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
607 find_tray_toolbar_hwnd_cb(HWND hwnd, LPARAM lparam) |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
608 { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
609 return !check_hwnd_class_name(hwnd, (HWND*)lparam, "ToolbarWindow32"); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
610 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
611 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
612 static HWND |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
613 get_tray_toolbar_hwnd() |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
614 { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
615 HWND shell_tray_hwnd = NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
616 HWND tray_notify_hwnd = NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
617 HWND tray_toolbar_hwnd = NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
618 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
619 /* find the top-level window of the system tray area */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
620 shell_tray_hwnd = FindWindow("Shell_TrayWnd", NULL); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
621 if(!shell_tray_hwnd) return NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
622 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
623 /* enumerate over the shell_tray_hwnd children windows looking for the tray_notify_hwnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
624 EnumChildWindows(shell_tray_hwnd, find_tray_notify_hwnd_cb, (LPARAM)&tray_notify_hwnd); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
625 if(!tray_notify_hwnd || !IsWindow(tray_notify_hwnd)) return NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
626 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
627 /* enumerate over the tray_notify_hwnd children windows looking for tray_toolbar_hwnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
628 EnumChildWindows(tray_notify_hwnd, find_tray_toolbar_hwnd_cb, (LPARAM)&tray_toolbar_hwnd); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
629 if(!tray_toolbar_hwnd || !IsWindow(tray_toolbar_hwnd)) return NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
630 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
631 return tray_toolbar_hwnd; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
632 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
633 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
634 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
635 /* Get the geometry of the tray icon. This might break if the user is running a |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
636 * non-standard shell, in which case this function will return FALSE. If the |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
637 * tray icon is hidden (possible >= winxp), then the geometry of the tray itself |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
638 * is returned. If FALSE is returned, x, y, w and h are left unchanged. |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
639 * Any of the parameters (x, y, w, h) may be NULL if that value is not |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
640 * desired. |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
641 * |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
642 * This code is based on the method and code described here by Irek Zielinski: |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
643 * http://www.codeproject.com/shell/ctrayiconposition.asp?msg=999295 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
644 */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
645 static gboolean |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
646 winpidgin_tray_get_geometry(gint *x, gint *y, gint *w, gint *h) |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
647 { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
648 /* systray_hwnd is the parent window of our systray icon */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
649 HWND tray_toolbar_hwnd = NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
650 DWORD tray_toolbar_pid = -1; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
651 HANDLE tray_toolbar_proc = NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
652 int tray_toolbar_bcount = 0; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
653 LPVOID tray_toolbar_mem = NULL; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
654 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
655 TBBUTTON button; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
656 DWORD nbytes = -1; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
657 DWORD hwnd_id_pair[2] = { -1, -1}; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
658 RECT rect; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
659 POINT top_left; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
660 POINT bot_right; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
661 gboolean found_docklet = FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
662 int i; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
663 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
664 /* get the tray_toolbar_hwnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
665 tray_toolbar_hwnd = get_tray_toolbar_hwnd(); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
666 if(!tray_toolbar_hwnd) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
667 return FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
668 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
669 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
670 /* count buttons in the tray_toolbar_hwnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
671 tray_toolbar_bcount = SendMessage(tray_toolbar_hwnd, TB_BUTTONCOUNT, 0, 0); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
672 if(tray_toolbar_bcount < 1) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
673 return FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
674 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
675 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
676 /* get pid of the tray_toolbar_hwnd parent process */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
677 GetWindowThreadProcessId(tray_toolbar_hwnd, &tray_toolbar_pid); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
678 if(tray_toolbar_pid <= 0) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
679 return FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
680 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
681 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
682 /* open the tray_toolbar_hwnd parent process */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
683 tray_toolbar_proc = OpenProcess(PROCESS_ALL_ACCESS, 0, tray_toolbar_pid); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
684 if(!tray_toolbar_proc) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
685 return FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
686 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
687 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
688 /* allocate some memory in the tray_toolbar_hwnd process space */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
689 tray_toolbar_mem = VirtualAllocEx(tray_toolbar_proc, NULL, sizeof(TBBUTTON), MEM_COMMIT, PAGE_READWRITE); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
690 if(!tray_toolbar_mem) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
691 CloseHandle(tray_toolbar_proc); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
692 return FALSE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
693 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
694 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
695 /* loop through buttons, looking for the docklet */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
696 for(i=0; i<tray_toolbar_bcount; i++) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
697 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
698 /* get the button */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
699 SendMessage(tray_toolbar_hwnd, TB_GETBUTTON, i, (LPARAM)tray_toolbar_mem); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
700 ReadProcessMemory(tray_toolbar_proc, tray_toolbar_mem, &button, sizeof(TBBUTTON), &nbytes); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
701 if(nbytes < sizeof(TBBUTTON)) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
702 continue; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
703 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
704 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
705 /* get the dwData from the button */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
706 ReadProcessMemory(tray_toolbar_proc, (LPVOID)button.dwData, &hwnd_id_pair, sizeof(hwnd_id_pair), &nbytes); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
707 if(nbytes < sizeof(hwnd_id_pair)) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
708 continue; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
709 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
710 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
711 /* compare hwnd of button against systray_hwnd */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
712 if((HWND)hwnd_id_pair[0] != systray_hwnd) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
713 continue; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
714 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
715 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
716 /* check if button is hidden */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
717 if(button.fsState & TBSTATE_HIDDEN) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
718 break; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
719 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
720 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
721 /* get RECT of docklet icon */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
722 SendMessage(tray_toolbar_hwnd, TB_GETITEMRECT, i, (LPARAM)tray_toolbar_mem); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
723 ReadProcessMemory(tray_toolbar_proc, tray_toolbar_mem, &rect, sizeof(RECT), &nbytes); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
724 if(nbytes < sizeof(RECT)) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
725 break; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
726 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
727 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
728 /* translate to screen coordinates */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
729 top_left.x = rect.left; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
730 top_left.y = rect.top; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
731 bot_right.x = rect.right; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
732 bot_right.y = rect.bottom; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
733 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
734 MapWindowPoints(tray_toolbar_hwnd, NULL, (LPPOINT)&top_left, 1); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
735 MapWindowPoints(tray_toolbar_hwnd, NULL, (LPPOINT)&bot_right, 1); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
736 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
737 found_docklet = TRUE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
738 break; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
739 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
740 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
741 if(!found_docklet) { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
742 /* fallback on geometry of tray itself */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
743 GetWindowRect(tray_toolbar_hwnd, &rect); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
744 if(x!=NULL) *x = rect.left; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
745 if(y!=NULL) *y = rect.top; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
746 if(w!=NULL) *w = rect.right - rect.left; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
747 if(h!=NULL) *h = rect.bottom - rect.top; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
748 } else { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
749 if(x!=NULL) *x = top_left.x; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
750 if(y!=NULL) *y = top_left.y; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
751 if(w!=NULL) *w = bot_right.x - top_left.x; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
752 if(h!=NULL) *h = bot_right.y - top_left.y; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
753 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
754 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
755 /* clean up */ |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
756 VirtualFreeEx(tray_toolbar_proc, tray_toolbar_mem, 0, MEM_RELEASE); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
757 CloseHandle(tray_toolbar_proc); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
758 return TRUE; |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
759 } |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
760 |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
761 static GObject * |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
762 winpidgin_tray_get_gdk_screen() |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
763 { |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
764 return (GObject *)gdk_screen_get_default(); |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
765 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
766 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
767 static void winpidgin_tray_create() { |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
768 OSVERSIONINFO osinfo; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
769 /* dummy window to process systray messages */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
770 systray_hwnd = systray_create_hiddenwin(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
771 |
20246
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
772 dummy_window = gtk_window_new(GTK_WINDOW_POPUP); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
773 dummy_button = gtk_button_new(); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
774 gtk_container_add(GTK_CONTAINER(dummy_window), dummy_button); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
775 |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
776 /* We trigger the click event indirectly so that gtk_get_current_event_state() is TRUE when the event is handled */ |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
777 g_signal_connect(G_OBJECT(dummy_button), "button-press-event", |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
778 G_CALLBACK(dummy_button_cb), NULL); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
779 |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
780 image = gtk_image_new(); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
781 #if GLIB_CHECK_VERSION(2,10,0) |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
782 g_object_ref_sink(image); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
783 #else |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
784 g_object_ref(image); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
785 gtk_object_sink(GTK_OBJECT(image)); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
786 #endif |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
787 |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
788 osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
789 GetVersionEx(&osinfo); |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
790 |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
791 /* Load icons, and init systray notify icon |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
792 * NOTE: Windows < XP only supports displaying 4-bit images in the Systray, |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
793 * 2K and ME will use the highest color depth that the desktop will support, |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
794 * but will scale it back to 4-bits for display. |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
795 * That is why we use custom 4-bit icons for pre XP Windowses */ |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
796 if (osinfo.dwMajorVersion < 5 || (osinfo.dwMajorVersion == 5 && osinfo.dwMinorVersion == 0)) |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
797 { |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
798 cached_icons[PURPLE_STATUS_OFFLINE] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
799 MAKEINTRESOURCE(PIDGIN_TRAY_OFFLINE_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
800 cached_icons[PURPLE_STATUS_AVAILABLE] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
801 MAKEINTRESOURCE(PIDGIN_TRAY_AVAILABLE_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
802 cached_icons[PURPLE_STATUS_AWAY] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
803 MAKEINTRESOURCE(PIDGIN_TRAY_AWAY_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
804 cached_icons[PURPLE_STATUS_EXTENDED_AWAY] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
805 MAKEINTRESOURCE(PIDGIN_TRAY_XA_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
806 cached_icons[PURPLE_STATUS_UNAVAILABLE] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
807 MAKEINTRESOURCE(PIDGIN_TRAY_BUSY_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
808 cached_icons[PURPLE_STATUS_NUM_PRIMITIVES] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
809 MAKEINTRESOURCE(PIDGIN_TRAY_CONNECTING_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
810 cached_icons[PURPLE_STATUS_NUM_PRIMITIVES+1] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
811 MAKEINTRESOURCE(PIDGIN_TRAY_PENDING_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
16949
06f6768b6e29
Now that the docklet icon is based on the status from status selector, it
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
812 cached_icons[PURPLE_STATUS_INVISIBLE] = (HICON) LoadImage(winpidgin_dll_hinstance(), |
16763 | 813 MAKEINTRESOURCE(PIDGIN_TRAY_INVISIBLE_4BIT), IMAGE_ICON, 16, 16, LR_CREATEDIBSECTION); |
15997
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
814 } |
495800004c0a
4bit icons for windows < XP. These are certainly not as pretty as the originals, but look a lot better than scaled down versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15831
diff
changeset
|
815 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
816 /* Create icon in systray */ |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
817 systray_init_icon(systray_hwnd); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
818 |
15823 | 819 purple_signal_connect(pidgin_blist_get_handle(), "gtkblist-hiding", |
820 pidgin_docklet_get_handle(), PURPLE_CALLBACK(winpidgin_tray_minimize), NULL); | |
821 purple_signal_connect(pidgin_blist_get_handle(), "gtkblist-unhiding", | |
822 pidgin_docklet_get_handle(), PURPLE_CALLBACK(winpidgin_tray_maximize), NULL); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
823 |
15823 | 824 purple_debug_info("docklet", "created\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
825 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
826 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
827 static void winpidgin_tray_destroy() { |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
828 int cached_cnt = sizeof(cached_icons) / sizeof(HICON); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
829 systray_remove_nid(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
830 DestroyWindow(systray_hwnd); |
15501
d75099d2567e
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents:
15461
diff
changeset
|
831 pidgin_docklet_remove(); |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
832 |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
833 while (--cached_cnt >= 0) { |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
834 if (cached_icons[cached_cnt] != NULL) |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
835 DestroyIcon(cached_icons[cached_cnt]); |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
836 cached_icons[cached_cnt] = NULL; |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
837 } |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
838 |
15701
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
839 g_object_unref(image); |
4a331e8d01df
Fix win32 docklet. This is pretty ugly - we'll force GTK+ 2.10 at some point and use GtkStatusIcon to avoid converting the stock images to HICONs directly.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15515
diff
changeset
|
840 image = NULL; |
20246
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
841 |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
842 gtk_widget_destroy(dummy_window); |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
843 dummy_button = NULL; |
426df717a831
applied changes from 0a36aea71847198e73c07cbef0be7e7a7db12c57
Richard Laager <rlaager@wiktel.com>
parents:
19680
diff
changeset
|
844 dummy_window = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
845 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
846 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
847 static struct docklet_ui_ops winpidgin_tray_ops = |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
848 { |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
849 winpidgin_tray_create, |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
850 winpidgin_tray_destroy, |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
851 winpidgin_tray_update_icon, |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
852 winpidgin_tray_blank_icon, |
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
853 winpidgin_tray_set_tooltip, |
20882
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
854 NULL, |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
855 winpidgin_tray_get_geometry, |
38c4fe48ebb5
Add new API to the docklet for retrieving the geometry (x,y,w,h) and the
Casey Harkins <charkins@pidgin.im>
parents:
20246
diff
changeset
|
856 winpidgin_tray_get_gdk_screen |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
857 }; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
858 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
859 /* Used by docklet's plugin load func */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
860 void docklet_ui_init() { |
15709
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
861 /* Initialize the cached icons to NULL */ |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
862 ZeroMemory(cached_icons, sizeof(cached_icons)); |
b2b756b59d81
Cache the converted docklet HICONs. Sean noticed that there are actually .ico files in pixmaps/tray/16 (something that I missed). I'm not sure if I should just use those and eliminate the stock pixmap to HICON conversion hackery or if we can just get rid of those and avoid the duplication.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15701
diff
changeset
|
863 |
15515
75ffc646647f
Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15501
diff
changeset
|
864 pidgin_docklet_set_ui_ops(&winpidgin_tray_ops); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
865 } |