diff --git a/src/auto4_lua.cpp b/src/auto4_lua.cpp index 2044c36815..d9355d1ba2 100644 --- a/src/auto4_lua.cpp +++ b/src/auto4_lua.cpp @@ -125,7 +125,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); @@ -135,18 +136,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; }