summaryrefslogtreecommitdiff
path: root/plugins/Clist_modern/src/modern_utils.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2025-05-12 17:25:26 +0300
committerGeorge Hazan <george.hazan@gmail.com>2025-05-12 17:25:26 +0300
commitc9c2324e4f13e66c75d886f94dbacac1e28b191f (patch)
tree5dca20847ea0506c79547f7f5dede0fce765889f /plugins/Clist_modern/src/modern_utils.cpp
parentb0862a1dcc840b14b988b64a410bfc9076e624d3 (diff)
fixes #5009 ("Pin to desktop" option doesn't work in all modern Windows)
Diffstat (limited to 'plugins/Clist_modern/src/modern_utils.cpp')
-rw-r--r--plugins/Clist_modern/src/modern_utils.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/plugins/Clist_modern/src/modern_utils.cpp b/plugins/Clist_modern/src/modern_utils.cpp
index 2cea1b9a1a..2210a2c3ab 100644
--- a/plugins/Clist_modern/src/modern_utils.cpp
+++ b/plugins/Clist_modern/src/modern_utils.cpp
@@ -62,3 +62,27 @@ BOOL DestroyIcon_protect(HICON icon)
if (icon) return DestroyIcon(icon);
return FALSE;
}
+
+void GetMonitorRectFromWindow(HWND hWnd, RECT *rc)
+{
+ POINT pt;
+ GetWindowRect(hWnd, rc);
+ pt.x = rc->left;
+ pt.y = rc->top;
+
+ MONITORINFO monitorInfo;
+ HMONITOR hMonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST); // always returns a valid value
+ monitorInfo.cbSize = sizeof(MONITORINFO);
+
+ if (GetMonitorInfoW(hMonitor, &monitorInfo)) {
+ memcpy(rc, &monitorInfo.rcMonitor, sizeof(RECT));
+ return;
+ }
+
+ // "generic" win95/NT support, also serves as failsafe
+ rc->left = 0;
+ rc->top = 0;
+ rc->bottom = GetSystemMetrics(SM_CYSCREEN);
+ rc->right = GetSystemMetrics(SM_CXSCREEN);
+
+}