win32u: Move NtUserChangeClipboardChain implementation from user32.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2022-04-22 14:45:59 +02:00 committed by Alexandre Julliard
parent c38e287bef
commit 357d8654c9
8 changed files with 37 additions and 29 deletions

View file

@ -702,33 +702,6 @@ BOOL WINAPI EmptyClipboard(void)
}
/**************************************************************************
* ChangeClipboardChain (USER32.@)
*/
BOOL WINAPI ChangeClipboardChain( HWND hwnd, HWND next )
{
NTSTATUS status;
HWND viewer;
if (!hwnd) return FALSE;
SERVER_START_REQ( set_clipboard_viewer )
{
req->viewer = wine_server_user_handle( next );
req->previous = wine_server_user_handle( hwnd );
status = wine_server_call( req );
viewer = wine_server_ptr_handle( reply->old_viewer );
}
SERVER_END_REQ;
if (status == STATUS_PENDING)
return !SendMessageW( viewer, WM_CHANGECBCHAIN, (WPARAM)hwnd, (LPARAM)next );
if (status) SetLastError( RtlNtStatusToDosError( status ));
return !status;
}
/**************************************************************************
* SetClipboardData (USER32.@)
*/

View file

@ -33,7 +33,7 @@
@ stdcall CallWindowProcW(ptr long long long long)
@ stdcall CascadeChildWindows(long long)
@ stdcall CascadeWindows(long long ptr long ptr)
@ stdcall ChangeClipboardChain(long long)
@ stdcall ChangeClipboardChain(long long) NtUserChangeClipboardChain
@ stdcall ChangeDisplaySettingsA(ptr long)
@ stdcall ChangeDisplaySettingsExA(str ptr long long ptr)
@ stdcall ChangeDisplaySettingsExW(wstr ptr long long ptr)

View file

@ -274,6 +274,32 @@ HWND WINAPI NtUserGetClipboardViewer(void)
return viewer;
}
/**************************************************************************
* NtUserChangeClipboardChain (win32u.@)
*/
BOOL WINAPI NtUserChangeClipboardChain( HWND hwnd, HWND next )
{
NTSTATUS status;
HWND viewer;
if (!hwnd) return FALSE;
SERVER_START_REQ( set_clipboard_viewer )
{
req->viewer = wine_server_user_handle( next );
req->previous = wine_server_user_handle( hwnd );
status = wine_server_call( req );
viewer = wine_server_ptr_handle( reply->old_viewer );
}
SERVER_END_REQ;
if (status == STATUS_PENDING)
return !send_message( viewer, WM_CHANGECBCHAIN, (WPARAM)hwnd, (LPARAM)next );
if (status) SetLastError( RtlNtStatusToDosError( status ));
return !status;
}
/**************************************************************************
* NtUserGetOpenClipboardWindow (win32u.@)
*/

View file

@ -1139,6 +1139,7 @@ static struct unix_funcs unix_funcs =
NtUserCallNoParam,
NtUserCallOneParam,
NtUserCallTwoParam,
NtUserChangeClipboardChain,
NtUserChangeDisplaySettings,
NtUserClipCursor,
NtUserCloseClipboard,

View file

@ -782,7 +782,7 @@
@ stdcall NtUserCallOneParam(long long)
@ stdcall NtUserCallTwoParam(long long long)
@ stub NtUserCanBrokerForceForeground
@ stub NtUserChangeClipboardChain
@ stdcall NtUserChangeClipboardChain(long long)
@ stdcall NtUserChangeDisplaySettings(ptr ptr long long ptr)
@ stub NtUserChangeWindowMessageFilterEx
@ stub NtUserCheckAccessForIntegrityLevel

View file

@ -191,6 +191,7 @@ struct unix_funcs
ULONG_PTR (WINAPI *pNtUserCallNoParam)( ULONG code );
ULONG_PTR (WINAPI *pNtUserCallOneParam)( ULONG_PTR arg, ULONG code );
ULONG_PTR (WINAPI *pNtUserCallTwoParam)( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
BOOL (WINAPI *pNtUserChangeClipboardChain)( HWND hwnd, HWND next );
LONG (WINAPI *pNtUserChangeDisplaySettings)( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
DWORD flags, void *lparam );
BOOL (WINAPI *pNtUserClipCursor)( const RECT *rect );

View file

@ -755,6 +755,12 @@ BOOL WINAPI NtUserCloseClipboard(void)
return unix_funcs->pNtUserCloseClipboard();
}
BOOL WINAPI NtUserChangeClipboardChain( HWND hwnd, HWND next )
{
if (!unix_funcs) return DISP_CHANGE_FAILED;
return unix_funcs->pNtUserChangeClipboardChain( hwnd, next );
}
LONG WINAPI NtUserChangeDisplaySettings( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
DWORD flags, void *lparam )
{

View file

@ -417,6 +417,7 @@ LRESULT WINAPI NtUserCallNextHookEx( HHOOK hhook, INT code, WPARAM wparam, LPARA
ULONG_PTR WINAPI NtUserCallNoParam( ULONG code );
ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code );
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
BOOL WINAPI NtUserChangeClipboardChain( HWND hwnd, HWND next );
LONG WINAPI NtUserChangeDisplaySettings( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
DWORD flags, void *lparam );
DWORD WINAPI NtUserCheckMenuItem( HMENU handle, UINT id, UINT flags );