Zhiyi Zhang : user32: Use get_primary_monitor_rect() helper.
Alexandre Julliard
julliard at winehq.org
Tue May 18 15:42:38 CDT 2021
Module: wine
Branch: master
Commit: 9b2f59cb94d5aa7b8fbe4e0373d933a630b51dc1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9b2f59cb94d5aa7b8fbe4e0373d933a630b51dc1
Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date: Tue May 18 17:11:25 2021 +0800
user32: Use get_primary_monitor_rect() helper.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/input.c | 16 +++++++---------
dlls/user32/sysparams.c | 6 ++----
dlls/user32/user_private.h | 1 +
dlls/user32/win.c | 3 +--
dlls/user32/winpos.c | 7 ++++---
5 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c
index ba0292c8f88..b4e3579f5e8 100644
--- a/dlls/user32/input.c
+++ b/dlls/user32/input.c
@@ -195,17 +195,15 @@ static void update_mouse_coords( INPUT *input )
if (input->u.mi.dwFlags & MOUSEEVENTF_ABSOLUTE)
{
DPI_AWARENESS_CONTEXT context = SetThreadDpiAwarenessContext( DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE );
+ RECT rc;
+
if (input->u.mi.dwFlags & MOUSEEVENTF_VIRTUALDESK)
- {
- RECT rc = get_virtual_screen_rect();
- input->u.mi.dx = rc.left + ((input->u.mi.dx * (rc.right - rc.left)) >> 16);
- input->u.mi.dy = rc.top + ((input->u.mi.dy * (rc.bottom - rc.top)) >> 16);
- }
+ rc = get_virtual_screen_rect();
else
- {
- input->u.mi.dx = (input->u.mi.dx * GetSystemMetrics( SM_CXSCREEN )) >> 16;
- input->u.mi.dy = (input->u.mi.dy * GetSystemMetrics( SM_CYSCREEN )) >> 16;
- }
+ rc = get_primary_monitor_rect();
+
+ input->u.mi.dx = rc.left + ((input->u.mi.dx * (rc.right - rc.left)) >> 16);
+ input->u.mi.dy = rc.top + ((input->u.mi.dy * (rc.bottom - rc.top)) >> 16);
SetThreadDpiAwarenessContext( context );
}
else
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 3d0cb2a6566..015db0db50e 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -366,7 +366,7 @@ static BOOL CALLBACK get_primary_monitor_proc( HMONITOR monitor, HDC hdc, LPRECT
return TRUE;
}
-static RECT get_primary_monitor_rect(void)
+RECT get_primary_monitor_rect(void)
{
RECT rect = {0};
@@ -1818,9 +1818,7 @@ BOOL WINAPI SystemParametersInfoW( UINT uiAction, UINT uiParam,
spi_idx = SPI_SETWORKAREA_IDX;
if (!spi_loaded[spi_idx])
{
- SetRect( &work_area, 0, 0,
- GetSystemMetrics( SM_CXSCREEN ),
- GetSystemMetrics( SM_CYSCREEN ) );
+ work_area = get_primary_monitor_rect();
EnumDisplayMonitors( 0, NULL, enum_monitors, (LPARAM)&work_area );
spi_loaded[spi_idx] = TRUE;
}
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
index 974d18be482..82cf376ef54 100644
--- a/dlls/user32/user_private.h
+++ b/dlls/user32/user_private.h
@@ -261,6 +261,7 @@ extern void update_window_state( HWND hwnd ) DECLSPEC_HIDDEN;
extern void wait_graphics_driver_ready(void) DECLSPEC_HIDDEN;
extern void *get_hook_proc( void *proc, const WCHAR *module, HMODULE *free_module ) DECLSPEC_HIDDEN;
extern RECT get_virtual_screen_rect(void) DECLSPEC_HIDDEN;
+extern RECT get_primary_monitor_rect(void) DECLSPEC_HIDDEN;
extern LRESULT call_current_hook( HHOOK hhook, INT code, WPARAM wparam, LPARAM lparam ) DECLSPEC_HIDDEN;
extern DWORD get_input_codepage( void ) DECLSPEC_HIDDEN;
extern BOOL map_wparam_AtoW( UINT message, WPARAM *wparam, enum wm_char_mapping mapping ) DECLSPEC_HIDDEN;
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 680defc2071..86a1f50ca77 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -855,8 +855,7 @@ BOOL WIN_GetRectangles( HWND hwnd, enum coords_relative relative, RECT *rectWind
}
else
{
- rect.right = GetSystemMetrics(SM_CXSCREEN);
- rect.bottom = GetSystemMetrics(SM_CYSCREEN);
+ rect = get_primary_monitor_rect();
}
if (rectWindow) *rectWindow = rect;
if (rectClient) *rectClient = rect;
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index de5d50d4c3a..5a2b8ccdfe8 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -740,7 +740,7 @@ MINMAXINFO WINPOS_GetMinMaxInfo( HWND hwnd )
if ((monitor = MonitorFromWindow( hwnd, MONITOR_DEFAULTTOPRIMARY )))
{
- RECT rc_work;
+ RECT rc_work, rc_primary;
MONITORINFO mon_info;
mon_info.cbSize = sizeof(mon_info);
@@ -754,8 +754,9 @@ MINMAXINFO WINPOS_GetMinMaxInfo( HWND hwnd )
rc_work = mon_info.rcWork;
}
- if (MinMax.ptMaxSize.x == GetSystemMetrics(SM_CXSCREEN) + 2 * xinc &&
- MinMax.ptMaxSize.y == GetSystemMetrics(SM_CYSCREEN) + 2 * yinc)
+ rc_primary = get_primary_monitor_rect();
+ if (MinMax.ptMaxSize.x == (rc_primary.right - rc_primary.left) + 2 * xinc &&
+ MinMax.ptMaxSize.y == (rc_primary.bottom - rc_primary.top) + 2 * yinc)
{
MinMax.ptMaxSize.x = (rc_work.right - rc_work.left) + 2 * xinc;
MinMax.ptMaxSize.y = (rc_work.bottom - rc_work.top) + 2 * yinc;
More information about the wine-cvs
mailing list