vcl/unx/gtk3/gtk3gtkinst.cxx |   13 +++++++++++++
 1 file changed, 13 insertions(+)

New commits:
commit ed124c84c38237c8769b0685ba1e9b3dd87482de
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Nov 16 12:36:57 2020 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Nov 17 09:54:20 2020 +0100

    tdf#138183 sync pending clipboard assign on clipboard ownership-change
    
    Change-Id: I325add499fbd4d11a942ce550346dcbcb5343e4d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105862
    Reviewed-by: Kevin Suo <suokunl...@126.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Jenkins

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 643ec0cac7f3..d3bad43b2052 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -750,6 +750,7 @@ public:
     void ClipboardClear();
     void OwnerPossiblyChanged(GtkClipboard *clipboard);
     void SetGtkClipboard();
+    void SyncGtkClipboard();
 };
 
 }
@@ -835,6 +836,7 @@ namespace
 
 void VclGtkClipboard::OwnerPossiblyChanged(GtkClipboard* clipboard)
 {
+    SyncGtkClipboard(); // tdf#138183 do any pending SetGtkClipboard calls
     if (!m_aContents.is())
         return;
 
@@ -1049,6 +1051,17 @@ IMPL_LINK_NOARG(VclGtkClipboard, AsyncSetGtkClipboard, 
void*, void)
     SetGtkClipboard();
 }
 
+void VclGtkClipboard::SyncGtkClipboard()
+{
+    osl::ClearableMutexGuard aGuard(m_aMutex);
+    if (m_pSetClipboardEvent)
+    {
+        Application::RemoveUserEvent(m_pSetClipboardEvent);
+        m_pSetClipboardEvent = nullptr;
+        SetGtkClipboard();
+    }
+}
+
 void VclGtkClipboard::SetGtkClipboard()
 {
     GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to