[Libreoffice-commits] core.git: sc/qa sc/source
Attila Szűcs (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jan 21 07:20:20 UTC 2021
sc/qa/unit/subsequent_export-test.cxx | 29 +++++++++++++++++++++++++++++
sc/source/filter/xml/xmltabi.cxx | 22 +++++++++++++---------
2 files changed, 42 insertions(+), 9 deletions(-)
New commits:
commit bd6214e2aa6f25e013eef769529b75c1e3b580cb
Author: Attila Szűcs <szucs.attila3 at nisz.hu>
AuthorDate: Thu Jan 14 15:01:13 2021 +0100
Commit: László Németh <nemeth at numbertext.org>
CommitDate: Thu Jan 21 08:19:40 2021 +0100
tdf#51022 sc import: fix lost print ranges of last sheet
of documents with external references.
Processing external sheets could remove (or extend) the
print ranges of the last non-external sheet (indexed by
nCurTab).
Co-authored-by: Tibor Nagy (NISZ)
Change-Id: Ifc44148875106dad791de61953f3b046b6f2b188
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109295
Tested-by: László Németh <nemeth at numbertext.org>
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth at numbertext.org>
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 3bec0ecde3bd..6c68d2b02183 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -273,6 +273,7 @@ public:
void testTdf126305_DataValidatyErrorAlert();
void testTdf76047_externalLink();
void testTdf87973_externalLinkSkipUnuseds();
+ void testTdf51022_lostPrintRange();
void testTdf138741_externalLinkSkipUnusedsCrash();
void testTdf138824_linkToParentDirectory();
void testTdf129969();
@@ -450,6 +451,7 @@ public:
CPPUNIT_TEST(testTdf126305_DataValidatyErrorAlert);
CPPUNIT_TEST(testTdf76047_externalLink);
CPPUNIT_TEST(testTdf87973_externalLinkSkipUnuseds);
+ CPPUNIT_TEST(testTdf51022_lostPrintRange);
CPPUNIT_TEST(testTdf138741_externalLinkSkipUnusedsCrash);
CPPUNIT_TEST(testTdf138824_linkToParentDirectory);
CPPUNIT_TEST(testTdf129969);
@@ -5672,6 +5674,33 @@ void ScExportTest::testTdf87973_externalLinkSkipUnuseds()
pDocSh->DoClose();
}
+void ScExportTest::testTdf51022_lostPrintRange()
+{
+ ScDocShellRef pShell = loadDoc(u"tdf87973_externalLinkSkipUnuseds.", FORMAT_ODS);
+ CPPUNIT_ASSERT(pShell.is());
+
+ pShell->ReloadAllLinks();
+ ScDocument& rDoc = pShell->GetDocument();
+
+ //Add print ranges
+ ScRange aRange1(1, 2, 0, 3, 4, 0);
+ ScRange aRange2(1, 6, 0, 3, 7, 0);
+ rDoc.AddPrintRange(0, aRange1);
+ rDoc.AddPrintRange(0, aRange2);
+
+ // save and load back
+ ScDocShellRef pDocSh = saveAndReload(&(*pShell), FORMAT_ODS);
+ CPPUNIT_ASSERT(pDocSh.is());
+
+ // check if the same print ranges are present
+ ScDocument& rDoc2 = pDocSh->GetDocument();
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(2), rDoc2.GetPrintRangeCount(0));
+ CPPUNIT_ASSERT_EQUAL(aRange1, *rDoc2.GetPrintRange(0, 0));
+ CPPUNIT_ASSERT_EQUAL(aRange2, *rDoc2.GetPrintRange(0, 1));
+
+ pDocSh->DoClose();
+}
+
void ScExportTest::testTdf138741_externalLinkSkipUnusedsCrash()
{
ScDocShellRef xShell = loadDoc(u"tdf138741_externalLinkSkipUnusedsCrash.", FORMAT_XLSX);
diff --git a/sc/source/filter/xml/xmltabi.cxx b/sc/source/filter/xml/xmltabi.cxx
index ee09f9de2243..dab3e428305d 100644
--- a/sc/source/filter/xml/xmltabi.cxx
+++ b/sc/source/filter/xml/xmltabi.cxx
@@ -332,19 +332,23 @@ void SAL_CALL ScXMLTableContext::endFastElement(sal_Int32 /*nElement*/)
ScMyTables& rTables = rImport.GetTables();
SCTAB nCurTab = rTables.GetCurrentSheet();
- if (!sPrintRanges.isEmpty())
+ // tdf#51022 process only print ranges of internal sheets
+ if (!pExternalRefInfo)
{
- ScRangeList aRangeList;
- ScRangeStringConverter::GetRangeListFromString( aRangeList, sPrintRanges, *pDoc, ::formula::FormulaGrammar::CONV_OOO );
- size_t nCount = aRangeList.size();
- for (size_t i=0; i< nCount; i++ )
+ if (!sPrintRanges.isEmpty())
{
- pDoc->AddPrintRange( nCurTab, aRangeList[i] );
+ ScRangeList aRangeList;
+ ScRangeStringConverter::GetRangeListFromString(aRangeList, sPrintRanges, *pDoc, ::formula::FormulaGrammar::CONV_OOO);
+ size_t nCount = aRangeList.size();
+ for (size_t i = 0; i < nCount; i++)
+ {
+ pDoc->AddPrintRange(nCurTab, aRangeList[i]);
+ }
}
+ else if (!bPrintEntireSheet)
+ // Sheet has "print entire sheet" option by default. Remove it.
+ pDoc->ClearPrintRanges(nCurTab);
}
- else if (!bPrintEntireSheet)
- // Sheet has "print entire sheet" option by default. Remove it.
- pDoc->ClearPrintRanges(nCurTab);
ScOutlineTable* pOutlineTable(pDoc->GetOutlineTable(nCurTab));
if (pOutlineTable)
More information about the Libreoffice-commits
mailing list