sc/source/core/data/documen2.cxx |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

New commits:
commit 820d0c06ba5de5ee42757c61048b4a56fa299268
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Mon Oct 23 23:13:51 2023 +0200
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sun Jul 21 00:21:02 2024 +0200

    tdf#157897 - Clear print ranges before adding additional ones
    
    Otherwise, additional print ranges will be added for linked files after
    the external link will be updated.
    
    cherry-picked from commit: e61f8a36220d6e8800dd0decf2a680db97c371c9
    (tdf#157897 - Clear print ranges before adding additional ones)
    
    Change-Id: I0556fda6609d3e18f1ca992dc6a0399be01bc841
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158365
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170592
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>
    Tested-by: allotropia jenkins <jenk...@allotropia.de>

diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index dd76b6cc2dc3..85333d24b74c 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -962,6 +962,23 @@ sal_uLong ScDocument::TransferTab( ScDocument* pSrcDoc, 
SCTAB nSrcPos,
         maTabs[nDestPos]->SetTabNo(nDestPos);
         
maTabs[nDestPos]->SetTabBgColor(pSrcDoc->maTabs[nSrcPos]->GetTabBgColor());
 
+        if (pSrcDoc->IsPrintEntireSheet(nSrcPos))
+            maTabs[nDestPos]->SetPrintEntireSheet();
+        else
+        {
+            // tdf#157897 - clear print ranges before adding additional ones
+            maTabs[nDestPos]->ClearPrintRanges();
+            const auto nPrintRangeCount = 
pSrcDoc->maTabs[nSrcPos]->GetPrintRangeCount();
+            for (auto nPos = 0; nPos < nPrintRangeCount; nPos++)
+            {
+                // Adjust the tab for the print range at the new position
+                ScRange 
aSrcPrintRange(*pSrcDoc->maTabs[nSrcPos]->GetPrintRange(nPos));
+                aSrcPrintRange.aStart.SetTab(nDestPos);
+                aSrcPrintRange.aEnd.SetTab(nDestPos);
+                maTabs[nDestPos]->AddPrintRange(aSrcPrintRange);
+            }
+        }
+
         if ( !bResultsOnly )
         {
             sc::RefUpdateContext aRefCxt(*this);

Reply via email to