diff options
author | László Németh <nemeth@numbertext.org> | 2020-02-07 15:06:50 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2020-05-15 11:50:46 +0200 |
commit | 364f9ae0a8b7e9724a3bfe77450e02a5607863b8 (patch) | |
tree | 68214047497562362eee70d322a98472e3da9570 | |
parent | 8bb007a4e4d46fd95b5ff5bc63980d05a279db0c (diff) |
tdf#130494: DOCX import: limit paragraph-level character property
expansion for the whole table paragraph based on the
last character context.
regression from 2ab481b038b62b1ff576ac4d49d03c1798cd7f84
(tdf#90069 DOCX: fix character style of new table rows)
(cherry picked from commit abb9c7db8bcc06f907d39a7811711882161d5803)
Conflicts:
sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
Change-Id: I49da23c268436488ff1537771869c38108113c12
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf130494.docx | bin | 0 -> 17455 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport11.cxx | 8 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 19 |
3 files changed, 23 insertions, 4 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf130494.docx b/sw/qa/extras/ooxmlexport/data/tdf130494.docx Binary files differnew file mode 100644 index 000000000000..bc2050feaa55 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf130494.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx index 7ec5da49be9f..53631de10210 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx @@ -1116,6 +1116,14 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf81100, "tdf81100.docx") assertXPath(pDump, "/root/page[3]/body/tab/row", 1); } +DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf130494, "tdf130494.docx") +{ + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc[1]/w:p/w:pPr/w:rPr/w:highlight", "val", "yellow"); + // keep direct formatting of table cell paragraph with removed highlighting + assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr/w:tc[1]/w:p/w:r/w:rPr/w:highlight", 0); +} + DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testTdf121597TrackedDeletionOfMultipleParagraphs, "tdf121597.odt") { xmlDocPtr pXmlDoc = parseExport("word/document.xml"); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 3ad763786c8a..5535db1cc1c5 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1805,14 +1805,25 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con // fix table paragraph properties if ( xParaProps && m_nTableDepth > 0 ) { - uno::Sequence< beans::PropertyValue > aValues = pParaContext->GetPropertyValues(false); + uno::Sequence< beans::PropertyValue > aParaProps = pParaContext->GetPropertyValues(false); // tdf#90069 in tables, apply paragraph level character style also on // paragraph level to support its copy during insertion of new table rows - for( const auto& rProp : std::as_const(aValues) ) + for( const auto& rParaProp : std::as_const(aParaProps) ) { - if ( rProp.Name.startsWith("Char") && rProp.Name != "CharStyleName" && rProp.Name != "CharInteropGrabBag" ) - xParaProps->setPropertyValue( rProp.Name, rProp.Value ); + if ( m_pLastCharacterContext.get() && rParaProp.Name.startsWith("Char") && rParaProp.Name != "CharStyleName" && rParaProp.Name != "CharInteropGrabBag" ) + { + const uno::Sequence< beans::PropertyValue > aLastCharProps = m_pLastCharacterContext->GetPropertyValues( ); + + for( const auto& rLastCharProp : std::as_const(aLastCharProps) ) + { + if ( rLastCharProp == rParaProp ) + { + xParaProps->setPropertyValue( rParaProp.Name, rParaProp.Value ); + break; + } + } + } } // tdf#128959 table paragraphs haven't got window and orphan controls |