summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2018-02-06 17:16:03 -0400
committerJan Holesovsky <kendy@collabora.com>2018-02-21 14:25:49 +0100
commit6574ae5c8e8c89ed3b4f7e24db1b2bb8ecf60536 (patch)
tree790f8a4c8a6afd6dbb4bb9b844452c58308e69e7 /sc
parentd6f89b5daccd498fb5af6f47d06b749f92dcdaca (diff)
tdf#115020: Cutting a large dataset is very slow since 6.1.0.0.alpha0+
Change-Id: Icc26224055c00bd826019bd728c3f74d2ebba535 Reviewed-on: https://gerrit.libreoffice.org/49320 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Henry Castro <hcastro@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/49517 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/app/transobj.cxx22
1 files changed, 16 insertions, 6 deletions
diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index c17ac0cc7ed1..a7b2e66a54b9 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -23,6 +23,7 @@
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/embed/XTransactedObject.hpp>
+#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
#include <unotools/tempfile.hxx>
#include <unotools/ucbstreamhelper.hxx>
@@ -200,13 +201,22 @@ ScTransferObj::~ScTransferObj()
ScTransferObj* ScTransferObj::GetOwnClipboard( vcl::Window* pUIWin )
{
ScTransferObj* pObj = nullptr;
- TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( pUIWin ) );
- uno::Reference<XUnoTunnel> xTunnel( aDataHelper.GetTransferable(), uno::UNO_QUERY );
- if ( xTunnel.is() )
+ uno::Reference<XTransferable> xTransferable;
+ uno::Reference<datatransfer::clipboard::XClipboard> xClipboard;
+
+ if( pUIWin )
+ xClipboard = pUIWin->GetClipboard();
+
+ if( xClipboard.is() )
{
- sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
- if ( nHandle )
- pObj = dynamic_cast<ScTransferObj*>(reinterpret_cast<TransferableHelper*>( (sal_IntPtr) nHandle ));
+ xTransferable = xClipboard->getContents();
+ uno::Reference<XUnoTunnel> xTunnel( xTransferable, uno::UNO_QUERY );
+ if ( xTunnel.is() )
+ {
+ sal_Int64 nHandle = xTunnel->getSomething( getUnoTunnelId() );
+ if ( nHandle )
+ pObj = dynamic_cast<ScTransferObj*>(reinterpret_cast<TransferableHelper*>( static_cast<sal_IntPtr>(nHandle) ));
+ }
}
return pObj;