annotate plugins/win32/winprefs/gtkappbar.c @ 10531:940f0d8ce380

[gaim-migrate @ 11858] This is multi-monitor support for docking. This also should fix the multiple "Show Desktop" request causing the contents of of the docked buddy list to permanently disappear. I also added a handling of a couple Window Manager events that probably aren't really necessary, but the MSDN docs say they are. This is certainly not C89 compliant (variable declaration), but it is win32 API, so it probably doesn't matter. committer: Tailor Script <tailor@pidgin.im>
author Daniel Atallah <daniel.atallah@gmail.com>
date Thu, 20 Jan 2005 03:16:04 +0000
parents 719fc957e9ee
children f348b3439ce4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
1 /*
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
2 * gaim - WinGaim Options Plugin
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
3 *
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
4 * File: gtkappbar.c
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
5 * Date: August 2, 2003
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
6 * Description: Appbar functionality for Windows GTK+ applications
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
7 *
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
8 * Copyright (C) 2003, Herman Bloggs <hermanator12002@yahoo.com>
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
9 *
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
13 * (at your option) any later version.
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
14 *
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
18 * GNU General Public License for more details.
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
19 *
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
23 *
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
24 */
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
25 /*
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
26 * TODO:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
27 * - Move 'App on top' feature from Trans plugin to here
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 6436
diff changeset
28 * - Bug: Multiple Show/Hide Desktop calls causes client area to disappear
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
29 */
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
30 #include <windows.h>
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
31 #include <winver.h>
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
32 #include <stdio.h>
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
33 #include <gtk/gtk.h>
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
34 #include <gdk/gdkwin32.h>
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
35 #include "gtkappbar.h"
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
36 #include "debug.h"
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
37
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
38 #define APPBAR_CALLBACK WM_USER + 1010
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
39
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
40 typedef HMONITOR WINAPI gaim_MonitorFromPoint(POINT, DWORD);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
41 typedef HMONITOR WINAPI gaim_MonitorFromWindow(HWND, DWORD);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
42 typedef BOOL WINAPI gaim_GetMonitorInfo(HMONITOR, LPMONITORINFO);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
43
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
44 /* Retrieve the rectangular display area from the specified monitor
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
45 * Return TRUE if successful, otherwise FALSE
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
46 */
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
47 static gboolean
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
48 get_rect_from_monitor(HMODULE hmod, HMONITOR monitor, RECT *rect) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
49 gaim_GetMonitorInfo *the_GetMonitorInfo;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
50
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
51 if (!(the_GetMonitorInfo = (gaim_GetMonitorInfo*)
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
52 GetProcAddress(hmod, "GetMonitorInfoA"))) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
53 return FALSE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
54 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
55
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
56 MONITORINFO info;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
57 info.cbSize = sizeof(info);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
58 if (!the_GetMonitorInfo(monitor, &info)) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
59 return FALSE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
60 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
61
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
62 CopyRect(rect, &(info.rcMonitor));
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
63
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
64 return TRUE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
65 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
66
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
67 /**
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
68 * This will only work on Win98+ and Win2K+
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
69 * Return TRUE if successful, otherwise FALSE
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
70 */
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
71 static gboolean
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
72 get_rect_at_point_multimonitor(POINT pt, RECT *rect) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
73 HMODULE hmod;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
74
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
75 if (!(hmod = GetModuleHandle("user32"))) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
76 return FALSE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
77 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
78
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
79 gaim_MonitorFromPoint *the_MonitorFromPoint;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
80 if (!(the_MonitorFromPoint = (gaim_MonitorFromPoint*)
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
81 GetProcAddress(hmod, "MonitorFromPoint"))) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
82 return FALSE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
83 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
84
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
85 HMONITOR monitor =
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
86 the_MonitorFromPoint(pt, MONITOR_DEFAULTTOPRIMARY);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
87
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
88 return get_rect_from_monitor(hmod, monitor, rect);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
89 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
90
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
91 /**
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
92 * This will only work on Win98+ and Win2K+
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
93 * Return TRUE if successful, otherwise FALSE
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
94 */
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
95 static gboolean
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
96 get_rect_of_window_multimonitor(HWND window, RECT *rect) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
97 HMODULE hmod;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
98
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
99 if (!(hmod = GetModuleHandle("user32"))) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
100 return FALSE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
101 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
102
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
103 gaim_MonitorFromWindow *the_MonitorFromWindow;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
104 if (!(the_MonitorFromWindow = (gaim_MonitorFromWindow*)
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
105 GetProcAddress(hmod, "MonitorFromWindow"))) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
106 return FALSE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
107 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
108
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
109 HMONITOR monitor =
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
110 the_MonitorFromWindow(window, MONITOR_DEFAULTTOPRIMARY);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
111
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
112 return get_rect_from_monitor(hmod, monitor, rect);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
113 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
114
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
115 /*
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
116 * Fallback if cannot get the RECT from the monitor directly
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
117 */
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
118 static void get_default_workarea(RECT *rect) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
119 if (!SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, FALSE)) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
120 /* I don't think this will ever happen */
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
121 rect->left = 0;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
122 rect->top = 0;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
123 rect->bottom = GetSystemMetrics(SM_CYSCREEN);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
124 rect->right = GetSystemMetrics(SM_CXSCREEN);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
125 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
126 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
127
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
128 /* Retrieve the rectangle of the active work area at a point */
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
129 static RECT get_rect_at_point(POINT pt) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
130 RECT rc;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
131 if (!get_rect_at_point_multimonitor(pt, &rc)) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
132 get_default_workarea(&rc);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
133 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
134 return rc;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
135 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
136
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
137 /* Retrieve the rectangle of the active work area of a window*/
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
138 static RECT get_rect_of_window(HWND window) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
139 RECT rc;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
140 if (!get_rect_of_window_multimonitor(window, &rc)) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
141 get_default_workarea(&rc);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
142 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
143 return rc;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
144 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
145
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
146 static void get_window_normal_rc(HWND hwnd, RECT *rc) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
147 WINDOWPLACEMENT wplc;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
148 GetWindowPlacement(hwnd, &wplc);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
149 CopyRect(rc, &wplc.rcNormalPosition);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
150 }
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
151 #if 0
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
152 static void print_rect(RECT *rc) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
153 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "RECT: L:%ld R:%ld T:%ld B:%ld\n",
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
154 rc->left, rc->right, rc->top, rc->bottom);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
155 }
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
156 #endif
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
157 static void set_toolbar(HWND hwnd, gboolean val) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
158 LONG style=0;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
159
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
160 style = GetWindowLong(hwnd, GWL_EXSTYLE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
161 if(val && !(style & WS_EX_TOOLWINDOW))
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
162 style |= WS_EX_TOOLWINDOW;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
163 else if(!val && style & WS_EX_TOOLWINDOW)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
164 style &= ~WS_EX_TOOLWINDOW;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
165 else
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
166 return;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
167 SetWindowLong(hwnd, GWL_EXSTYLE, style);
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
168 SetWindowPos(hwnd, 0, 0, 0, 0, 0,
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
169 SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
170
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
171 /* This really should be the following, but SWP_FRAMECHANGED strangely causes initermittent problems "Show Desktop" done more than once.
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
172 * Not having SWP_FRAMECHANGED *should* cause the Style not to be applied, but i haven't noticed any problems
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
173 * SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
174 */
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
175 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
176
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
177 static gboolean gtk_appbar_register(GtkAppBar *ab, HWND hwnd) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
178 APPBARDATA abd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
179
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
180 abd.cbSize = sizeof(APPBARDATA);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
181 abd.hWnd = hwnd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
182 abd.uCallbackMessage = APPBAR_CALLBACK;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
183
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
184 ab->registered = SHAppBarMessage(ABM_NEW, &abd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
185
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
186 return ab->registered;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
187 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
188
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
189 static gboolean gtk_appbar_unregister(GtkAppBar *ab, HWND hwnd) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
190 APPBARDATA abd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
191
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
192 if(!ab->registered)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
193 return TRUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
194
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
195 abd.cbSize = sizeof(APPBARDATA);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
196 abd.hWnd = hwnd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
197
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
198 ab->registered = !SHAppBarMessage(ABM_REMOVE, &abd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
199
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
200 if(!ab->registered) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
201 ab->docked = FALSE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
202 ab->docking = FALSE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
203 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
204 return !ab->registered;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
205 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
206
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
207 static void gtk_appbar_querypos(GtkAppBar *ab, HWND hwnd, RECT rcWorkspace) {
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
208 APPBARDATA abd;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
209 guint iWidth = 0;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
210
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
211 if(!ab->registered)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
212 gtk_appbar_register(ab, hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
213
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
214 abd.hWnd = hwnd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
215 abd.cbSize = sizeof(APPBARDATA);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
216 abd.uEdge = ab->side;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
217
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
218 iWidth = ab->docked_rect.right - ab->docked_rect.left;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
219
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
220 abd.rc.top = rcWorkspace.top;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
221 abd.rc.bottom = rcWorkspace.bottom;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
222 switch (abd.uEdge)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
223 {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
224 case ABE_LEFT:
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
225 abd.rc.left = rcWorkspace.left;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
226 abd.rc.right = rcWorkspace.left + iWidth;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
227 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
228
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
229 case ABE_RIGHT:
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
230 abd.rc.right = rcWorkspace.right;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
231 abd.rc.left = rcWorkspace.right - iWidth;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
232 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
233 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
234
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
235 /* Ask the system for the screen space */
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
236 SHAppBarMessage(ABM_QUERYPOS, &abd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
237
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
238 switch (abd.uEdge)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
239 {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
240 case ABE_LEFT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
241 abd.rc.right = abd.rc.left + iWidth;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
242 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
243
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
244 case ABE_RIGHT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
245 abd.rc.left = abd.rc.right - iWidth;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
246 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
247 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
248
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
249 CopyRect(&(ab->docked_rect), &abd.rc);
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
250 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
251
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
252 static void gtk_appbar_setpos(GtkAppBar *ab, HWND hwnd) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
253 APPBARDATA abd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
254
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
255 if(!ab->registered)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
256 gtk_appbar_register(ab, hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
257
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
258 abd.hWnd = hwnd;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
259 abd.cbSize = sizeof(APPBARDATA);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
260 CopyRect(&abd.rc, &(ab->docked_rect));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
261 abd.uEdge = ab->side;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
262
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
263 SHAppBarMessage(ABM_SETPOS, &abd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
264 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
265
6436
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
266 static void gtk_appbar_dispatch_dock_cbs(GtkAppBar *ab, gboolean val) {
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
267 GList *lst = ab->dock_cbs;
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
268
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
269 while(lst) {
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
270 GtkAppBarDockCB dock_cb = lst->data;
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
271 dock_cb(val);
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
272 lst = lst->next;
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
273 }
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
274 }
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
275
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
276 static GdkFilterReturn wnd_moving(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
277 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
278 POINT cp;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
279 RECT *rc = (RECT*)msg->lParam;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
280 RECT monRect;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
281 int side = -1;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
282 long dockAreaWidth = 0;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
283
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
284 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_moving\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
285
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
286 GetCursorPos(&cp);
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
287 monRect = get_rect_at_point(cp);
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
288
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
289 dockAreaWidth = (monRect.right - monRect.left) / 10;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
290 /* Which part of the screen are we in ? */
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
291 if (cp.x > (monRect.right - dockAreaWidth)) {
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
292 side = ABE_RIGHT;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
293 } else if (cp.x < (monRect.left + dockAreaWidth)) {
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
294 side = ABE_LEFT;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
295 }
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
296
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
297 if(!ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
298 if( (side == ABE_RIGHT || side == ABE_LEFT) ) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
299 if( !ab->docking ) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
300 ab->side = side;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
301 GetWindowRect(msg->hwnd, &(ab->docked_rect));
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
302 gtk_appbar_querypos(ab, msg->hwnd, monRect);
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
303
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
304 /* save pre-docking height */
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
305 ab->undocked_height = rc->bottom - rc->top;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
306 ab->docking = TRUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
307 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
308 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
309 else
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
310 ab->docking = FALSE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
311 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
312 else if(side < 0) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
313 gtk_appbar_unregister(ab, msg->hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
314 rc->bottom = rc->top + ab->undocked_height;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
315 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
316
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
317 /* Switch to toolbar/regular caption*/
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
318 if(ab->docking)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
319 set_toolbar(msg->hwnd, TRUE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
320 else if(!ab->docked)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
321 set_toolbar(msg->hwnd, FALSE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
322
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
323 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
324 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
325
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
326 static GdkFilterReturn wnd_sizing(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
327 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
328
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
329 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_sizing\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
330 if(ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
331 RECT *rc = (RECT*)msg->lParam;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
332 if(ab->side == ABE_LEFT && msg->wParam == WMSZ_RIGHT) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
333 ab->docked_rect.right = rc->right;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
334 gtk_appbar_setpos(ab, msg->hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
335 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
336 else if(ab->side == ABE_RIGHT && msg->wParam == WMSZ_LEFT) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
337 ab->docked_rect.left = rc->left;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
338 gtk_appbar_setpos(ab, msg->hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
339 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
340 return GDK_FILTER_REMOVE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
341 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
342 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
343 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
344
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
345 static GdkFilterReturn wnd_activate(GdkXEvent *xevent) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
346 APPBARDATA abd;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
347 MSG *msg = (MSG*)xevent;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
348 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_activate\n");
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
349
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
350 abd.hWnd = msg->hwnd;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
351 abd.cbSize = sizeof(APPBARDATA);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
352
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
353 SHAppBarMessage(ABM_ACTIVATE, &abd);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
354 return GDK_FILTER_CONTINUE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
355 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
356
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
357 static GdkFilterReturn wnd_poschanged(GdkXEvent *xevent) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
358 APPBARDATA abd;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
359 MSG *msg = (MSG*)xevent;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
360 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n");
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
361
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
362 abd.hWnd = msg->hwnd;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
363 abd.cbSize = sizeof(APPBARDATA);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
364
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
365 SHAppBarMessage(ABM_WINDOWPOSCHANGED, &abd);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
366 return GDK_FILTER_CONTINUE;
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
367 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
368
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
369 static GdkFilterReturn wnd_poschanging(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
370 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
371 WINDOWPOS *wpos = (WINDOWPOS*)msg->lParam;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
372
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
373 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_poschanging\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
374
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
375 if(ab->docked || ab->docking) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
376 wpos->x = ab->docked_rect.left;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
377 wpos->y = ab->docked_rect.top;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
378 wpos->cx = ab->docked_rect.right - ab->docked_rect.left;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
379 wpos->cy = ab->docked_rect.bottom - ab->docked_rect.top;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
380 if(IsIconic(msg->hwnd))
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
381 set_toolbar(msg->hwnd, FALSE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
382 /*return GDK_FILTER_REMOVE;*/
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
383 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
384 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
385 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
386
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
387 static GdkFilterReturn wnd_exitsizemove(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
388 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
389
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
390 if(ab->docking) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
391 gtk_appbar_setpos(ab, msg->hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
392 ab->docking = FALSE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
393 ab->docked = TRUE;
6436
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
394 gtk_appbar_dispatch_dock_cbs(ab, TRUE);
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
395 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
396 else if(!ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
397 gtk_appbar_unregister(ab, msg->hwnd);
6436
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
398 gtk_appbar_dispatch_dock_cbs(ab, FALSE);
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
399 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
400
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
401 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
402 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
403
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
404 static GdkFilterReturn wnd_showwindow(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
405 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
406
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
407 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_showwindow\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
408 if(msg->wParam && ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
409 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "shown\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
410 ab->docked = FALSE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
411 gtk_appbar_dock(ab, ab->side);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
412
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
413 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
414 else if(!msg->wParam && ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
415 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "hidden\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
416 gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
417 set_toolbar(GDK_WINDOW_HWND(ab->win->window), FALSE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
418 ab->docked = TRUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
419 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
420 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
421 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
422
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
423 static GdkFilterReturn wnd_size(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
424 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
425
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
426 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_size\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
427
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
428 if(msg->wParam == SIZE_MINIMIZED) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
429 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "Minimize\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
430 if(ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
431 gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
432 ab->docked = TRUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
433 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
434 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
435 else if(msg->wParam == SIZE_RESTORED) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
436 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "Restore\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
437 if(ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
438 gtk_appbar_dock(ab, ab->side);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
439 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
440 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
441 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
442 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
443
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
444 static GdkFilterReturn wnd_nchittest(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
445 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
446
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
447 if(ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
448 UINT ret = DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
449
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
450 switch(ret) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
451 case HTBOTTOM:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
452 case HTBOTTOMLEFT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
453 case HTBOTTOMRIGHT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
454 case HTTOP:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
455 case HTTOPLEFT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
456 case HTTOPRIGHT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
457 return GDK_FILTER_REMOVE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
458 case HTLEFT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
459 if(ab->side == ABE_LEFT)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
460 return GDK_FILTER_REMOVE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
461 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
462 case HTRIGHT:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
463 if(ab->side == ABE_RIGHT)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
464 return GDK_FILTER_REMOVE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
465 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
466 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
467 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
468 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
469 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
470
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
471 #if 0
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
472 static GdkFilterReturn wnd_initmenupopup(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
473 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
474
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
475 if(ab->docked && HIWORD(msg->lParam)) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
476 HMENU sysmenu = GetSystemMenu(msg->hwnd, FALSE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
477 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "wnd_initpopupmenu: docked: %d ismenu: %d\n", ab->docked, IsMenu(sysmenu));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
478 if(EnableMenuItem(sysmenu, SC_MAXIMIZE, MF_BYCOMMAND|MF_GRAYED)<0)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
479 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "SC_MAXIMIZE Menu item does not exist\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
480 if(EnableMenuItem(sysmenu, SC_MOVE, MF_BYCOMMAND|MF_GRAYED)<0)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
481 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "SC_MOVE Menu item does not exist\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
482 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
483 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
484 else
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
485 GetSystemMenu(msg->hwnd, TRUE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
486 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
487 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
488 #endif
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
489
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
490 static GdkFilterReturn gtk_appbar_callback(GtkAppBar *ab, GdkXEvent *xevent) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
491 MSG *msg = (MSG*)xevent;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
492 RECT orig;
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
493
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
494 switch (msg->wParam) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
495 case ABN_STATECHANGE:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
496 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: ABN_STATECHANGE\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
497 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
498
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
499 case ABN_FULLSCREENAPP:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
500 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam);
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
501 if ((BOOL)msg->lParam) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
502 SetWindowPos(msg->hwnd, HWND_BOTTOM, 0, 0, 0, 0,
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
503 SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
504 } else {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
505 SetWindowPos(msg->hwnd, HWND_TOPMOST, 0, 0, 0, 0,
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
506 SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
507 }
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
508
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
509 break;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
510
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
511 case ABN_POSCHANGED:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
512 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: ABN_POSCHANGED\n");
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
513 CopyRect(&orig, &(ab->docked_rect));
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
514 gtk_appbar_querypos(ab, msg->hwnd, get_rect_of_window(msg->hwnd));
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
515 if (EqualRect(&orig, &(ab->docked_rect)) == 0) {
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
516 MoveWindow(msg->hwnd, ab->docked_rect.left, ab->docked_rect.top,
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
517 ab->docked_rect.right - ab->docked_rect.left,
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
518 ab->docked_rect.bottom - ab->docked_rect.top, TRUE);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
519 }
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
520 gtk_appbar_setpos(ab, msg->hwnd);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
521 break;
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
522 #if 0
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
523 default:
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
524 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: %d\n", msg->wParam);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
525 #endif
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
526 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
527 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
528 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
529
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
530 static GdkFilterReturn gtk_appbar_event_filter(GdkXEvent *xevent, GdkEvent *event, gpointer data) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
531 MSG *msg = (MSG*)xevent;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
532
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
533 /*printf("MSG: %s\n", message_to_string (msg->message));*/
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
534 switch(msg->message) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
535 case WM_EXITSIZEMOVE:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
536 return wnd_exitsizemove(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
537 case WM_WINDOWPOSCHANGING:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
538 return wnd_poschanging(data, xevent);
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
539 case WM_WINDOWPOSCHANGED:
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
540 return wnd_poschanged(xevent);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
541 case WM_ACTIVATE:
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
542 return wnd_activate(xevent);
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
543 case WM_SIZING:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
544 return wnd_sizing(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
545 case WM_MOVING:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
546 return wnd_moving(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
547 case WM_SHOWWINDOW:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
548 return wnd_showwindow(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
549 case WM_NCHITTEST:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
550 return wnd_nchittest(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
551 #if 0
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
552 case WM_INITMENUPOPUP:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
553 return wnd_initmenupopup(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
554 #endif
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
555 case WM_SIZE:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
556 return wnd_size(data, xevent);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
557 case APPBAR_CALLBACK:
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
558 return gtk_appbar_callback(data, xevent);
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
559 #if 0
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
560 default:
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
561 gaim_debug_info("gtkappbar", "gtk_appbar_event_filter %d\n", msg->message);
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
562 #endif
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
563 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
564 return GDK_FILTER_CONTINUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
565 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
566
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
567 void gtk_appbar_dock(GtkAppBar *ab, UINT side) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
568 RECT orig;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
569
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
570 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_dock\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
571
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
572 if(!ab || !IsWindow(GDK_WINDOW_HWND(ab->win->window)))
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
573 return;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
574
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
575 ab->side = side;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
576 get_window_normal_rc(GDK_WINDOW_HWND(ab->win->window), &(ab->docked_rect));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
577 CopyRect(&orig, &(ab->docked_rect));
10531
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
578 gtk_appbar_querypos(ab, GDK_WINDOW_HWND(ab->win->window),
940f0d8ce380 [gaim-migrate @ 11858]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 9795
diff changeset
579 get_rect_of_window(GDK_WINDOW_HWND(ab->win->window)));
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
580 if(EqualRect(&orig, &(ab->docked_rect)) == 0)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
581 MoveWindow(GDK_WINDOW_HWND(ab->win->window),
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
582 ab->docked_rect.left,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
583 ab->docked_rect.top,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
584 ab->docked_rect.right - ab->docked_rect.left,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
585 ab->docked_rect.bottom - ab->docked_rect.top, TRUE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
586 gtk_appbar_setpos(ab, GDK_WINDOW_HWND(ab->win->window));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
587 set_toolbar(GDK_WINDOW_HWND(ab->win->window), TRUE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
588 ab->docked = TRUE;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
589 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
590
6436
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
591 void gtk_appbar_add_dock_cb(GtkAppBar *ab, GtkAppBarDockCB dock_cb) {
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
592 if(!ab)
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
593 return;
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
594 ab->dock_cbs = g_list_append(ab->dock_cbs, dock_cb);
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
595 }
759a81390b36 [gaim-migrate @ 6944]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6409
diff changeset
596
6409
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
597 GtkAppBar *gtk_appbar_add(GtkWidget *win) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
598 GtkAppBar *ab;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
599
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
600 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_add\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
601
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
602 if(!win)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
603 return NULL;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
604 ab = g_new0(GtkAppBar, 1);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
605 ab->win = win;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
606
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
607 /* init docking coords */
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
608 get_window_normal_rc(GDK_WINDOW_HWND(win->window), &(ab->docked_rect));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
609
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
610 /* Add main window filter */
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
611 gdk_window_add_filter(win->window,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
612 gtk_appbar_event_filter,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
613 ab);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
614 return ab;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
615 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
616
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
617 void gtk_appbar_remove(GtkAppBar *ab) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
618 gaim_debug(GAIM_DEBUG_INFO, "gtkappbar", "gtk_appbar_remove\n");
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
619
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
620 if(!ab)
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
621 return;
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
622 gdk_window_remove_filter(ab->win->window,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
623 gtk_appbar_event_filter,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
624 ab);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
625 if(ab->docked) {
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
626 gtk_window_resize(GTK_WINDOW(ab->win),
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
627 ab->docked_rect.right - ab->docked_rect.left,
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
628 ab->undocked_height);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
629 set_toolbar(GDK_WINDOW_HWND(ab->win->window), FALSE);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
630 }
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
631 gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window));
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
632
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
633 g_free(ab);
752d0600b514 [gaim-migrate @ 6915]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
diff changeset
634 }