user32/tests: Properly maintain clipboard viewers chain.
Without this CloseClipboard() will crash on Windows 8 if executed after test_messages().
This commit is contained in:
parent
c91c8ca92d
commit
83367e874c
|
@ -270,6 +270,7 @@ static void test_synthesized(void)
|
|||
}
|
||||
|
||||
static CRITICAL_SECTION clipboard_cs;
|
||||
static HWND next_wnd;
|
||||
static LRESULT CALLBACK clipboard_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
{
|
||||
switch(msg) {
|
||||
|
@ -277,7 +278,14 @@ static LRESULT CALLBACK clipboard_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARA
|
|||
EnterCriticalSection(&clipboard_cs);
|
||||
LeaveCriticalSection(&clipboard_cs);
|
||||
break;
|
||||
case WM_CHANGECBCHAIN:
|
||||
if (next_wnd == (HWND)wp)
|
||||
next_wnd = (HWND)lp;
|
||||
else if (next_wnd)
|
||||
SendMessageA(next_wnd, msg, wp, lp);
|
||||
break;
|
||||
case WM_USER:
|
||||
ChangeClipboardChain(hwnd, next_wnd);
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
}
|
||||
|
@ -292,7 +300,7 @@ static DWORD WINAPI clipboard_thread(void *param)
|
|||
|
||||
EnterCriticalSection(&clipboard_cs);
|
||||
SetLastError(0xdeadbeef);
|
||||
SetClipboardViewer(win);
|
||||
next_wnd = SetClipboardViewer(win);
|
||||
ok(GetLastError() == 0xdeadbeef, "GetLastError = %d\n", GetLastError());
|
||||
LeaveCriticalSection(&clipboard_cs);
|
||||
|
||||
|
|
Loading…
Reference in New Issue