From bdf3f413afc2efae68b7545083d6eb0893cd2687 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 3 Jun 2015 18:39:18 +0900 Subject: [PATCH] server: Allow opening the clipboard again with the same owner. --- dlls/user32/tests/clipboard.c | 3 ++- server/clipboard.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/user32/tests/clipboard.c b/dlls/user32/tests/clipboard.c index f12e0cdbb52..a9aef842977 100644 --- a/dlls/user32/tests/clipboard.c +++ b/dlls/user32/tests/clipboard.c @@ -51,11 +51,12 @@ static void test_ClipboardOwner(void) ok(OpenClipboard(0), "OpenClipboard failed\n"); ok(!GetClipboardOwner(), "clipboard should still be not owned\n"); ok(!OpenClipboard(hWnd1), "OpenClipboard should fail since clipboard already opened\n"); + ok(OpenClipboard(0), "OpenClipboard again failed\n"); ret = CloseClipboard(); ok( ret, "CloseClipboard error %d\n", GetLastError()); ok(OpenClipboard(hWnd1), "OpenClipboard failed\n"); - todo_wine ok(OpenClipboard(hWnd1), "OpenClipboard second time in the same hwnd failed\n"); + ok(OpenClipboard(hWnd1), "OpenClipboard second time in the same hwnd failed\n"); SetLastError(0xdeadbeef); ret = OpenClipboard(hWnd2); diff --git a/server/clipboard.c b/server/clipboard.c index f144ea10ac7..7a77ed282a2 100644 --- a/server/clipboard.c +++ b/server/clipboard.c @@ -138,7 +138,7 @@ void cleanup_clipboard_thread(struct thread *thread) static int open_clipboard( struct clipboard *clipboard, user_handle_t win ) { win = get_user_full_handle( win ); - if (clipboard->open_thread && clipboard->open_thread != current) + if (clipboard->open_thread && (clipboard->open_thread != current || clipboard->open_win != win)) { set_error(STATUS_WAS_LOCKED); return 0; -- 2.11.4.GIT