sw/qa/extras/ooxmlexport/data/tdf136850.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport11.cxx | 7 +++++++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 18 ++++++++++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-)
New commits: commit e3bf53d92ee9c933e7d5794989facb24abf4315d Author: László Németh <[email protected]> AuthorDate: Fri Oct 2 12:55:04 2020 +0200 Commit: Gabor Kelemen <[email protected]> CommitDate: Tue Apr 20 14:48:28 2021 +0200 tdf#136850 DOCX: fix change tracking in floating tables Deleted text still reappeared as normal text in floating tables in the case of combination with tracked paragraph property changes. Follow-up of commit 288db6eb47fbbd2b3ca34ffea0686d8ed8ed9be9 (tdf#132271 DOCX: import change tracking in floating tables) and commit 464a7b0631335a8f8729512b8c27f864747f56a7 (tdf#136667 DOCX import: fix crash of floating tables). Change-Id: I2c8f63054520ce28306c063ef638756f7d8342e9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103832 Tested-by: Jenkins Reviewed-by: László Németh <[email protected]> (cherry picked from commit c37f2b927715ebbeffcc1d7a1e9d646f1611c4ec) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114286 Tested-by: Gabor Kelemen <[email protected]> Reviewed-by: Gabor Kelemen <[email protected]> diff --git a/sw/qa/extras/ooxmlexport/data/tdf136850.docx b/sw/qa/extras/ooxmlexport/data/tdf136850.docx new file mode 100644 index 000000000000..e94a66208e0d Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf136850.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx index e28eb2a4952b..caf25fc1f988 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx @@ -994,6 +994,13 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf136667, "tdf136667.docx") assertXPath(pXmlDoc, "//w:ins", 4); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf136850, "tdf136850.docx") +{ + xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); + // import change tracking in floating tables + assertXPath(pXmlDoc, "//w:del"); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf128156, "tdf128156.docx") { xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 7e1ec2415329..68cf33bfcb08 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -6783,11 +6783,12 @@ void DomainMapper_Impl::ExecuteFrameConversion() { if( m_xFrameStartRange.is() && m_xFrameEndRange.is() && !m_bDiscardHeaderFooter ) { + std::vector<sal_Int32> redPos, redLen; try { uno::Reference< text::XTextAppendAndConvert > xTextAppendAndConvert( GetTopTextAppend(), uno::UNO_QUERY_THROW ); // convert redline ranges to cursor movement and character length - std::vector<sal_Int32> redPos, redLen; + for( size_t i = 0; i < aFramedRedlines.size(); i+=3) { uno::Reference< text::XTextRange > xRange; @@ -6837,7 +6838,20 @@ void DomainMapper_Impl::ExecuteFrameConversion() } m_bIsActualParagraphFramed = false; - aFramedRedlines.clear(); + + if (redPos.size() == aFramedRedlines.size()/3) + { + for( sal_Int32 i = aFramedRedlines.size() - 1; i >= 0; --i) + { + // keep redlines of floating tables to process them in CloseSectionGroup() + if ( redPos[i/3] != -1 ) + { + aFramedRedlines.erase(aFramedRedlines.begin() + i); + } + } + } + else + aFramedRedlines.clear(); } m_xFrameStartRange = nullptr; m_xFrameEndRange = nullptr; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
