user32: Send a WM_DRAWCLIPBOARD message to the new viewer when SetClipboardViewer is called.
This commit is contained in:
parent
64569c66e4
commit
9c9ebe04c5
|
@ -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());
|
||||
|
||||
|
|
Loading…
Reference in New Issue