diff --git a/src/auto4_lua.cpp b/src/auto4_lua.cpp index f29893483..a0837fede 100644 --- a/src/auto4_lua.cpp +++ b/src/auto4_lua.cpp @@ -127,7 +127,8 @@ namespace { const char *clipboard_get() { - std::string data = GetClipboard(); + std::string data; + agi::dispatch::Main().Sync([&] { data = GetClipboard(); }); if (data.empty()) return nullptr; return strndup(data); @@ -137,18 +138,14 @@ namespace { { bool succeeded = false; -#if wxUSE_OLE - // OLE needs to be initialized on each thread that wants to write to - // the clipboard, which wx does not handle automatically - wxClipboard cb; -#else - wxClipboard &cb = *wxTheClipboard; -#endif - if (cb.Open()) { - succeeded = cb.SetData(new wxTextDataObject(wxString::FromUTF8(str))); - cb.Close(); - cb.Flush(); - } + agi::dispatch::Main().Sync([&] { + wxClipboard &cb = *wxTheClipboard; + if (cb.Open()) { + succeeded = cb.SetData(new wxTextDataObject(wxString::FromUTF8(str))); + cb.Close(); + cb.Flush(); + } + }); return succeeded; }