diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-09-22 08:47:03 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-09-30 11:30:21 +0000 |
commit | d14c7b034d75730a85b5f6f843e39ff79840c272 (patch) | |
tree | 778306f641215d9ef322af6e895a96f81b1a03ed | |
parent | 8e911fe7e14d20ea5abe2991ed93ced62385462d (diff) |
tdf#92454 DOCX import: allow overriding para prop from num style in para style
Word has a feature like this: a paragraph style can refer to a numbering
style, and both can specify paragraph margins. If that's the case, then
the ones from the paragraph style has priority.
In Writer, the numbering style has priority, so the only chance for
correct import result is to set the margin directly on the paragraph in
this case.
(cherry picked from commit f4badd9a485f32f787d78431ed673e2932973887)
Conflicts:
sw/qa/extras/ooxmlimport/ooxmlimport.cxx
Conflicts:
sw/qa/extras/ooxmlimport/ooxmlimport.cxx
Change-Id: Iff3b03bcc56e0db3a48452c293acf41c91b8f159
Reviewed-on: https://gerrit.libreoffice.org/18794
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/tdf92454.docx | bin | 0 -> 32409 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 10 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 7 |
3 files changed, 17 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlimport/data/tdf92454.docx b/sw/qa/extras/ooxmlimport/data/tdf92454.docx Binary files differnew file mode 100644 index 000000000000..70426685e207 --- /dev/null +++ b/sw/qa/extras/ooxmlimport/data/tdf92454.docx diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx index 5066625da201..c36cc1761d61 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx @@ -2773,6 +2773,16 @@ DECLARE_OOXMLIMPORT_TEST(testTdf93919, "tdf93919.docx") CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin")); } +DECLARE_OOXMLIMPORT_TEST(testTdf92454, "tdf92454.docx") +{ + // The first paragraph had a large indentation / left margin as inheritance + // in Word and Writer works differently, and no direct value was set to be + // explicit. + uno::Reference<beans::XPropertyState> xParagraph(getParagraph(1), uno::UNO_QUERY); + // This was beans::PropertyState_DEFAULT_VALUE. + CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, xParagraph->getPropertyState("ParaFirstLineIndent")); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index f7ef2266ea0b..3868d746c4ea 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2039,6 +2039,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext ) rContext->Insert(PROP_PARA_RIGHT_MARGIN, uno::makeAny(nParaRightMargin)); } + + // Indent properties from the paragraph style have priority + // over the ones from the numbering styles in Word, not in + // Writer. + boost::optional<PropertyMap::Property> oProperty; + if (pStyleSheetProperties && (oProperty = pStyleSheetProperties->getProperty(PROP_PARA_FIRST_LINE_INDENT))) + rContext->Insert(PROP_PARA_FIRST_LINE_INDENT, oProperty->second); } if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() >= 0 ) |