Jacek Caban : win32u: Move NtUserSetClipboardViewer implementation from user32.
Alexandre Julliard
julliard at winehq.org
Fri Apr 22 14:46:05 CDT 2022
Module: wine
Branch: master
Commit: c38e287befdf1f2910d7e23ccff5638d57cd411d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c38e287befdf1f2910d7e23ccff5638d57cd411d
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Apr 22 14:45:43 2022 +0200
win32u: Move NtUserSetClipboardViewer implementation from user32.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 );
More information about the wine-cvs
mailing list