diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-11-05 10:48:30 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-11-05 15:02:18 +0100 |
commit | e2f66f5ba5d813af97bc4fb5f28cea9d737e25e9 (patch) | |
tree | 55b48699bde74d4bbc88fa67be513730867a1d5d /vcl/unx/gtk3/gtk3gtkinst.cxx | |
parent | 0505a00a9ba827e39338b295ab6f73743d5c80b9 (diff) |
Related: tdf#137181 factor out the piece that triggers the problem
Change-Id: Ic74f7c972988d6a26f7e5e34354fe05da4601f41
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105338
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/unx/gtk3/gtk3gtkinst.cxx')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 81b69554b438..92298a2d0bd7 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -747,6 +747,7 @@ public: void ClipboardGet(GtkSelectionData *selection_data, guint info); void ClipboardClear(); void OwnerPossiblyChanged(GtkClipboard *clipboard); + void SetGtkClipboard(); }; } @@ -1032,6 +1033,14 @@ std::vector<GtkTargetEntry> VclToGtkHelper::FormatsToGtk(const css::uno::Sequenc return aGtkTargets; } +void VclGtkClipboard::SetGtkClipboard() +{ + GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); + gtk_clipboard_set_with_data(clipboard, m_aGtkTargets.data(), m_aGtkTargets.size(), + ClipboardGetFunc, ClipboardClearFunc, this); + gtk_clipboard_set_can_store(clipboard, m_aGtkTargets.data(), m_aGtkTargets.size()); +} + void VclGtkClipboard::setContents( const Reference< css::datatransfer::XTransferable >& xTrans, const Reference< css::datatransfer::clipboard::XClipboardOwner >& xClipboardOwner ) @@ -1070,12 +1079,10 @@ void VclGtkClipboard::setContents( aEntry.info = 0; aGtkTargets.push_back(aEntry); - gtk_clipboard_set_with_data(clipboard, aGtkTargets.data(), aGtkTargets.size(), - ClipboardGetFunc, ClipboardClearFunc, this); - gtk_clipboard_set_can_store(clipboard, aGtkTargets.data(), aGtkTargets.size()); - } + m_aGtkTargets = aGtkTargets; - m_aGtkTargets = aGtkTargets; + SetGtkClipboard(); + } } aEv.Contents = getContents(); |