Jacek Caban : win32u: Export NtUserGetWindowPlacement.
Alexandre Julliard
julliard at winehq.org
Thu May 19 16:15:13 CDT 2022
Module: wine
Branch: master
Commit: a15df248e5fb52765cdad856167e49e28ad4fbc5
URL: https://source.winehq.org/git/wine.git/?a=commit;h=a15df248e5fb52765cdad856167e49e28ad4fbc5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu May 19 13:52:43 2022 +0200
win32u: Export NtUserGetWindowPlacement.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/user32.spec | 2 +-
dlls/user32/winpos.c | 14 +-------------
dlls/win32u/gdiobj.c | 1 +
dlls/win32u/sysparams.c | 2 +-
dlls/win32u/win32u.spec | 2 +-
dlls/win32u/win32u_private.h | 2 +-
dlls/win32u/window.c | 11 +++++------
dlls/win32u/wrappers.c | 6 ++++++
include/ntuser.h | 8 +-------
9 files changed, 18 insertions(+), 30 deletions(-)
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index d251b80fb70..c153b6dbfe3 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -412,7 +412,7 @@
@ stdcall GetWindowModuleFileName(long ptr long) GetWindowModuleFileNameA
@ stdcall GetWindowModuleFileNameA(long ptr long)
@ stdcall GetWindowModuleFileNameW(long ptr long)
-@ stdcall GetWindowPlacement(long ptr)
+@ stdcall GetWindowPlacement(long ptr) NtUserGetWindowPlacement
@ stdcall GetWindowRect(long ptr)
@ stdcall GetWindowRgn(long long)
@ stdcall GetWindowRgnBox(long ptr)
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index e4eee036f07..03fe731ee0e 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -225,7 +225,7 @@ UINT WINAPI GetInternalWindowPos( HWND hwnd, LPRECT rectWnd,
WINDOWPLACEMENT wndpl;
wndpl.length = sizeof(wndpl);
- if (GetWindowPlacement( hwnd, &wndpl ))
+ if (NtUserGetWindowPlacement( hwnd, &wndpl ))
{
if (rectWnd) *rectWnd = wndpl.rcNormalPosition;
if (ptIcon) *ptIcon = wndpl.ptMinPosition;
@@ -235,18 +235,6 @@ UINT WINAPI GetInternalWindowPos( HWND hwnd, LPRECT rectWnd,
}
-/***********************************************************************
- * GetWindowPlacement (USER32.@)
- *
- * Win95:
- * Fails if wndpl->length of Win95 (!) apps is invalid.
- */
-BOOL WINAPI GetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl )
-{
- return NtUserGetWindowPlacement( hwnd, wndpl );
-}
-
-
/***********************************************************************
* AnimateWindow (USER32.@)
* Shows/Hides a window with an animation
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c
index 053ca5aa8f1..edb21456d8d 100644
--- a/dlls/win32u/gdiobj.c
+++ b/dlls/win32u/gdiobj.c
@@ -1184,6 +1184,7 @@ static struct unix_funcs unix_funcs =
NtUserGetUpdateRect,
NtUserGetUpdateRgn,
NtUserGetUpdatedClipboardFormats,
+ NtUserGetWindowPlacement,
NtUserHideCaret,
NtUserIsClipboardFormatAvailable,
NtUserMapVirtualKeyEx,
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c
index f9491313384..8a99e4095f9 100644
--- a/dlls/win32u/sysparams.c
+++ b/dlls/win32u/sysparams.c
@@ -2163,7 +2163,7 @@ HMONITOR monitor_from_window( HWND hwnd, DWORD flags, UINT dpi )
TRACE( "(%p, 0x%08x)\n", hwnd, flags );
wp.length = sizeof(wp);
- if (is_iconic( hwnd ) && get_window_placement( hwnd, &wp ))
+ if (is_iconic( hwnd ) && NtUserGetWindowPlacement( hwnd, &wp ))
return monitor_from_rect( &wp.rcNormalPosition, flags, dpi );
if (get_window_rect( hwnd, &rect, dpi ))
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 7ef2a4b2c7e..48c10fd45d3 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -1014,7 +1014,7 @@
@ stub NtUserGetWindowFeedbackSetting
@ stub NtUserGetWindowGroupId
@ stub NtUserGetWindowMinimizeRect
-@ stub NtUserGetWindowPlacement
+@ stdcall NtUserGetWindowPlacement(long ptr)
@ stub NtUserGetWindowProcessHandle
@ stdcall -syscall NtUserGetWindowRgnEx(long long long)
@ stub NtUserGhostWindowFromHungWindow
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index 0e1afb80e62..c7340018830 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -246,6 +246,7 @@ struct unix_funcs
BOOL (WINAPI *pNtUserGetUpdateRect)( HWND hwnd, RECT *rect, BOOL erase );
INT (WINAPI *pNtUserGetUpdateRgn)( HWND hwnd, HRGN hrgn, BOOL erase );
BOOL (WINAPI *pNtUserGetUpdatedClipboardFormats)( UINT *formats, UINT size, UINT *out_size );
+ BOOL (WINAPI *pNtUserGetWindowPlacement)( HWND hwnd, WINDOWPLACEMENT *placement );
BOOL (WINAPI *pNtUserHideCaret)( HWND hwnd );
BOOL (WINAPI *pNtUserIsClipboardFormatAvailable)( UINT format );
UINT (WINAPI *pNtUserMapVirtualKeyEx)( UINT code, UINT type, HKL layout );
@@ -442,7 +443,6 @@ extern HWND get_full_window_handle( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND get_parent( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND get_hwnd_message_parent(void) DECLSPEC_HIDDEN;
extern DPI_AWARENESS_CONTEXT get_window_dpi_awareness_context( HWND hwnd ) DECLSPEC_HIDDEN;
-extern BOOL get_window_placement( HWND hwnd, WINDOWPLACEMENT *placement ) DECLSPEC_HIDDEN;
extern MINMAXINFO get_min_max_info( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND get_window_relative( HWND hwnd, UINT rel ) DECLSPEC_HIDDEN;
extern DWORD get_window_thread( HWND hwnd, DWORD *process ) DECLSPEC_HIDDEN;
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c
index 440052d6e0b..338063f5fb5 100644
--- a/dlls/win32u/window.c
+++ b/dlls/win32u/window.c
@@ -2400,8 +2400,10 @@ static BOOL empty_point( POINT pt )
return pt.x == -1 && pt.y == -1;
}
-/* see GetWindowPlacement */
-BOOL get_window_placement( HWND hwnd, WINDOWPLACEMENT *placement )
+/***********************************************************************
+ * NtUserGetWindowPlacement (win32u.@)
+ */
+BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement )
{
RECT work_rect = get_maximized_work_rect( hwnd );
WND *win = get_win_ptr( hwnd );
@@ -4036,7 +4038,7 @@ static UINT window_min_maximize( HWND hwnd, UINT cmd, RECT *rect )
TRACE( "%p %u\n", hwnd, cmd );
wpl.length = sizeof(wpl);
- get_window_placement( hwnd, &wpl );
+ NtUserGetWindowPlacement( hwnd, &wpl );
if (call_hooks( WH_CBT, HCBT_MINMAX, (WPARAM)hwnd, cmd, TRUE ))
return SWP_NOSIZE | SWP_NOMOVE;
@@ -5393,9 +5395,6 @@ ULONG_PTR WINAPI NtUserCallHwndParam( HWND hwnd, DWORD_PTR param, DWORD code )
case NtUserCallHwndParam_GetWindowLongPtrW:
return get_window_long_ptr( hwnd, param, FALSE );
- case NtUserCallHwndParam_GetWindowPlacement:
- return get_window_placement( hwnd, (WINDOWPLACEMENT *)param );
-
case NtUserCallHwndParam_GetWindowRect:
return get_window_rect( hwnd, (RECT *)param, get_thread_dpi() );
diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c
index 953de0caafc..13b4b7164ab 100644
--- a/dlls/win32u/wrappers.c
+++ b/dlls/win32u/wrappers.c
@@ -1023,6 +1023,12 @@ BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *ou
return unix_funcs->pNtUserGetUpdatedClipboardFormats( formats, size, out_size );
}
+BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement )
+{
+ if (!unix_funcs) return FALSE;
+ return unix_funcs->pNtUserGetWindowPlacement( hwnd, placement );
+}
+
BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format )
{
if (!unix_funcs) return FALSE;
diff --git a/include/ntuser.h b/include/ntuser.h
index bc60f421f0e..c7490eaad0a 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -577,6 +577,7 @@ HDESK WINAPI NtUserGetThreadDesktop( DWORD thread );
INT WINAPI NtUserGetUpdateRgn( HWND hwnd, HRGN hrgn, BOOL erase );
BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size );
BOOL WINAPI NtUserGetUpdateRect( HWND hwnd, RECT *rect, BOOL erase );
+BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement );
int WINAPI NtUserGetWindowRgnEx( HWND hwnd, HRGN hrgn, UINT unk );
BOOL WINAPI NtUserHideCaret( HWND hwnd );
NTSTATUS WINAPI NtUserInitializeClientPfnArrays( const struct user_client_procs *client_procsA,
@@ -1000,7 +1001,6 @@ enum
NtUserCallHwndParam_GetWindowLongW,
NtUserCallHwndParam_GetWindowLongPtrA,
NtUserCallHwndParam_GetWindowLongPtrW,
- NtUserCallHwndParam_GetWindowPlacement,
NtUserCallHwndParam_GetWindowRect,
NtUserCallHwndParam_GetWindowRelative,
NtUserCallHwndParam_GetWindowThread,
@@ -1093,12 +1093,6 @@ static inline LONG NtUserGetWindowLongW( HWND hwnd, INT offset )
return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowLongW );
}
-static inline BOOL NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl )
-{
- return NtUserCallHwndParam( hwnd, (UINT_PTR)wndpl,
- NtUserCallHwndParam_GetWindowPlacement );
-}
-
static inline BOOL NtUserGetWindowRect( HWND hwnd, RECT *rect )
{
return NtUserCallHwndParam( hwnd, (UINT_PTR)rect, NtUserCallHwndParam_GetWindowRect );
More information about the wine-cvs
mailing list