[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - sw/qa sw/source
László Németh (via logerrit)
logerrit at kemper.freedesktop.org
Tue Oct 5 08:17:06 UTC 2021
sw/qa/extras/uiwriter/data/tdf39828.fodt | 57 +++++++++++++++++++++++++++++++
sw/qa/extras/uiwriter/uiwriter3.cxx | 34 ++++++++++++++++++
sw/source/core/fields/cellfml.cxx | 9 ++++
3 files changed, 100 insertions(+)
New commits:
commit bf62462b748c1842b50abb5152e3318d5028e1ca
Author: László Németh <nemeth at numbertext.org>
AuthorDate: Tue Sep 21 15:11:38 2021 +0200
Commit: Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Tue Oct 5 10:16:33 2021 +0200
tdf#39828 sw: fix table formula calculation at track changes
Tracked deleted cell content, e.g. removed digits
of the numbers were used in calculation instead of
the actual table content. (For example, if the cell
content changed from "1" to "2", tracked cell
text is a crossed out "1" and a plain "2", and
Writer calculated with "12" instead of "2".)
Change-Id: Iecc91585cd37be3647d85f97ba1716a5fc836242
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122393
Tested-by: László Németh <nemeth at numbertext.org>
Reviewed-by: László Németh <nemeth at numbertext.org>
Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123070
Tested-by: Jenkins
diff --git a/sw/qa/extras/uiwriter/data/tdf39828.fodt b/sw/qa/extras/uiwriter/data/tdf39828.fodt
new file mode 100644
index 000000000000..b32ca5306245
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/tdf39828.fodt
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/200
4/writer" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:open
document:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:body>
+ <office:text>
+ <text:tracked-changes text:track-changes="false">
+ <text:changed-region xml:id="ct94678778467312" text:id="ct94678778467312">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>xxx4</dc:creator>
+ <dc:date>2021-09-21T14:41:20</dc:date>
+ </office:change-info>
+ </text:deletion>
+ </text:changed-region>
+ <text:changed-region xml:id="ct94678778469008" text:id="ct94678778469008">
+ <text:insertion>
+ <office:change-info>
+ <dc:creator>xxx4</dc:creator>
+ <dc:date>2021-09-21T14:41:20</dc:date>
+ </office:change-info>
+ </text:insertion>
+ </text:changed-region>
+ </text:tracked-changes>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <table:table table:name="Table1" table:style-name="Table1">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-row table:style-name="TableLine94678778446544">
+ <table:table-cell table:style-name="TableBox94678778448640" office:value-type="string">
+ <text:p text:style-name="Standard"><text:change-start text:change-id="ct94678778467312"/>1<text:change-end text:change-id="ct94678778467312"/><text:change-start text:change-id="ct94678778469008"/><text:span text:style-name="T1">2</text:span><text:change-end text:change-id="ct94678778469008"/></text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine94678778490512">
+ <table:table-cell table:style-name="TableBox94678778448640" office:value-type="string">
+ <text:p text:style-name="Standard">2</text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine94678778493872">
+ <table:table-cell table:style-name="TableBox94678778448640" office:value-type="string">
+ <text:p text:style-name="Standard"><text:table-formula text:formula="ooow: <A1>+<A2>" style:data-style-name="N0">4</text:table-formula></text:p>
+ </table:table-cell>
+ </table:table-row>
+ <table:table-row table:style-name="TableLine94678778453968">
+ <table:table-cell table:style-name="TableBox94678778448640" office:value-type="string">
+ <text:p text:style-name="Standard"><text:table-formula text:formula="ooow:SUM(<A1:A3>)" style:data-style-name="N0">8</text:table-formula></text:p>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx b/sw/qa/extras/uiwriter/uiwriter3.cxx
index 3f9901572220..127268737d71 100644
--- a/sw/qa/extras/uiwriter/uiwriter3.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter3.cxx
@@ -2044,6 +2044,40 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf87199)
CPPUNIT_ASSERT(xCellA1->getString().endsWith("test1"));
}
+CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf39828)
+{
+ SwDoc* pDoc = createSwDoc(DATA_DIRECTORY, "tdf39828.fodt");
+ SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
+
+ pWrtShell->GotoNextTOXBase();
+
+ // show changes
+ pDoc->getIDocumentRedlineAccess().SetRedlineFlags(RedlineFlags::ShowDelete
+ | RedlineFlags::ShowInsert);
+ CPPUNIT_ASSERT_MESSAGE("redlining should be off",
+ !pDoc->getIDocumentRedlineAccess().IsRedlineOn());
+ CPPUNIT_ASSERT_MESSAGE(
+ "redlines should be visible",
+ IDocumentRedlineAccess::IsShowChanges(pDoc->getIDocumentRedlineAccess().GetRedlineFlags()));
+
+ uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
+ uno::UNO_QUERY);
+ uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xTextTable->getRows()->getCount());
+
+ uno::Reference<text::XTextRange> xCellA1(xTextTable->getCellByName("A1"), uno::UNO_QUERY);
+ // deleted "1", inserted "2"
+ CPPUNIT_ASSERT_EQUAL(OUString("12"), xCellA1->getString());
+ uno::Reference<text::XTextRange> xCellA3(xTextTable->getCellByName("A3"), uno::UNO_QUERY);
+ // This was 14 (bad sum: 2 + A1, where A1 was 12 instead of the correct 2)
+ CPPUNIT_ASSERT_EQUAL(OUString("4"), xCellA3->getString());
+ uno::Reference<text::XTextRange> xCellA4(xTextTable->getCellByName("A4"), uno::UNO_QUERY);
+ // This was 28 (bad sum: 2 + A1 + A3, where A1 was 12 and A3 was 14)
+ CPPUNIT_ASSERT_EQUAL(OUString("8"), xCellA4->getString());
+}
+
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf132603)
{
createSwDoc();
diff --git a/sw/source/core/fields/cellfml.cxx b/sw/source/core/fields/cellfml.cxx
index a3a32b80b98e..f4c8e54cc606 100644
--- a/sw/source/core/fields/cellfml.cxx
+++ b/sw/source/core/fields/cellfml.cxx
@@ -150,6 +150,15 @@ double SwTableBox::GetValue( SwTableCalcPara& rCalcPara ) const
sal_Int32 nSttPos = 0;
OUString sText = pTextNd->GetText();
+
+ // use text of the tracked changes
+ if ( sText != pTextNd->GetRedlineText() &&
+ sText.getLength() > 0 &&
+ sText[0] != CH_TXTATR_BREAKWORD && sText[0] != CH_TXTATR_INWORD )
+ {
+ sText = pTextNd->GetRedlineText();
+ }
+
while ( nSttPos < sText.getLength() && ( sText[nSttPos]==' ' || sText[nSttPos]=='\t' ) )
++nSttPos;
More information about the Libreoffice-commits
mailing list