annotate pidgin/win32/gtkwin32dep.c @ 30977:718c16d7c6c9

Fix this inconsequential compile warning: disco.c: In function ¡Æjabber_disco_server_items_result_cb¡Ç: disco.c:602: warning: unused variable ¡Ænode¡Ç
author Mark Doliner <mark@kingant.net>
date Mon, 13 Sep 2010 09:20:18 +0000
parents 3d045343e04d
children 7f79ac13965c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
1 /**
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
2 * @file gtkwin32dep.c UI Win32 Specific Functionality
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
3 * @ingroup win32
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 *
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
7 * source distribution.
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 *
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 modify
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * (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,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * but 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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 *
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: 18448
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 *
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 #define _WIN32_IE 0x500
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 #ifndef WINVER
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #define WINVER 0x0500 /* W2K */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include <windows.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #include <io.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #include <stdlib.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 #include <stdio.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include <winuser.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 #include <glib.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include <glib/gstdio.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include <gtk/gtk.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #include <gdk/gdkwin32.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38
18448
4b1e2aefeb9d Fix the win32 build. Thanks to Etan and Lee Roach. Fixes #1929.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 17078
diff changeset
39 #include "internal.h"
4b1e2aefeb9d Fix the win32 build. Thanks to Etan and Lee Roach. Fixes #1929.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 17078
diff changeset
40
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 #include "notify.h"
21828
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
43 #include "network.h"
15374
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 #include "resource.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 #include "zlib.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 #include "untar.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 #include "gtkwin32dep.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 #include "win32dep.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 #include "gtkconv.h"
21828
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
52 #include "gtkconn.h"
15613
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
53 #include "util.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 #include "wspell.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 * GLOBALS
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 */
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
59 HINSTANCE exe_hInstance = 0;
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
60 HINSTANCE dll_hInstance = 0;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 HWND messagewin_hwnd;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 static int gtkwin32_handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63
21828
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
64 static gboolean pwm_handles_connections = TRUE;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 * PUBLIC CODE
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70
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: 15823
diff changeset
71 HINSTANCE winpidgin_exe_hinstance(void) {
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
72 return exe_hInstance;
15374
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
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: 15823
diff changeset
75 HINSTANCE winpidgin_dll_hinstance(void) {
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: 15823
diff changeset
76 return dll_hInstance;
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: 15823
diff changeset
77 }
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: 15823
diff changeset
78
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
79 int winpidgin_gz_decompress(const char* in, const char* out) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 gzFile fin;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 FILE *fout;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 char buf[1024];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 int ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 if((fin = gzopen(in, "rb"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 if(!(fout = g_fopen(out, "wb"))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
87 purple_debug_error("winpidgin_gz_decompress", "Error opening file: %s\n", out);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 gzclose(fin);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
93 purple_debug_error("winpidgin_gz_decompress", "gzopen failed to open: %s\n", in);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 while((ret = gzread(fin, buf, 1024))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 if(fwrite(buf, 1, ret, fout) < ret) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
99 purple_debug_error("wpurple_gz_decompress", "Error writing %d bytes to file\n", ret);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 gzclose(fin);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 fclose(fout);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 fclose(fout);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 gzclose(fin);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 if(ret < 0) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
109 purple_debug_error("winpidgin_gz_decompress", "gzread failed while reading: %s\n", in);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 }
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 return 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
116 int winpidgin_gz_untar(const char* filename, const char* destdir) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 char tmpfile[_MAX_PATH];
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
118 char template[]="wpidginXXXXXX";
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 sprintf(tmpfile, "%s%s%s", g_get_tmp_dir(), G_DIR_SEPARATOR_S, _mktemp(template));
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
121 if(winpidgin_gz_decompress(filename, tmpfile)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 int ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 if(untar(tmpfile, destdir, UNTAR_FORCE | UNTAR_QUIET))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 ret = 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
126 purple_debug_error("winpidgin_gz_untar", "Failure untarring %s\n", tmpfile);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 ret = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 g_unlink(tmpfile);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 return ret;
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 else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
133 purple_debug_error("winpidgin_gz_untar", "Failed to gz decompress %s\n", filename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 return 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
138 void winpidgin_shell_execute(const char *target, const char *verb, const char *clazz) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139
29493
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
140 SHELLEXECUTEINFOW wsinfo;
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
141 wchar_t *w_uri, *w_verb, *w_clazz = NULL;
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
142
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 g_return_if_fail(target != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 g_return_if_fail(verb != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145
29493
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
146 w_uri = g_utf8_to_utf16(target, -1, NULL, NULL, NULL);
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
147 w_verb = g_utf8_to_utf16(verb, -1, NULL, NULL, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148
29493
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
149 memset(&wsinfo, 0, sizeof(wsinfo));
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
150 wsinfo.cbSize = sizeof(wsinfo);
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
151 wsinfo.lpVerb = w_verb;
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
152 wsinfo.lpFile = w_uri;
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
153 wsinfo.nShow = SW_SHOWNORMAL;
29757
2ad2e3490b23 propagate from branch 'im.pidgin.pidgin' (head 1d831e835bac31debd4d67cc75397c378c00bc7e)
Paul Aurich <paul@darkrain42.org>
parents: 29431 29620
diff changeset
154 wsinfo.fMask |= SEE_MASK_FLAG_NO_UI;
29493
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
155 if (clazz != NULL) {
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
156 w_clazz = g_utf8_to_utf16(clazz, -1, NULL, NULL, NULL);
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
157 wsinfo.fMask |= SEE_MASK_CLASSNAME;
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
158 wsinfo.lpClass = w_clazz;
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
159 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160
29493
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
161 if(!ShellExecuteExW(&wsinfo))
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
162 purple_debug_error("winpidgin", "Error opening URI: %s error: %d\n",
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
163 target, (int) wsinfo.hInstApp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164
29493
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
165 g_free(w_uri);
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
166 g_free(w_verb);
224f9674a57e Remove some win9x specific code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23784
diff changeset
167 g_free(w_clazz);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
171 void winpidgin_notify_uri(const char *uri) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 /* We'll allow whatever URI schemes are supported by the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 * default http browser.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 */
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
175 winpidgin_shell_execute(uri, "open", "http");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177
15613
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
178 #define PIDGIN_WM_FOCUS_REQUEST (WM_APP + 13)
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
179 #define PIDGIN_WM_PROTOCOL_HANDLE (WM_APP + 14)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180
21828
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
181 static void*
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
182 winpidgin_netconfig_changed_cb(void *data)
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
183 {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
184 pwm_handles_connections = FALSE;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
185
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
186 return NULL;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
187 }
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
188
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
189 static void*
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
190 winpidgin_get_handle(void)
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
191 {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
192 static int handle;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
193
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
194 return &handle;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
195 }
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
196
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
197 static gboolean
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
198 winpidgin_pwm_reconnect()
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
199 {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
200 purple_signal_disconnect(purple_network_get_handle(), "network-configuration-changed",
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
201 winpidgin_get_handle(), PURPLE_CALLBACK(winpidgin_netconfig_changed_cb));
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
202
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
203 if (pwm_handles_connections == TRUE) {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
204 PurpleConnectionUiOps *ui_ops = pidgin_connections_get_ui_ops();
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
205
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
206 purple_debug_info("winpidgin", "Resumed from standby, reconnecting accounts.\n");
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
207
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
208 if (ui_ops != NULL && ui_ops->network_connected != NULL)
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
209 ui_ops->network_connected();
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
210 } else {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
211 purple_debug_info("winpidgin", "Resumed from standby, gtkconn will handle reconnecting.\n");
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
212 pwm_handles_connections = TRUE;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
213 }
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
214
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
215 return FALSE;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
216 }
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
217
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 static LRESULT CALLBACK message_window_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
219
15613
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
220 if (msg == PIDGIN_WM_FOCUS_REQUEST) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
221 purple_debug_info("winpidgin", "Got external Buddy List focus request.");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
222 purple_blist_set_visible(TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223 return TRUE;
15613
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
224 } else if (msg == PIDGIN_WM_PROTOCOL_HANDLE) {
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
225 char *proto_msg = (char *) lparam;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
226 purple_debug_info("winpidgin", "Got protocol handler request: %s\n", proto_msg ? proto_msg : "");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
227 purple_got_protocol_handler_uri(proto_msg);
15613
b0471b2a1de9 Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15516
diff changeset
228 return TRUE;
21828
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
229 } else if (msg == WM_POWERBROADCAST) {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
230 if (wparam == PBT_APMQUERYSUSPEND) {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
231 purple_debug_info("winpidgin", "Windows requesting permission to suspend.\n");
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
232 return TRUE;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
233 } else if (wparam == PBT_APMSUSPEND) {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
234 PurpleConnectionUiOps *ui_ops = pidgin_connections_get_ui_ops();
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
235
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
236 purple_debug_info("winpidgin", "Entering system standby, disconnecting accounts.\n");
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
237
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
238 if (ui_ops != NULL && ui_ops->network_disconnected != NULL)
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
239 ui_ops->network_disconnected();
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
240
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
241 purple_signal_connect(purple_network_get_handle(), "network-configuration-changed", winpidgin_get_handle(),
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
242 PURPLE_CALLBACK(winpidgin_netconfig_changed_cb), NULL);
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
243
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
244 return TRUE;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
245 } else if (wparam == PBT_APMRESUMESUSPEND) {
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
246 purple_debug_info("winpidgin", "Resuming from system standby.\n");
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
247 /* TODO: It seems like it'd be wise to use the NLA message, if possible, instead of this. */
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
248 purple_timeout_add_seconds(1, winpidgin_pwm_reconnect, NULL);
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
249 return TRUE;
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
250 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253 return DefWindowProc(hwnd, msg, wparam, lparam);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
256 static HWND winpidgin_message_window_init(void) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 HWND win_hwnd;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 WNDCLASSEX wcx;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 LPCTSTR wname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
261 wname = TEXT("WinpidginMsgWinCls");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
262
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263 wcx.cbSize = sizeof(wcx);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 wcx.style = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265 wcx.lpfnWndProc = message_window_handler;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266 wcx.cbClsExtra = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 wcx.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: 15823
diff changeset
268 wcx.hInstance = winpidgin_exe_hinstance();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269 wcx.hIcon = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270 wcx.hCursor = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 wcx.hbrBackground = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272 wcx.lpszMenuName = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 wcx.lpszClassName = wname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 wcx.hIconSm = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276 RegisterClassEx(&wcx);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
277
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278 /* Create the window */
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
279 if(!(win_hwnd = CreateWindow(wname, TEXT("WinpidginMsgWin"), 0, 0, 0, 0, 0,
21828
85fcbd3b9d32 This is a great patch from Lee Roach to make Pidgin on win32 deal with system suspend / resume. It seems to work really well, hopefully this'll make some folks happy. If something doesn't work right, it is probably my fault. Fixes #480.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21528
diff changeset
280 NULL, NULL, winpidgin_exe_hinstance(), 0))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
281 purple_debug_error("winpidgin",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 "Unable to create message window.\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 return win_hwnd;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 static gboolean stop_flashing(GtkWidget *widget, GdkEventFocus *event, gpointer data) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 GtkWindow *window = data;
17077
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
291 gpointer handler_id;
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
292
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
293 winpidgin_window_flash(window, FALSE);
17077
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
294
23784
d9d388a27d01 Use the "Flash taskbar button X times" value from the win32 Tweak UI "Prevent
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21828
diff changeset
295 if ((handler_id = g_object_get_data(G_OBJECT(window), "flash_stop_handler_id"))) {
17077
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
296 g_signal_handler_disconnect(G_OBJECT(window), (gulong) GPOINTER_TO_UINT(handler_id));
23784
d9d388a27d01 Use the "Flash taskbar button X times" value from the win32 Tweak UI "Prevent
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21828
diff changeset
297 g_object_steal_data(G_OBJECT(window), "flash_stop_handler_id");
d9d388a27d01 Use the "Flash taskbar button X times" value from the win32 Tweak UI "Prevent
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21828
diff changeset
298 }
17077
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
299
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 void
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
304 winpidgin_window_flash(GtkWindow *window, gboolean flash) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 GdkWindow * gdkwin;
29803
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
306 FLASHWINFO info;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 g_return_if_fail(window != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 gdkwin = GTK_WIDGET(window)->window;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 g_return_if_fail(GDK_IS_WINDOW(gdkwin));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 g_return_if_fail(GDK_WINDOW_TYPE(gdkwin) != GDK_WINDOW_CHILD);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 if(GDK_WINDOW_DESTROYED(gdkwin))
16264
47907d031291 Don't flash the conv. window if it is in the foreground.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16062
diff changeset
316 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317
29803
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
318 memset(&info, 0, sizeof(FLASHWINFO));
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
319 info.cbSize = sizeof(FLASHWINFO);
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
320 info.hwnd = GDK_WINDOW_HWND(gdkwin);
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
321 if (flash) {
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
322 DWORD flashCount;
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
323 info.uCount = 3;
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
324 if (SystemParametersInfo(SPI_GETFOREGROUNDFLASHCOUNT, 0, &flashCount, 0))
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
325 info.uCount = flashCount;
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
326 info.dwFlags = FLASHW_ALL | FLASHW_TIMER;
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
327 } else
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
328 info.dwFlags = FLASHW_STOP;
30359
129f973c38b5 Fix a regression in 2.7.0 that caused window flashing not to work on Windows.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29885
diff changeset
329 FlashWindowEx(&info);
29803
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
330 info.dwTimeout = 0;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334 void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
335 winpidgin_conv_blink(PurpleConversation *conv, PurpleMessageFlags flags) {
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15374
diff changeset
336 PidginWindow *win;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337 GtkWindow *window;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339 /* Don't flash for our own messages or system messages */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
340 if(flags & PURPLE_MESSAGE_SEND || flags & PURPLE_MESSAGE_SYSTEM)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 if(conv == NULL) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
344 purple_debug_info("winpidgin", "No conversation found to blink.\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347
15502
6fde15c1dcfc pidginconv to pidgin_conv
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
348 win = pidgin_conv_get_window(PIDGIN_CONVERSATION(conv));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349 if(win == NULL) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
350 purple_debug_info("winpidgin", "No conversation windows found to blink.\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
351 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353 window = GTK_WINDOW(win->window);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
354
16264
47907d031291 Don't flash the conv. window if it is in the foreground.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16062
diff changeset
355 /* Don't flash if the window is in the foreground */
47907d031291 Don't flash the conv. window if it is in the foreground.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16062
diff changeset
356 if (GetForegroundWindow() == GDK_WINDOW_HWND(GTK_WIDGET(window)->window))
47907d031291 Don't flash the conv. window if it is in the foreground.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16062
diff changeset
357 return;
47907d031291 Don't flash the conv. window if it is in the foreground.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16062
diff changeset
358
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
359 winpidgin_window_flash(window, TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
360 /* Stop flashing when window receives focus */
17077
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
361 if (g_object_get_data(G_OBJECT(window), "flash_stop_handler_id") == NULL) {
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
362 gulong handler_id = g_signal_connect(G_OBJECT(window), "focus-in-event",
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
363 G_CALLBACK(stop_flashing), window);
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
364 g_object_set_data(G_OBJECT(window), "flash_stop_handler_id", GUINT_TO_POINTER(handler_id));
c3add818a46c Don't stop all windows from flashing when any Windows Pidgin window is focused. I also noticed that we were registering a callback for the focus-in-event for each flash start and never unregistering it, so this fixes that too. Fixes #554.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16264
diff changeset
365 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368 static gboolean
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
369 winpidgin_conv_im_blink(PurpleAccount *account, const char *who, char **message,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
370 PurpleConversation *conv, PurpleMessageFlags flags, void *data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
371 {
16062
07554cc5d090 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <stu@nosnilmot.com>
parents: 15997
diff changeset
372 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/win32/blink_im"))
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
373 winpidgin_conv_blink(conv, flags);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
377 void winpidgin_init(HINSTANCE hint) {
29885
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
378 FARPROC proc;
30900
3d045343e04d Use some fully qualified dll locations.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30893
diff changeset
379 gchar *exchndl_dll_path;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
381 purple_debug_info("winpidgin", "winpidgin_init start\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
383 exe_hInstance = hint;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
384
30900
3d045343e04d Use some fully qualified dll locations.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30893
diff changeset
385 exchndl_dll_path = g_build_filename(wpurple_install_dir(), "exchndl.dll", NULL);
3d045343e04d Use some fully qualified dll locations.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30893
diff changeset
386 proc = wpurple_find_and_loadproc(exchndl_dll_path, "SetLogFile");
3d045343e04d Use some fully qualified dll locations.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30893
diff changeset
387 g_free(exchndl_dll_path);
3d045343e04d Use some fully qualified dll locations.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30893
diff changeset
388 exchndl_dll_path = NULL;
29885
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
389 if (proc) {
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
390 gchar *debug_dir, *locale_debug_dir;
30893
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
391
29885
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
392 debug_dir = g_build_filename(purple_user_dir(), "pidgin.RPT", NULL);
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
393 locale_debug_dir = g_locale_from_utf8(debug_dir, -1, NULL, NULL, NULL);
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
394
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
395 purple_debug_info("winpidgin", "Setting exchndl.dll LogFile to %s\n", debug_dir);
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
396
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
397 (proc)(locale_debug_dir);
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
398
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
399 g_free(debug_dir);
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
400 g_free(locale_debug_dir);
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
401 }
80e05718db82 Make Pidgin set the exchndl.dll log file to ~/.purple/pidgin.RPT
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29803
diff changeset
402
15638
026f9c6cc942 winpidgin warning fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15613
diff changeset
403 winpidgin_spell_init();
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
404 purple_debug_info("winpidgin", "GTK+ :%u.%u.%u\n",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 gtk_major_version, gtk_minor_version, gtk_micro_version);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
407 messagewin_hwnd = winpidgin_message_window_init();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
409 purple_debug_info("winpidgin", "winpidgin_init end\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
412 void winpidgin_post_init(void) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413
16062
07554cc5d090 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <stu@nosnilmot.com>
parents: 15997
diff changeset
414 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/win32");
07554cc5d090 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <stu@nosnilmot.com>
parents: 15997
diff changeset
415 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/win32/blink_im", TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
417 purple_signal_connect(pidgin_conversations_get_handle(),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
418 "displaying-im-msg", &gtkwin32_handle, PURPLE_CALLBACK(winpidgin_conv_im_blink),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423 /* Windows Cleanup */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
425 void winpidgin_cleanup(void) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
426 purple_debug_info("winpidgin", "winpidgin_cleanup\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 if(messagewin_hwnd)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 DestroyWindow(messagewin_hwnd);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 /* DLL initializer */
15638
026f9c6cc942 winpidgin warning fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15613
diff changeset
434 /* suppress gcc "no previous prototype" warning */
026f9c6cc942 winpidgin warning fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15613
diff changeset
435 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
437 dll_hInstance = hinstDLL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442 get_WorkingAreaRectForWindow(HWND hwnd, RECT *workingAreaRc) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444 HMONITOR monitor;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445 MONITORINFO info;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446
29803
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
447 monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449 info.cbSize = sizeof(info);
29803
c3cd8f9fe4b1 Avoid looking up functions by name that will be present on all supported Windows versions.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29757
diff changeset
450 if(!GetMonitorInfo(monitor, &info))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 CopyRect(workingAreaRc, &(info.rcWork));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15502
diff changeset
457 void winpidgin_ensure_onscreen(GtkWidget *win) {
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
458 RECT winR, wAR, intR;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 HWND hwnd = GDK_WINDOW_HWND(win->window);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 g_return_if_fail(hwnd != NULL);
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
462 GetWindowRect(hwnd, &winR);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
464 purple_debug_info("win32placement",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 "Window RECT: L:%ld R:%ld T:%ld B:%ld\n",
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
466 winR.left, winR.right,
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
467 winR.top, winR.bottom);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
468
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
469 if(!get_WorkingAreaRectForWindow(hwnd, &wAR)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
470 purple_debug_info("win32placement",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
471 "Couldn't get multimonitor working area\n");
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
472 if(!SystemParametersInfo(SPI_GETWORKAREA, 0, &wAR, FALSE)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
473 /* I don't think this will ever happen */
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
474 wAR.left = 0;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
475 wAR.top = 0;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
476 wAR.bottom = GetSystemMetrics(SM_CYSCREEN);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
477 wAR.right = GetSystemMetrics(SM_CXSCREEN);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
479 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
481 purple_debug_info("win32placement",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482 "Working Area RECT: L:%ld R:%ld T:%ld B:%ld\n",
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
483 wAR.left, wAR.right,
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
484 wAR.top, wAR.bottom);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
486 /** If the conversation window doesn't intersect perfectly, move it to do so */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
487 if(!(IntersectRect(&intR, &winR, &wAR)
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
488 && EqualRect(&intR, &winR))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15638
diff changeset
489 purple_debug_info("win32placement",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 "conversation window out of working area, relocating\n");
20242
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
491
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
492 /* Make sure the working area is big enough. */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
493 if ((winR.right - winR.left) <= (wAR.right - wAR.left)
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
494 && (winR.bottom - winR.top) <= (wAR.bottom - wAR.top)) {
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
495 /* Is it off the bottom? */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
496 if (winR.bottom > wAR.bottom) {
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
497 winR.top = wAR.bottom - (winR.bottom - winR.top);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
498 winR.bottom = wAR.bottom;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
499 }
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
500 /* Is it off the top? */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
501 else if (winR.top < wAR.top) {
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
502 winR.bottom = wAR.top + (winR.bottom - winR.top);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
503 winR.top = wAR.top;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
504 }
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
505
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
506 /* Is it off the left? */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
507 if (winR.left < wAR.left) {
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
508 winR.right = wAR.left + (winR.right - winR.left);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
509 winR.left = wAR.left;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
510 }
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
511 /* Is it off the right? */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
512 else if (winR.right > wAR.right) {
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
513 winR.left = wAR.right - (winR.right - winR.left);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
514 winR.right = wAR.right;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
515 }
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
516
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
517 } else {
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
518 /* We couldn't salvage it; move it to the top left corner of the working area */
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
519 winR.right = wAR.left + (winR.right - winR.left);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
520 winR.bottom = wAR.top + (winR.bottom - winR.top);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
521 winR.left = wAR.left;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
522 winR.top = wAR.top;
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
523 }
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
524
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
525 purple_debug_info("win32placement",
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
526 "Relocation RECT: L:%ld R:%ld T:%ld B:%ld\n",
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
527 winR.left, winR.right,
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
528 winR.top, winR.bottom);
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
529
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
530 MoveWindow(hwnd, winR.left, winR.top,
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
531 (winR.right - winR.left),
c320bc7b1383 applied changes from 1036f20a46ec1ba10dd2519fd09b44a607cdf202
Richard Laager <rlaager@wiktel.com>
parents: 19680
diff changeset
532 (winR.bottom - winR.top), TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533 }
30893
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
534
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536
30893
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
537 DWORD winpidgin_get_lastactive() {
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
538 DWORD result = 0;
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
539
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
540 LASTINPUTINFO lii;
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
541 memset(&lii, 0, sizeof(lii));
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
542 lii.cbSize = sizeof(lii);
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
543 if (GetLastInputInfo(&lii))
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
544 result = lii.dwTime;
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
545
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
546 return result;
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
547 }
80affba7ea0d Kill the win32 idle tracking code that works on old windows versions and move
Daniel Atallah <daniel.atallah@gmail.com>
parents: 30359
diff changeset
548