summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2019-05-13 18:20:01 +0530
committerDennis Francis <dennis.francis@collabora.com>2019-05-15 13:42:22 +0200
commitf28b5586a7af4456bc087318961c46ad727af324 (patch)
treeaab251472de10fe6c1cc55509ee82b328dac2678 /sc
parent3e664b8f194392eb27aae953c0d33a8bdfd32982 (diff)
tdf#114245 : Let both ScDocument::CopyToDocument()...
methods use delayed-grouping introduced in commit 169a1b542165f3444791fd6e672d56d3fe48bd66 avoid possible expensive repetitive formula group changes (tdf#102364) The drag-drop move takes around 6-7 seconds now. Change-Id: I0916719ffca2072b7cf86b4f99518316cfdd99fa Reviewed-on: https://gerrit.libreoffice.org/72338 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Jenkins
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/data/document.cxx19
1 files changed, 2 insertions, 17 deletions
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index b2843303a2ad..4e74fc8dbf56 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -2063,25 +2063,10 @@ void ScDocument::CopyToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
InsertDeleteFlags nFlags, bool bOnlyMarked, ScDocument& rDestDoc,
const ScMarkData* pMarks, bool bColRowFlags )
{
- PutInOrder( nCol1, nCol2 );
- PutInOrder( nRow1, nRow2 );
- PutInOrder( nTab1, nTab2 );
- if (rDestDoc.aDocName.isEmpty())
- rDestDoc.aDocName = aDocName;
if (ValidTab(nTab1) && ValidTab(nTab2))
{
- sc::CopyToDocContext aCxt(rDestDoc);
- bool bOldAutoCalc = rDestDoc.GetAutoCalc();
- rDestDoc.SetAutoCalc( false ); // avoid multiple calculations
- SCTAB nMinSizeBothTabs = static_cast<SCTAB>(std::min(maTabs.size(), rDestDoc.maTabs.size()));
- for (SCTAB i = nTab1; i <= nTab2 && i < nMinSizeBothTabs; i++)
- {
- if (maTabs[i] && rDestDoc.maTabs[i])
- maTabs[i]->CopyToTable(aCxt, nCol1, nRow1, nCol2, nRow2, nFlags,
- bOnlyMarked, rDestDoc.maTabs[i].get(), pMarks,
- false, bColRowFlags, /*bGlobalNamesToLocal*/false, /*bCopyCaptions*/true );
- }
- rDestDoc.SetAutoCalc(bOldAutoCalc);
+ ScRange aThisRange(nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
+ CopyToDocument(aThisRange, nFlags, bOnlyMarked, rDestDoc, pMarks, bColRowFlags);
}
}