Module: wine Branch: master Commit: f80204011322f4652133057e2217af5cf4f1f98a URL: https://gitlab.winehq.org/wine/wine/-/commit/f80204011322f4652133057e2217af5...
Author: Rémi Bernon rbernon@codeweavers.com Date: Mon Jun 3 20:27:46 2024 +0200
win32u: Parameterize get_monitor_info dpi.
---
dlls/win32u/defwnd.c | 2 +- dlls/win32u/input.c | 2 +- dlls/win32u/menu.c | 2 +- dlls/win32u/sysparams.c | 5 ++--- dlls/win32u/win32u_private.h | 2 +- dlls/win32u/window.c | 10 +++++----- 6 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/dlls/win32u/defwnd.c b/dlls/win32u/defwnd.c index 95ad9481958..f549f922fd7 100644 --- a/dlls/win32u/defwnd.c +++ b/dlls/win32u/defwnd.c @@ -826,7 +826,7 @@ static void sys_command_size_move( HWND hwnd, WPARAM wparam ) mon = newmon;
info.cbSize = sizeof(info); - if (mon && get_monitor_info( mon, &info )) + if (mon && get_monitor_info( mon, &info, get_thread_dpi() )) { pt.x = max( pt.x, info.rcWork.left ); pt.x = min( pt.x, info.rcWork.right - 1 ); diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c index 05d8eb05d12..5b25086cb6f 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -2520,7 +2520,7 @@ BOOL clip_fullscreen_window( HWND hwnd, BOOL reset ) if (!reset && clipping_cursor && thread_info->clipping_cursor) return FALSE; /* already clipping */
if (!(monitor = NtUserMonitorFromWindow( hwnd, MONITOR_DEFAULTTONEAREST ))) return FALSE; - if (!NtUserGetMonitorInfo( monitor, &monitor_info )) return FALSE; + if (!get_monitor_info( monitor, &monitor_info, 0 )) return FALSE; if (!grab_fullscreen) { RECT virtual_rect = NtUserGetVirtualScreenRect(); diff --git a/dlls/win32u/menu.c b/dlls/win32u/menu.c index 05eb5445395..8a3f1350004 100644 --- a/dlls/win32u/menu.c +++ b/dlls/win32u/menu.c @@ -3068,7 +3068,7 @@ static BOOL show_popup( HWND owner, HMENU hmenu, UINT id, UINT flags, pt.y = y; monitor = monitor_from_point( pt, MONITOR_DEFAULTTONEAREST, get_thread_dpi() ); info.cbSize = sizeof(info); - get_monitor_info( monitor, &info ); + get_monitor_info( monitor, &info, get_thread_dpi() );
max_height = info.rcWork.bottom - info.rcWork.top; if (menu->cyMax) max_height = min( max_height, menu->cyMax ); diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 23b03d858a3..e465ec66af3 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -3594,10 +3594,9 @@ BOOL WINAPI NtUserEnumDisplayMonitors( HDC hdc, RECT *rect, MONITORENUMPROC proc return ret; }
-BOOL get_monitor_info( HMONITOR handle, MONITORINFO *info ) +BOOL get_monitor_info( HMONITOR handle, MONITORINFO *info, UINT dpi ) { struct monitor *monitor; - UINT dpi = get_thread_dpi();
if (info->cbSize != sizeof(MONITORINFOEXW) && info->cbSize != sizeof(MONITORINFO)) return FALSE;
@@ -6484,7 +6483,7 @@ ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code return get_menu_info( UlongToHandle(arg1), (MENUINFO *)arg2 );
case NtUserCallTwoParam_GetMonitorInfo: - return get_monitor_info( UlongToHandle(arg1), (MONITORINFO *)arg2 ); + return get_monitor_info( UlongToHandle(arg1), (MONITORINFO *)arg2, get_thread_dpi() );
case NtUserCallTwoParam_GetSystemMetricsForDpi: return get_system_metrics_for_dpi( arg1, arg2 ); diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 43cdda55e2c..96517ef081a 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -163,7 +163,7 @@ extern LONG get_char_dimensions( HDC hdc, TEXTMETRICW *metric, int *height ); extern INT get_display_depth( UNICODE_STRING *name ); extern RECT get_display_rect( const WCHAR *display ); extern UINT get_monitor_dpi( HMONITOR monitor ); -extern BOOL get_monitor_info( HMONITOR handle, MONITORINFO *info ); +extern BOOL get_monitor_info( HMONITOR handle, MONITORINFO *info, UINT dpi ); extern UINT get_win_monitor_dpi( HWND hwnd ); extern RECT get_primary_monitor_rect( UINT dpi ); extern DWORD get_process_layout(void); diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index eed4b914331..8ca49afcd87 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -2355,7 +2355,7 @@ static BOOL get_work_rect( HWND hwnd, RECT *rect ) if (!monitor) return FALSE;
mon_info.cbSize = sizeof(mon_info); - get_monitor_info( monitor, &mon_info ); + get_monitor_info( monitor, &mon_info, get_thread_dpi() ); *rect = mon_info.rcMonitor;
style = get_window_long( hwnd, GWL_STYLE ); @@ -2508,7 +2508,7 @@ static void make_rect_onscreen( RECT *rect ) HMONITOR monitor = monitor_from_rect( rect, MONITOR_DEFAULTTONEAREST, get_thread_dpi() );
info.cbSize = sizeof(info); - if (!monitor || !get_monitor_info( monitor, &info )) return; + if (!monitor || !get_monitor_info( monitor, &info, get_thread_dpi() )) return; /* FIXME: map coordinates from rcWork to rcMonitor */ if (rect->right <= info.rcWork.left) { @@ -4019,7 +4019,7 @@ static POINT get_minimized_pos( HWND hwnd, POINT pt ) HMONITOR monitor = monitor_from_window( hwnd, MONITOR_DEFAULTTOPRIMARY, get_thread_dpi() );
mon_info.cbSize = sizeof( mon_info ); - get_monitor_info( monitor, &mon_info ); + get_monitor_info( monitor, &mon_info, get_thread_dpi() ); parent_rect = mon_info.rcWork; } else get_client_rect( parent, &parent_rect, get_thread_dpi() ); @@ -4203,7 +4203,7 @@ static UINT arrange_iconic_windows( HWND parent ) HMONITOR monitor = monitor_from_window( 0, MONITOR_DEFAULTTOPRIMARY, get_thread_dpi() );
mon_info.cbSize = sizeof( mon_info ); - get_monitor_info( monitor, &mon_info ); + get_monitor_info( monitor, &mon_info, get_thread_dpi() ); parent_rect = mon_info.rcWork; } else get_client_rect( parent, &parent_rect, get_thread_dpi() ); @@ -5035,7 +5035,7 @@ static void fix_cs_coordinates( CREATESTRUCTW *cs, INT *sw )
monitor = monitor_from_window( cs->hwndParent, MONITOR_DEFAULTTOPRIMARY, get_thread_dpi() ); mon_info.cbSize = sizeof(mon_info); - get_monitor_info( monitor, &mon_info ); + get_monitor_info( monitor, &mon_info, get_thread_dpi() );
if (is_default_coord( cs->x )) {