[prev in list] [next in list] [prev in thread] [next in thread]
List: pidgin-commits
Subject: /pidgin/main: fa3c41b69e47: win32: Fix window placement on Windo...
From: Eion Robb <eion () robbmob ! com>
Date: 2016-02-03 20:58:04
Message-ID: hg.fa3c41b69e47.1454533084.-874508059 () rock ! pidgin ! im
[Download RAW message or body]
Changeset: fa3c41b69e47ded8e0214d5e8c8ffc689a8fe051
Author: Eion Robb <eion@robbmob.com>
Date: 2016-02-03 15:56 -0500
Branch: release-2.x.y
URL: https://hg.pidgin.im/pidgin/main/rev/fa3c41b69e47
Description:
win32: Fix window placement on Windows >= Vista. Fixes #16830
diffstat:
pidgin/win32/gtkwin32dep.c | 39 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 38 insertions(+), 1 deletions(-)
diffs (51 lines):
diff --git a/pidgin/win32/gtkwin32dep.c b/pidgin/win32/gtkwin32dep.c
--- a/pidgin/win32/gtkwin32dep.c
+++ b/pidgin/win32/gtkwin32dep.c
@@ -468,9 +468,46 @@ get_WorkingAreaRectForWindow(HWND hwnd,
void winpidgin_ensure_onscreen(GtkWidget *win) {
RECT winR, wAR, intR;
HWND hwnd = GDK_WINDOW_HWND(win->window);
+typedef HRESULT (WINAPI* DwmIsCompositionEnabledFunction)(BOOL*);
+typedef HRESULT (WINAPI* DwmGetWindowAttributeFunction)(HWND, DWORD, PVOID, DWORD);
+static HMODULE dwmapi_module = NULL;
+static DwmIsCompositionEnabledFunction DwmIsCompositionEnabled = NULL;
+static DwmGetWindowAttributeFunction DwmGetWindowAttribute = NULL;
+#ifndef DWMWA_EXTENDED_FRAME_BOUNDS
+# define DWMWA_EXTENDED_FRAME_BOUNDS 9
+#endif
+
+static RECT
+get_actualWindowRect(HWND hwnd)
+{
+ RECT winR;
+
+ GetWindowRect(hwnd, &winR);
+
+ if (dwmapi_module == NULL) {
+ dwmapi_module = GetModuleHandleW(L"dwmapi.dll");
+ if (dwmapi_module != NULL) {
+ DwmIsCompositionEnabled = (DwmIsCompositionEnabledFunction) \
GetProcAddress(dwmapi_module, "DwmIsCompositionEnabled"); + DwmGetWindowAttribute = \
(DwmGetWindowAttributeFunction) GetProcAddress(dwmapi_module, \
"DwmGetWindowAttribute"); + }
+ }
+
+ if (DwmIsCompositionEnabled != NULL && DwmGetWindowAttribute != NULL) {
+ BOOL pfEnabled;
+ if (SUCCEEDED(DwmIsCompositionEnabled(&pfEnabled))) {
+ RECT tempR;
+ if (SUCCEEDED(DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &tempR, \
sizeof(tempR)))) { + winR = tempR;
+ }
+ }
+ }
+
+ return winR;
+}
+
g_return_if_fail(hwnd != NULL);
- GetWindowRect(hwnd, &winR);
+ winR = get_actualWindowRect(hwnd);
purple_debug_info("win32placement",
"Window RECT: L:%ld R:%ld T:%ld B:%ld\n",
_______________________________________________
Commits mailing list
Commits@pidgin.im
https://pidgin.im/cgi-bin/mailman/listinfo/commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic