Alexandre Julliard : server: Allow opening the clipboard again with the same owner.
Module: wine Branch: master Commit: bdf3f413afc2efae68b7545083d6eb0893cd2687 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bdf3f413afc2efae68b7545083... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Jun 3 18:39:18 2015 +0900 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 f12e0cd..a9aef84 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 f144ea1..7a77ed2 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;
participants (1)
-
Alexandre Julliard