sc/qa/unit/subsequent_export-test.cxx |   16 ++++++++++++++++
 sc/source/filter/html/htmlimp.cxx     |    2 ++
 2 files changed, 18 insertions(+)

New commits:
commit cd51f388c96cafdf81303722c43c6025d9f0073e
Author: Justin Luth <justin.l...@collabora.com>
Date:   Wed May 23 08:36:54 2018 +0300

    tdf#114487 sc htmlimp: rangeNames should be 3D
    
    Without a visible sheet name, these absolute ranges
    become relative after a round-trip.
    
    Another way to handle this would be to ensure that ODS
    (and other text-based formats) export Absolute in a
    way that can be properly imported. But handling
    it on import is safer and ensures UI consistency.
    
    The InitRange default is for !IsFlag3D and !IsTabRel().
    Since the range already imports as absolute, just add
    the appropriate 3D flags.
    
    Change-Id: Ia664e6f87e235096e1c2e5b702e18505e375e2ad
    Reviewed-on: https://gerrit.libreoffice.org/54725
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Eike Rathke <er...@redhat.com>
    (cherry picked from commit c42b1cf2464924b125aeae15968fb79cf795bc81)
    Reviewed-on: https://gerrit.libreoffice.org/55272

diff --git a/sc/qa/unit/subsequent_export-test.cxx 
b/sc/qa/unit/subsequent_export-test.cxx
index 122fad288343..af1b344dcf89 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -175,6 +175,7 @@ public:
 #if !defined _WIN32
     void testSupBookVirtualPathXLS();
 #endif
+    void testAbsNamedRangeHTML();
     void testSheetLocalRangeNameXLS();
     void testSheetTextBoxHyperlinkXLSX();
     void testFontSizeXLSX();
@@ -280,6 +281,7 @@ public:
     CPPUNIT_TEST(testImageWithSpecialID);
     CPPUNIT_TEST(testPreserveTextWhitespaceXLSX);
     CPPUNIT_TEST(testPreserveTextWhitespace2XLSX);
+    CPPUNIT_TEST(testAbsNamedRangeHTML);
     CPPUNIT_TEST(testSheetLocalRangeNameXLS);
     CPPUNIT_TEST(testSheetTextBoxHyperlinkXLSX);
     CPPUNIT_TEST(testFontSizeXLSX);
@@ -3307,6 +3309,20 @@ void ScExportTest::testImageWithSpecialID()
     }
 }
 
+void ScExportTest::testAbsNamedRangeHTML()
+{
+    ScDocShellRef xDocSh = loadDoc("numberformat.", FORMAT_HTML);
+    xDocSh->DoHardRecalc();
+    ScDocShellRef xDocSh2 = saveAndReload(xDocSh.get(), FORMAT_ODS);
+    xDocSh->DoClose();
+    xDocSh2->DoHardRecalc();
+
+    ScDocument& rDoc = xDocSh2->GetDocument();
+    ScRangeData* pRangeData = 
rDoc.GetRangeName()->findByUpperName(OUString("HTML_1"));
+    ScSingleRefData* pRef = 
pRangeData->GetCode()->FirstToken()->GetSingleRef();
+    CPPUNIT_ASSERT_MESSAGE("HTML_1 is an absolute 
reference",!pRef->IsTabRel());
+}
+
 void ScExportTest::testSheetLocalRangeNameXLS()
 {
     ScDocShellRef xDocSh = loadDoc("named-ranges-local.", FORMAT_XLS);
diff --git a/sc/source/filter/html/htmlimp.cxx 
b/sc/source/filter/html/htmlimp.cxx
index 72d56b4d9126..f601903bfde9 100644
--- a/sc/source/filter/html/htmlimp.cxx
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -102,6 +102,8 @@ void ScHTMLImport::InsertRangeName( ScDocument* pDoc, const 
OUString& rName, con
 {
     ScComplexRefData aRefData;
     aRefData.InitRange( rRange );
+    aRefData.Ref1.SetFlag3D( true );
+    aRefData.Ref2.SetFlag3D( aRefData.Ref2.Tab() != aRefData.Ref1.Tab() );
     ScTokenArray aTokArray;
     aTokArray.AddDoubleReference( aRefData );
     ScRangeData* pRangeData = new ScRangeData( pDoc, rName, aTokArray );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to