|
 |
f325b2 |
From 3f20d5f3b46160c2a5e425bfd50b2e0319cda021 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
 |
f325b2 |
Date: Thu, 21 Jan 2016 11:28:50 +0000
|
|
 |
f325b2 |
Subject: [PATCH] Resolves: rhbz#1240591 gtk3: store clipboard when LibreOffice
|
|
 |
f325b2 |
is closed
|
|
 |
f325b2 |
|
|
 |
f325b2 |
now contents copied to clipboard persist after LibreOffice exits
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: I4433543944fb9664f87ade43da1198dcdd4e2a7c
|
|
 |
f325b2 |
(cherry picked from commit f1358edf469e70df1fb044bb58cd888fea15173c)
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
vcl/unx/gtk3/gtk3gtkinst.cxx | 25 ++++++++++++++++++++++---
|
|
 |
f325b2 |
1 file changed, 22 insertions(+), 3 deletions(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
|
|
 |
f325b2 |
index f727462..8654b45 100644
|
|
 |
f325b2 |
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
|
|
 |
f325b2 |
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
|
|
 |
f325b2 |
@@ -13,12 +13,12 @@
|
|
 |
f325b2 |
#include "com/sun/star/lang/XServiceInfo.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/lang/XSingleServiceFactory.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/lang/XInitialization.hpp"
|
|
 |
f325b2 |
-#include "com/sun/star/lang/DisposedException.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/XTransferable.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/clipboard/XClipboard.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/clipboard/XClipboardEx.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/clipboard/XClipboardListener.hpp"
|
|
 |
f325b2 |
+#include "com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/clipboard/XSystemClipboard.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/dnd/XDragSource.hpp"
|
|
 |
f325b2 |
#include "com/sun/star/datatransfer/dnd/XDropTarget.hpp"
|
|
 |
f325b2 |
@@ -275,6 +275,7 @@ static void clipboard_owner_init(ClipboardOwner *)
|
|
 |
f325b2 |
class VclGtkClipboard :
|
|
 |
f325b2 |
public cppu::WeakComponentImplHelper<
|
|
 |
f325b2 |
datatransfer::clipboard::XSystemClipboard,
|
|
 |
f325b2 |
+ datatransfer::clipboard::XFlushableClipboard,
|
|
 |
f325b2 |
XServiceInfo>
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
GdkAtom m_nSelection;
|
|
 |
f325b2 |
@@ -326,6 +327,12 @@ public:
|
|
 |
f325b2 |
throw(RuntimeException, std::exception) SAL_OVERRIDE;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
/*
|
|
 |
f325b2 |
+ * XFlushableClipboard
|
|
 |
f325b2 |
+ */
|
|
 |
f325b2 |
+ virtual void SAL_CALL flushClipboard()
|
|
 |
f325b2 |
+ throw(RuntimeException, std::exception) override;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ /*
|
|
 |
f325b2 |
* XClipboardNotifier
|
|
 |
f325b2 |
*/
|
|
 |
f325b2 |
virtual void SAL_CALL addClipboardListener(
|
|
 |
f325b2 |
@@ -503,7 +510,8 @@ namespace
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
VclGtkClipboard::VclGtkClipboard(GdkAtom nSelection)
|
|
 |
f325b2 |
- : cppu::WeakComponentImplHelper<datatransfer::clipboard::XSystemClipboard, XServiceInfo>
|
|
 |
f325b2 |
+ : cppu::WeakComponentImplHelper
|
|
 |
f325b2 |
+ datatransfer::clipboard::XFlushableClipboard, XServiceInfo>
|
|
 |
f325b2 |
(m_aMutex)
|
|
 |
f325b2 |
, m_nSelection(nSelection)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
@@ -514,6 +522,16 @@ VclGtkClipboard::VclGtkClipboard(GdkAtom nSelection)
|
|
 |
f325b2 |
m_pOwner->m_pThis = this;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+void VclGtkClipboard::flushClipboard()
|
|
 |
f325b2 |
+ throw (RuntimeException, std::exception)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ if (GDK_SELECTION_CLIPBOARD != m_nSelection)
|
|
 |
f325b2 |
+ return;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection);
|
|
 |
f325b2 |
+ gtk_clipboard_store(clipboard);
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
VclGtkClipboard::~VclGtkClipboard()
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection);
|
|
 |
f325b2 |
@@ -525,7 +543,7 @@ VclGtkClipboard::~VclGtkClipboard()
|
|
 |
f325b2 |
void VclGtkClipboard::setContents(
|
|
 |
f325b2 |
const Reference< css::datatransfer::XTransferable >& xTrans,
|
|
 |
f325b2 |
const Reference< css::datatransfer::clipboard::XClipboardOwner >& xClipboardOwner )
|
|
 |
f325b2 |
- throw( RuntimeException, std::exception )
|
|
 |
f325b2 |
+ throw(RuntimeException, std::exception)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
osl::ClearableMutexGuard aGuard( m_aMutex );
|
|
 |
f325b2 |
Reference< datatransfer::clipboard::XClipboardOwner > xOldOwner( m_aOwner );
|
|
 |
f325b2 |
@@ -585,6 +603,7 @@ void VclGtkClipboard::setContents(
|
|
 |
f325b2 |
//if we have gained or lost ownership of the clipboard
|
|
 |
f325b2 |
gtk_clipboard_set_with_owner(clipboard, aGtkTargets.data(), aGtkTargets.size(),
|
|
 |
f325b2 |
ClipboardGetFunc, ClipboardClearFunc, G_OBJECT(m_pOwner));
|
|
 |
f325b2 |
+ gtk_clipboard_set_can_store(clipboard, aGtkTargets.data(), aGtkTargets.size());
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
m_aGtkTargets = aGtkTargets;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.5.0
|
|
 |
f325b2 |
|