Commit 9c9ebe04 authored by Alexander Scott-Johns's avatar Alexander Scott-Johns Committed by Alexandre Julliard

user32: Send a WM_DRAWCLIPBOARD message to the new viewer when SetClipboardViewer is called.

parent 64569c66
......@@ -188,6 +188,21 @@ static BOOL CLIPBOARD_CloseClipboard(void)
return bRet;
}
static HWND CLIPBOARD_SetClipboardViewer( HWND hWnd )
{
HWND hwndPrev = 0;
SERVER_START_REQ( set_clipboard_info )
{
req->flags = SET_CB_VIEWER;
req->viewer = wine_server_user_handle( hWnd );
if (!wine_server_call_err( req ))
hwndPrev = wine_server_ptr_handle( reply->old_viewer );
}
SERVER_END_REQ;
return hwndPrev;
}
/**************************************************************************
* WIN32 Clipboard implementation
......@@ -390,17 +405,10 @@ HWND WINAPI GetOpenClipboardWindow(void)
*/
HWND WINAPI SetClipboardViewer( HWND hWnd )
{
HWND hwndPrev = 0;
SERVER_START_REQ( set_clipboard_info )
{
req->flags = SET_CB_VIEWER;
req->viewer = wine_server_user_handle( hWnd );
if (!wine_server_call_err( req ))
hwndPrev = wine_server_ptr_handle( reply->old_viewer );
}
SERVER_END_REQ;
HWND hwndPrev = CLIPBOARD_SetClipboardViewer(hWnd);
if (hWnd)
SendMessageW(hWnd, WM_DRAWCLIPBOARD, (WPARAM) GetClipboardOwner(), 0);
TRACE("(%p): returning %p\n", hWnd, hwndPrev);
return hwndPrev;
......@@ -438,7 +446,7 @@ BOOL WINAPI ChangeClipboardChain(HWND hWnd, HWND hWndNext)
if (hWndViewer)
{
if (WIN_GetFullHandle(hWnd) == hWndViewer)
SetClipboardViewer(WIN_GetFullHandle(hWndNext));
CLIPBOARD_SetClipboardViewer(WIN_GetFullHandle(hWndNext));
else
bRet = !SendMessageW(hWndViewer, WM_CHANGECBCHAIN, (WPARAM)hWnd, (LPARAM)hWndNext);
}
......
......@@ -11813,7 +11813,7 @@ static void test_clipboard_viewers(void)
/* Test registering hWnd1 as a viewer. */
hRet = SetClipboardViewer(hWnd1);
wm_clipboard_changed[0].wParam = (WPARAM) GetClipboardOwner();
ok_sequence(wm_clipboard_changed, "set viewer NULL->1", TRUE);
ok_sequence(wm_clipboard_changed, "set viewer NULL->1", FALSE);
expect_HWND(NULL, hRet);
expect_HWND(hWnd1, GetClipboardViewer());
......@@ -11830,7 +11830,7 @@ static void test_clipboard_viewers(void)
/* Test re-registering same window. */
hRet = SetClipboardViewer(hWnd1);
wm_clipboard_changed[0].wParam = (WPARAM) GetClipboardOwner();
ok_sequence(wm_clipboard_changed, "set viewer 1->1", TRUE);
ok_sequence(wm_clipboard_changed, "set viewer 1->1", FALSE);
expect_HWND(hWnd1, hRet);
expect_HWND(hWnd1, GetClipboardViewer());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment