|
 |
f325b2 |
From cd8468af6c005d3ba1f11eff0fdc04344a282c31 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
f325b2 |
Date: Mon, 26 Oct 2015 14:25:26 +0100
|
|
 |
f325b2 |
Subject: [PATCH 234/398] gtktiledviwer: try to paste as html, then as plain
|
|
 |
f325b2 |
text
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: I8e1c93fd36fb903c0625b29f9f73825438c9e113
|
|
 |
f325b2 |
(cherry picked from commit 080bd44f0b0300075ff18d377f31deebbc4009ed)
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
desktop/source/lib/lokclipboard.cxx | 2 +-
|
|
 |
f325b2 |
.../qa/gtktiledviewer/gtktiledviewer.cxx | 28 ++++++++++++++++++++++
|
|
 |
f325b2 |
2 files changed, 29 insertions(+), 1 deletion(-)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/desktop/source/lib/lokclipboard.cxx b/desktop/source/lib/lokclipboard.cxx
|
|
 |
f325b2 |
index 50d570577e27..376bcd72d238 100644
|
|
 |
f325b2 |
--- a/desktop/source/lib/lokclipboard.cxx
|
|
 |
f325b2 |
+++ b/desktop/source/lib/lokclipboard.cxx
|
|
 |
f325b2 |
@@ -43,7 +43,7 @@ throw(datatransfer::UnsupportedFlavorException, io::IOException, uno::RuntimeExc
|
|
 |
f325b2 |
if (rFlavor.DataType == cppu::UnoType<OUString>::get())
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
sal_Char* pText = reinterpret_cast<sal_Char*>(m_aSequence.getArray());
|
|
 |
f325b2 |
- aRet <<= OUString(pText, rtl_str_getLength(pText), RTL_TEXTENCODING_UTF8);
|
|
 |
f325b2 |
+ aRet <<= OUString(pText, m_aSequence.getLength(), RTL_TEXTENCODING_UTF8);
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
else
|
|
 |
f325b2 |
aRet <<= m_aSequence;
|
|
 |
f325b2 |
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
|
|
 |
f325b2 |
index b0ea03ee6796..72afd52131ad 100644
|
|
 |
f325b2 |
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
|
|
 |
f325b2 |
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
|
|
 |
f325b2 |
@@ -15,6 +15,7 @@
|
|
 |
f325b2 |
#include <iostream>
|
|
 |
f325b2 |
|
|
 |
f325b2 |
#include <boost/property_tree/json_parser.hpp>
|
|
 |
f325b2 |
+#include <boost/optional.hpp>
|
|
 |
f325b2 |
#include <gdk/gdkkeysyms.h>
|
|
 |
f325b2 |
|
|
 |
f325b2 |
#define LOK_USE_UNSTABLE_API
|
|
 |
f325b2 |
@@ -287,6 +288,33 @@ static void doPaste(GtkWidget* pButton, gpointer /*pItem*/)
|
|
 |
f325b2 |
LibreOfficeKitDocument* pDocument = lok_doc_view_get_document(pLOKDocView);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
GtkClipboard* pClipboard = gtk_clipboard_get_for_display(gtk_widget_get_display(rWindow.m_pDocView), GDK_SELECTION_CLIPBOARD);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ GdkAtom* pTargets;
|
|
 |
f325b2 |
+ gint nTargets;
|
|
 |
f325b2 |
+ boost::optional<GdkAtom> oTarget;
|
|
 |
f325b2 |
+ if (gtk_clipboard_wait_for_targets(pClipboard, &pTargets, &nTargets))
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ for (gint i = 0; i < nTargets; ++i)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ gchar* pName = gdk_atom_name(pTargets[i]);
|
|
 |
f325b2 |
+ if (std::string(pName) == "text/html")
|
|
 |
f325b2 |
+ oTarget = pTargets[i];
|
|
 |
f325b2 |
+ g_free(pName);
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ g_free(pTargets);
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ if (oTarget)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ GtkSelectionData* pSelectionData = gtk_clipboard_wait_for_contents(pClipboard, *oTarget);
|
|
 |
f325b2 |
+ gint nLength;
|
|
 |
f325b2 |
+ const guchar* pData = gtk_selection_data_get_data_with_length(pSelectionData, &nLength);
|
|
 |
f325b2 |
+ bool bSuccess = pDocument->pClass->paste(pDocument, "text/html", reinterpret_cast<const char*>(pData), nLength);
|
|
 |
f325b2 |
+ gtk_selection_data_free(pSelectionData);
|
|
 |
f325b2 |
+ if (bSuccess)
|
|
 |
f325b2 |
+ return;
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
gchar* pText = gtk_clipboard_wait_for_text(pClipboard);
|
|
 |
f325b2 |
if (pText)
|
|
 |
f325b2 |
pDocument->pClass->paste(pDocument, "text/plain;charset=utf-8", pText, strlen(pText));
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.12.0
|
|
 |
f325b2 |
|