diff options
Diffstat (limited to 'sc/source/ui/view/viewfun3.cxx')
-rw-r--r-- | sc/source/ui/view/viewfun3.cxx | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx index e80d79d7122a..3cfccc50c760 100644 --- a/sc/source/ui/view/viewfun3.cxx +++ b/sc/source/ui/view/viewfun3.cxx @@ -272,13 +272,15 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b aObjDesc.maDisplayName = pDocSh->GetMedium()->GetURLObject().GetURLNoPass(); // maSize is set in ScTransferObj ctor - rtl::Reference<ScTransferObj> pTransferObj = new ScTransferObj( pClipDoc, aObjDesc ); + ScTransferObj* pTransferObj = new ScTransferObj( pClipDoc, aObjDesc ); + uno::Reference<css::datatransfer::XTransferable2> xTransferObj = pTransferObj; if ( ScGlobal::xDrawClipDocShellRef.is() ) { SfxObjectShellRef aPersistRef( ScGlobal::xDrawClipDocShellRef.get() ); pTransferObj->SetDrawPersist( aPersistRef );// keep persist for ole objects alive } + GetViewData().GetViewShell()->SetClipData(xTransferObj); pTransferObj->CopyToClipboard( GetActiveWin() ); } @@ -378,14 +380,14 @@ bool ScViewFunc::CopyToClip( ScDocument* pClipDoc, const ScRangeList& rRanges, b aObjDesc.maDisplayName = pDocSh->GetMedium()->GetURLObject().GetURLNoPass(); // maSize is set in ScTransferObj ctor - rtl::Reference<ScTransferObj> pTransferObj = new ScTransferObj( pDocClip.release(), aObjDesc ); - + ScTransferObj* pTransferObj = new ScTransferObj( pDocClip.release(), aObjDesc ); + uno::Reference<css::datatransfer::XTransferable2> xTransferObj = pTransferObj; if ( ScGlobal::xDrawClipDocShellRef.is() ) { SfxObjectShellRef aPersistRef( ScGlobal::xDrawClipDocShellRef.get() ); pTransferObj->SetDrawPersist( aPersistRef ); // keep persist for ole objects alive } - + GetViewData().GetViewShell()->SetClipData(xTransferObj); pTransferObj->CopyToClipboard( GetActiveWin() ); // system clipboard } @@ -447,7 +449,7 @@ void ScViewFunc::PasteDraw() vcl::Window* pWin = GetActiveWin(); Point aPos = pWin->PixelToLogic( rViewData.GetScrPos( nPosX, nPosY, rViewData.GetActivePart() ) ); - ScDrawTransferObj* pDrawClip = ScDrawTransferObj::GetOwnClipboard( pWin ); + const ScDrawTransferObj* pDrawClip = ScDrawTransferObj::GetOwnClipboard(GetViewData().GetViewShell()->GetClipData()); if (pDrawClip) { OUString aSrcShellID = pDrawClip->GetShellID(); @@ -461,9 +463,9 @@ void ScViewFunc::PasteFromSystem() UpdateInputLine(); vcl::Window* pWin = GetActiveWin(); - ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard( pWin ); + const ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard(GetViewData().GetViewShell()->GetClipData()); // keep a reference in case the clipboard is changed during PasteFromClip - rtl::Reference<ScDrawTransferObj> pDrawClip = ScDrawTransferObj::GetOwnClipboard( pWin ); + const ScDrawTransferObj* pDrawClip = ScDrawTransferObj::GetOwnClipboard(GetViewData().GetViewShell()->GetClipData()); if (pOwnClip) { PasteFromClip( InsertDeleteFlags::ALL, pOwnClip->GetDocument(), @@ -706,7 +708,7 @@ bool ScViewFunc::PasteFromSystem( SotClipboardFormatId nFormatId, bool bApi ) bool bRet = true; vcl::Window* pWin = GetActiveWin(); // keep a reference in case the clipboard is changed during PasteFromClip - rtl::Reference<ScTransferObj> pOwnClip = ScTransferObj::GetOwnClipboard( pWin ); + const ScTransferObj* pOwnClip = ScTransferObj::GetOwnClipboard(GetViewData().GetViewShell()->GetClipData()); if ( nFormatId == SotClipboardFormatId::NONE && pOwnClip ) { PasteFromClip( InsertDeleteFlags::ALL, pOwnClip->GetDocument(), |