diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2024-01-31 05:53:56 -0500 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2024-02-02 13:26:16 +0100 |
commit | 7a3e9c66baff8554d1267bc98c9c69e763bc8bdc (patch) | |
tree | 1062a37ee38786293051c7693ccc8617e7b2c0f7 /oox/qa | |
parent | 332faa63407305852f5044e4bbc41302ccfe46cd (diff) |
sw: do not redline ContentControl items
When we redline the ContentControl item
itself, we break docx XML. Instead, we
only need to redline the placeholder,
which we already do.
This simply disables redlining when
inserting the ContentControl item
while leaving it otherwise enabled
while inserting the placeholder.
Before:
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="Normal"/>
<w:rPr></w:rPr>
</w:pPr>
==> <w:ins w:id="-1" w:author="Unknown Author" w:date="2024-01-24T19:43:08Z">
<w:sdt>
<w:sdtPr>
<w12:checkbox>
<w12:checked w14:val="0"/>
<w12:checkedState w14:val="2612"/>
<w12:uncheckedState w14:val="2610"/>
</w12:checkbox>
</w:sdtPr>
<w:sdtContent>
<w:r>
<w:rPr></w:rPr>
</w:r>
==> </w:ins>
==> <w:ins w:id="0" w:author="Unknown Author" w:date="2024-01-24T19:43:08Z">
<w:r>
<w:rPr></w:rPr>
<w:t>☐</w:t>
</w:r>
==> </w:ins>
<w:r>
<w:rPr></w:rPr>
</w:r>
</w:sdtContent>
</w:sdt>
</w:p>
</w:body>
The first <w:ins> and its closing tag
is not seen in the reference docx
file, and we can see that it's invalid
XML here.
After:
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="Normal"/>
<w:rPr></w:rPr>
</w:pPr>
<w:sdt>
<w:sdtPr>
<w12:checkbox>
<w12:checked w14:val="0"/>
<w12:checkedState w14:val="2612"/>
<w12:uncheckedState w14:val="2610"/>
</w12:checkbox>
</w:sdtPr>
<w:sdtContent>
<w:r>
<w:rPr></w:rPr>
</w:r>
==> <w:ins w:id="0" w:author="Unknown Author" w:date="2024-01-24T19:43:08Z">
<w:r>
<w:rPr></w:rPr>
<w:t>☐</w:t>
</w:r>
==> </w:ins>
<w:r>
<w:rPr></w:rPr>
</w:r>
</w:sdtContent>
</w:sdt>
</w:p>
</w:body>
Only the valid <w:ins> around the
placeholder exists.
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Change-Id: I1404e41aec3b5efdc2e4115236102ffa2733b15c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162802
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'oox/qa')
-rw-r--r-- | oox/qa/unit/export.cxx | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/oox/qa/unit/export.cxx b/oox/qa/unit/export.cxx index aa9690efdb4a..4ad6dce4e288 100644 --- a/oox/qa/unit/export.cxx +++ b/oox/qa/unit/export.cxx @@ -70,6 +70,45 @@ CPPUNIT_TEST_FIXTURE(Test, testRotatedShapePosition) assertXPath(pXmlDoc, "//wpg:wgp/wps:wsp[1]/wps:spPr/a:xfrm/a:off"_ostr, "y"_ostr, "469440"); } +CPPUNIT_TEST_FIXTURE(Test, testInsertCheckboxContentControlOdt) +{ + loadFromFile(u"tdf141786_RotatedShapeInGroup.odt"); + + dispatchCommand(mxComponent, ".uno:TrackChanges", {}); + dispatchCommand(mxComponent, ".uno:InsertCheckboxContentControl", {}); + + save("Office Open XML Text"); + // validate(maTempFile.GetFileName(), test::OOXML); // Enable when unrelated errors are fixed. +} + +CPPUNIT_TEST_FIXTURE(Test, testInsertCheckboxContentControlDocx) +{ + { + loadFromFile(u"dml-groupshape-polygon.docx"); + + // Without TrackChanges, inserting the Checkbox works just fine + // when exporting to docx. + dispatchCommand(mxComponent, ".uno:InsertCheckboxContentControl", {}); + + save("Office Open XML Text"); + // validate(maTempFile.GetFileName(), test::OOXML); // Enable when unrelated errors are fixed. + } + + { + loadFromFile(u"dml-groupshape-polygon.docx"); + + // With TrackChanges, the Checkbox causes an assertion in the sax serializer, + // in void sax_fastparser::FastSaxSerializer::endFastElement(sal_Int32). + // Element == maMarkStack.top()->m_DebugStartedElements.back() + // sax/source/tools/fastserializer.cxx#402 + dispatchCommand(mxComponent, ".uno:TrackChanges", {}); + dispatchCommand(mxComponent, ".uno:InsertCheckboxContentControl", {}); + + save("Office Open XML Text"); + // validate(maTempFile.GetFileName(), test::OOXML); // Enable when unrelated errors are fixed. + } +} + CPPUNIT_TEST_FIXTURE(Test, testDmlGroupshapePolygon) { // Given a document with a group shape, containing a single polygon child shape: |