Kaydet (Commit) c42b1cf2 authored tarafından Justin Luth's avatar Justin Luth Kaydeden (comit) Eike Rathke

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/54725Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
üst 78bd1493
......@@ -175,6 +175,7 @@ public:
#if !defined _WIN32
void testSupBookVirtualPathXLS();
#endif
void testAbsNamedRangeHTML();
void testSheetLocalRangeNameXLS();
void testSheetTextBoxHyperlinkXLSX();
void testFontSizeXLSX();
......@@ -281,6 +282,7 @@ public:
CPPUNIT_TEST(testImageWithSpecialID);
CPPUNIT_TEST(testPreserveTextWhitespaceXLSX);
CPPUNIT_TEST(testPreserveTextWhitespace2XLSX);
CPPUNIT_TEST(testAbsNamedRangeHTML);
CPPUNIT_TEST(testSheetLocalRangeNameXLS);
CPPUNIT_TEST(testSheetTextBoxHyperlinkXLSX);
CPPUNIT_TEST(testFontSizeXLSX);
......@@ -3325,6 +3327,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);
......
......@@ -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 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment