tdf#161794 fix:Row grouping does not work on Row number 1

Because GetCurrentRow returns 0, the Group started from Row number 2.
While there is a solution to fix GetCurrentRow, it seemed likely to affect
other code, so I decided to get the row position the same way as bHeader.
This change also resolves tdf#102154.

Change-Id: Iadf140082e8dda98aa959baaa27226a19c30da9a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204815
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
(cherry picked from commit c06f65fed5)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204840
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
This commit is contained in:
Saburo Yoshida
2026-05-07 00:27:45 +02:00
committed by Adolfo Jayme Barrientos
parent 2047197804
commit df1ae899a9
2 changed files with 19 additions and 20 deletions
+2 -1
View File
@@ -264,7 +264,8 @@ ScXMLTableRowsContext::ScXMLTableRowsContext( ScXMLImport& rImport,
}
else if (bGroup)
{
nGroupStartRow = rImport.GetTables().GetCurrentRow();
ScAddress aAddr = rImport.GetTables().GetCurrentCellPos();
nGroupStartRow = aAddr.Row();
++nGroupStartRow;
if ( rAttrList.is() )
{
+17 -19
View File
@@ -35,6 +35,8 @@ constexpr OUStringLiteral colLevel4 = u"OutlineSheet.G1:S1";
constexpr OUString rowLevel1 = u"OutlineSheet.A1:A30"_ustr;
constexpr OUString rowLevel2 = u"OutlineSheet.A3:A27"_ustr;
constexpr OUString rowLevel3 = u"OutlineSheet.A5:A24"_ustr;
constexpr OUString rowLevel4 = u"OutlineSheet.A7:A21"_ustr;
static OUString getVisibleAddress(
uno::Reference<sheet::XSpreadsheet> const& xSheet,
@@ -142,44 +144,40 @@ void XSheetOutline::testShowLevel()
// verify that level 2 and level 1 are shown --> column 0..3 & column 22..26
// level 3 & 4 are hidden --> column 4..19
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", u"OutlineSheet.A1:D1"_ustr, getVisibleAddress(aSheet, u"OutlineSheet.A1:D1"_ustr));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", u"OutlineSheet.V1:Z1"_ustr, getVisibleAddress(aSheet, u"OutlineSheet.V1:Z1"_ustr));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", u"OutlineSheet.A31:D31"_ustr, getVisibleAddress(aSheet, u"OutlineSheet.A31:D31"_ustr));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", u"OutlineSheet.V31:Z31"_ustr, getVisibleAddress(aSheet, u"OutlineSheet.V31:Z31"_ustr));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Column", OUString(), getVisibleAddress(aSheet, colLevel3));
/* FIXME !!
// test Rows
aLevel1 = getAddressFromRangeString(rowLevel1);
aLevel2 = getAddressFromRangeString(rowLevel2);
aLevel3 = getAddressFromRangeString(rowLevel3);
aLevel4 = getAddressFromRangeString(rowLevel4);
aLevel1 = getAddressFromRangeString(aSheet, rowLevel1);
aLevel2 = getAddressFromRangeString(aSheet, rowLevel2);
aLevel3 = getAddressFromRangeString(aSheet, rowLevel3);
aLevel4 = getAddressFromRangeString(aSheet, rowLevel4);
aSheetOutline->showDetail(getAddressFromRangeString(colLevel1));
aSheetOutline->showDetail(getAddressFromRangeString(rowLevel1));
aSheetOutline->showDetail(getAddressFromRangeString(rowLevel2));
aSheetOutline->showDetail(getAddressFromRangeString(aSheet, colLevel1));
aSheetOutline->showDetail(getAddressFromRangeString(aSheet, rowLevel1));
aSheetOutline->showDetail(getAddressFromRangeString(aSheet, rowLevel2));
std::cout << " verify showLevel row before" << OUStringToOString(getVisibleAddress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
std::cout << " verify showLevel row before" << getVisibleAddress(aSheet, u"OutlineSheet.A1:Z30"_ustr) << std::endl;
aSheetOutline->hideDetail(aLevel1);
aSheetOutline->hideDetail(aLevel2);
aSheetOutline->hideDetail(aLevel3);
aSheetOutline->hideDetail(aLevel4);
std::cout << " verify showLevel row just before" << OUStringToOString(getVisibleAddress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
std::cout << " verify showLevel row just before" << getVisibleAddress(aSheet, u"OutlineSheet.A1:Z30"_ustr) << std::endl;
aSheetOutline->showLevel(2, table::TableOrientation_ROWS);
std::cout << " verify showLevel row after" << OUStringToOString(getVisibleAddress("OutlineSheet.A1:Z30"), RTL_TEXTENCODING_UTF8).getStr() << std::endl;
std::cout << " verify showLevel row after" << getVisibleAddress(aSheet, u"OutlineSheet.A1:Z30"_ustr) << std::endl;
// verify rows visible 0..3 & 24..29
// verify rows hidden 4..23
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A1:A4"), getVisibleAddress("OutlineSheet.A1:A4"));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString("OutlineSheet.A25:A30"), getVisibleAddress("OutlineSheet.A25:A30"));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString(), getVisibleAddress(rowLevel3));
*/
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", u"OutlineSheet.AA1:AA4"_ustr, getVisibleAddress(aSheet, u"OutlineSheet.AA1:AA4"_ustr));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", u"OutlineSheet.AA25:AA30"_ustr, getVisibleAddress(aSheet, u"OutlineSheet.AA25:AA30"_ustr));
CPPUNIT_ASSERT_EQUAL_MESSAGE("testShowLevel Row", OUString(), getVisibleAddress(aSheet, rowLevel3));
}