From e6ddeb97c6790779f4e562fd4bd4c7a9ca04386e Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 14 Apr 2018 10:32:39 +0300 Subject: [PATCH] Fix clipboard sharing. --- od-win32/clipboard_win32.cpp | 2 +- od-win32/win32.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/od-win32/clipboard_win32.cpp b/od-win32/clipboard_win32.cpp index e196dba3..a1a2e2af 100644 --- a/od-win32/clipboard_win32.cpp +++ b/od-win32/clipboard_win32.cpp @@ -951,7 +951,7 @@ int amiga_clipboard_want_data(TrapContext *ctx) void clipboard_active(HWND hwnd, int active) { clipactive = active; - if (!initialized) + if (!initialized || !hwnd) return; if (clipactive && clipboard_change) { clipboard_read(NULL, hwnd, false); diff --git a/od-win32/win32.cpp b/od-win32/win32.cpp index d37c0861..58b10248 100644 --- a/od-win32/win32.cpp +++ b/od-win32/win32.cpp @@ -158,6 +158,7 @@ static int start_data = 0; static void *tablet; HCURSOR normalcursor; static HWND hwndNextViewer; +static bool clipboard_initialized; HANDLE AVTask; static int all_events_disabled; static int mainthreadid; @@ -1942,13 +1943,15 @@ static LRESULT CALLBACK AmigaWindowProc(HWND hWnd, UINT message, WPARAM wParam, #endif DragAcceptFiles(hWnd, TRUE); normalcursor = LoadCursor(NULL, IDC_ARROW); - if (mon->monitor_id == 0 && !hwndNextViewer) { + if (!clipboard_initialized) { + clipboard_initialized = true; hwndNextViewer = SetClipboardViewer(hWnd); clipboard_init(hWnd); } return 0; case WM_DESTROY: + clipboard_initialized = false; if (device_change_timer) KillTimer(hWnd, 4); device_change_timer = 0; @@ -2258,7 +2261,7 @@ static LRESULT CALLBACK AmigaWindowProc(HWND hWnd, UINT message, WPARAM wParam, break; case WM_CHANGECBCHAIN: - if (mon->monitor_id == 0 && hwndNextViewer) { + if (clipboard_initialized) { if ((HWND)wParam == hwndNextViewer) hwndNextViewer = (HWND)lParam; else if (hwndNextViewer != NULL) @@ -2267,7 +2270,7 @@ static LRESULT CALLBACK AmigaWindowProc(HWND hWnd, UINT message, WPARAM wParam, } break; case WM_DRAWCLIPBOARD: - if (mon->monitor_id == 0 && hwndNextViewer) { + if (clipboard_initialized) { clipboard_changed(hWnd); SendMessage(hwndNextViewer, message, wParam, lParam); return 0; -- 2.47.3