Module: wine Branch: master Commit: c38e287befdf1f2910d7e23ccff5638d57cd411d URL: https://source.winehq.org/git/wine.git/?a=commit;h=c38e287befdf1f2910d7e23cc...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Apr 22 14:45:43 2022 +0200
win32u: Move NtUserSetClipboardViewer 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
---
dlls/user32/clipboard.c | 25 ------------------------- dlls/user32/user32.spec | 2 +- dlls/win32u/clipboard.c | 26 ++++++++++++++++++++++++++ dlls/win32u/gdiobj.c | 1 + dlls/win32u/win32u.spec | 2 +- dlls/win32u/win32u_private.h | 1 + dlls/win32u/wrappers.c | 6 ++++++ include/ntuser.h | 1 + 8 files changed, 37 insertions(+), 27 deletions(-)
diff --git a/dlls/user32/clipboard.c b/dlls/user32/clipboard.c index f2861fce28f..0a502de5846 100644 --- a/dlls/user32/clipboard.c +++ b/dlls/user32/clipboard.c @@ -702,31 +702,6 @@ BOOL WINAPI EmptyClipboard(void) }
-/************************************************************************** - * SetClipboardViewer (USER32.@) - */ -HWND WINAPI SetClipboardViewer( HWND hwnd ) -{ - HWND prev = 0, owner = 0; - - SERVER_START_REQ( set_clipboard_viewer ) - { - req->viewer = wine_server_user_handle( hwnd ); - if (!wine_server_call_err( req )) - { - prev = wine_server_ptr_handle( reply->old_viewer ); - owner = wine_server_ptr_handle( reply->owner ); - } - } - SERVER_END_REQ; - - if (hwnd) SendNotifyMessageW( hwnd, WM_DRAWCLIPBOARD, (WPARAM)owner, 0 ); - - TRACE( "%p returning %p\n", hwnd, prev ); - return prev; -} - - /************************************************************************** * ChangeClipboardChain (USER32.@) */ diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index f8683a78426..fa195442b27 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -655,7 +655,7 @@ @ stdcall SetClassLongW(long long long) @ stdcall SetClassWord(long long long) NtUserSetClassWord @ stdcall SetClipboardData(long long) -@ stdcall SetClipboardViewer(long) +@ stdcall SetClipboardViewer(long) NtUserSetClipboardViewer @ stdcall SetCoalescableTimer(long long long ptr long) NtUserSetTimer # @ stub SetConsoleReserveKeys @ stdcall -import SetCursor(long) NtUserSetCursor diff --git a/dlls/win32u/clipboard.c b/dlls/win32u/clipboard.c index f49d9db3b9d..d4004c045e0 100644 --- a/dlls/win32u/clipboard.c +++ b/dlls/win32u/clipboard.c @@ -231,6 +231,32 @@ HWND WINAPI NtUserGetClipboardOwner(void) return owner; }
+/************************************************************************** + * NtUserSetClipboardViewer (win32u.@) + */ +HWND WINAPI NtUserSetClipboardViewer( HWND hwnd ) +{ + HWND prev = 0, owner = 0; + + SERVER_START_REQ( set_clipboard_viewer ) + { + req->viewer = wine_server_user_handle( hwnd ); + if (!wine_server_call_err( req )) + { + prev = wine_server_ptr_handle( reply->old_viewer ); + owner = wine_server_ptr_handle( reply->owner ); + } + } + SERVER_END_REQ; + + if (hwnd) + NtUserMessageCall( hwnd, WM_DRAWCLIPBOARD, (WPARAM)owner, 0, + NULL, NtUserSendNotifyMessage, FALSE ); + + TRACE( "%p returning %p\n", hwnd, prev ); + return prev; +} + /************************************************************************** * NtUserGetClipboardViewer (win32u.@) */ diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c index c0f21662403..453c4893317 100644 --- a/dlls/win32u/gdiobj.c +++ b/dlls/win32u/gdiobj.c @@ -1192,6 +1192,7 @@ static struct unix_funcs unix_funcs = NtUserSetClassLong, NtUserSetClassLongPtr, NtUserSetClassWord, + NtUserSetClipboardViewer, NtUserSetCursor, NtUserSetCursorIconData, NtUserSetCursorPos, diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index f3e2f9ca2f5..05818d001cd 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -1175,7 +1175,7 @@ @ stdcall NtUserSetClassLongPtr(long long long long) @ stdcall NtUserSetClassWord(long long long) @ stub NtUserSetClipboardData -@ stub NtUserSetClipboardViewer +@ stdcall NtUserSetClipboardViewer(long) @ stub NtUserSetCoreWindow @ stub NtUserSetCoreWindowPartner @ stdcall NtUserSetCursor(long) diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 2299330be0d..a693a972830 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -263,6 +263,7 @@ struct unix_funcs DWORD (WINAPI *pNtUserSetClassLong)( HWND hwnd, INT offset, LONG newval, BOOL ansi ); ULONG_PTR (WINAPI *pNtUserSetClassLongPtr)( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); WORD (WINAPI *pNtUserSetClassWord)( HWND hwnd, INT offset, WORD newval ); + HWND (WINAPI *pNtUserSetClipboardViewer)( HWND hwnd ); HCURSOR (WINAPI *pNtUserSetCursor)( HCURSOR cursor ); BOOL (WINAPI *pNtUserSetCursorIconData)( HCURSOR cursor, UNICODE_STRING *module, UNICODE_STRING *res_name, struct cursoricon_desc *desc ); diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c index d8b117bac8f..994f8c63a5b 100644 --- a/dlls/win32u/wrappers.c +++ b/dlls/win32u/wrappers.c @@ -1088,6 +1088,12 @@ WORD WINAPI NtUserSetClassWord( HWND hwnd, INT offset, WORD newval ) return unix_funcs->pNtUserSetClassWord( hwnd, offset, newval ); }
+HWND WINAPI NtUserSetClipboardViewer( HWND hwnd ) +{ + if (!unix_funcs) return 0; + return unix_funcs->pNtUserSetClipboardViewer( hwnd ); +} + BOOL WINAPI NtUserSetCursorIconData( HCURSOR cursor, UNICODE_STRING *module, UNICODE_STRING *res_name, struct cursoricon_desc *desc ) { diff --git a/include/ntuser.h b/include/ntuser.h index 7fc52979e7e..5d49cd8caba 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -547,6 +547,7 @@ HWND WINAPI NtUserSetCapture( HWND hwnd ); DWORD WINAPI NtUserSetClassLong( HWND hwnd, INT offset, LONG newval, BOOL ansi ); ULONG_PTR WINAPI NtUserSetClassLongPtr( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi ); WORD WINAPI NtUserSetClassWord( HWND hwnd, INT offset, WORD newval ); +HWND WINAPI NtUserSetClipboardViewer( HWND hwnd ); HCURSOR WINAPI NtUserSetCursor( HCURSOR cursor ); BOOL WINAPI NtUserSetCursorIconData( HCURSOR cursor, UNICODE_STRING *module, UNICODE_STRING *res_name, struct cursoricon_desc *desc );