user32/tests: Test delayed clipboard rendering after window destruction.

If the window does not render the delayed-rendering clipboard formats
before it is destroyed, then they should be removed from the clipboard,
including the derived formats added by CloseClipboard().

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Francois Gouget 2021-08-10 05:51:39 +02:00 committed by Alexandre Julliard
parent d07d4ef799
commit ce98c3b58e
1 changed files with 42 additions and 0 deletions

View File

@ -949,6 +949,48 @@ static void test_synthesized(void)
r = CloseClipboard();
ok(r, "gle %d\n", GetLastError());
DestroyWindow( hwnd );
/* Check what happens to the delayed rendering clipboard formats when the
* owner window is destroyed.
*/
hwnd = CreateWindowA( "static", NULL, WS_POPUP, 0, 0, 10, 10, 0, 0, 0, NULL );
SetWindowLongPtrA( hwnd, GWLP_WNDPROC, (LONG_PTR)renderer_winproc );
r = open_clipboard(hwnd);
ok(r, "gle %d\n", GetLastError());
r = EmptyClipboard();
ok(r, "gle %d\n", GetLastError());
SetClipboardData( CF_UNICODETEXT, NULL );
r = CloseClipboard();
ok(r, "gle %d\n", GetLastError());
r = open_clipboard(NULL);
ok(r, "gle %d\n", GetLastError());
count = CountClipboardFormats();
ok(count == 4, "count %u\n", count );
DestroyWindow( hwnd );
/* CF_UNICODETEXT and derivatives, CF_TEXT + CF_OEMTEXT, should be gone */
count = CountClipboardFormats();
todo_wine ok(count == 1, "count %u\n", count );
cf = EnumClipboardFormats( 0 );
ok(cf == CF_LOCALE, "unexpected clipboard format %u\n", cf);
r = CloseClipboard();
ok(r, "gle %d\n", GetLastError());
r = open_clipboard(NULL);
ok(r, "gle %d\n", GetLastError());
SetLastError(0xdeadbeef);
data = (void*)1; if (broken(1)) /* FIXME Crashes in Wine */
data = GetClipboardData( CF_TEXT );
ok(GetLastError() == 0xdeadbeef, "unexpected last error %d\n", GetLastError());
todo_wine ok(!data, "GetClipboardData() should have returned NULL\n");
r = CloseClipboard();
ok(r, "gle %d\n", GetLastError());
}
static DWORD WINAPI clipboard_render_data_thread(void *param)