diff options
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/fdo72560e.docx | bin | 0 -> 9934 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport10.cxx | 13 | ||||
-rw-r--r-- | writerfilter/source/dmapper/StyleSheetTable.cxx | 42 |
3 files changed, 21 insertions, 34 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/fdo72560e.docx b/sw/qa/extras/ooxmlexport/data/fdo72560e.docx Binary files differnew file mode 100644 index 000000000000..7c3e89fb3347 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/fdo72560e.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx index 9e8d8c9d5df5..4db28720e0fa 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport10.cxx @@ -310,7 +310,18 @@ DECLARE_OOXMLEXPORT_TEST(testFdo72560d, "fdo72560d.docx") { // The problem was libreoffice confuse when RTL was specified in "Normal" when not using Normal at all CPPUNIT_ASSERT_EQUAL( sal_Int32(style::ParagraphAdjust_RIGHT), getProperty< sal_Int32 >( getParagraph(1), "ParaAdjust" )); - CPPUNIT_ASSERT_EQUAL( sal_Int32(style::ParagraphAdjust_RIGHT), getProperty< sal_Int32 >( getParagraph(1), "ParaAdjust" )); + CPPUNIT_ASSERT_EQUAL( sal_Int32(style::ParagraphAdjust_RIGHT), getProperty< sal_Int32 >( getParagraph(2), "ParaAdjust" )); +} + +DECLARE_OOXMLEXPORT_TEST(testFdo72560e, "fdo72560e.docx") +{ + // The problem was libreoffice confuse when *locale* is RTL, but w:bidi / w:jc are never defined. + // This unit test would only be noticed if the testing environment is set to something like an Arabic locale. + CPPUNIT_ASSERT_EQUAL(text::WritingMode2::LR_TB, getProperty<sal_Int16>( getParagraph(2), "WritingMode" )); + CPPUNIT_ASSERT_EQUAL(sal_Int32(style::ParagraphAdjust_LEFT), getProperty<sal_Int32>( getParagraph(2), "ParaAdjust" )); + + // widow/orphan control is on when never specified. + CPPUNIT_ASSERT_EQUAL(sal_Int8(2), getProperty<sal_Int8>( getParagraph(2), "ParaWidows" )); } DECLARE_OOXMLEXPORT_TEST(testRPrChangeClosed, "rprchange_closed.docx") diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx index 63659ffbc8ff..cb188909461a 100644 --- a/writerfilter/source/dmapper/StyleSheetTable.cxx +++ b/writerfilter/source/dmapper/StyleSheetTable.cxx @@ -1052,39 +1052,6 @@ void StyleSheetTable::ApplyStyleSheets( const FontTablePtr& rFontTable ) pEntry->pProperties->Insert(PROP_CHAR_HEIGHT_COMPLEX, aTwoHundredFortyTwip, false); } } - - // Widow/Orphan -> set both to two if not already set - uno::Any aTwo = uno::makeAny(sal_Int8(2)); - pEntry->pProperties->Insert(PROP_PARA_WIDOWS, aTwo, false); - pEntry->pProperties->Insert(PROP_PARA_ORPHANS, aTwo, false); - - // tdf#87533 explicitly set writing mode value based on default paragraph properties - // specified inside styles.xml: <w:docDefaults><w:pPrDefault><w:pPr><w:bidi> - { - const PropertyMapPtr & propertyMap = m_pImpl->m_pDefaultParaProps; - - boost::optional<PropertyMap::Property> writingMode; - if (propertyMap && (writingMode = propertyMap->getProperty(PROP_WRITING_MODE))) - { - pEntry->pProperties->Insert(PROP_WRITING_MODE, writingMode->second, false); - } - else - { - // Left-to-right direction if not already set - pEntry->pProperties->Insert(PROP_WRITING_MODE, uno::makeAny(sal_Int16(text::WritingMode_LR_TB)), false); - } - - boost::optional<PropertyMap::Property> paraAdjust; - if (propertyMap && (paraAdjust = propertyMap->getProperty(PROP_PARA_ADJUST))) - { - pEntry->pProperties->Insert(PROP_PARA_ADJUST, paraAdjust->second, false); - } - else - { - // Left alignment if not already set - pEntry->pProperties->Insert(PROP_PARA_ADJUST, uno::makeAny(sal_Int16(style::ParagraphAdjust_LEFT)), false); - } - } } auto aPropValues = comphelper::sequenceToContainer< std::vector<beans::PropertyValue> >(pEntry->pProperties->GetPropertyValues()); @@ -1522,6 +1489,15 @@ void StyleSheetTable::applyDefaults(bool bParaProperties) } if( bParaProperties && m_pImpl->m_pDefaultParaProps.get()) { + // tdf#87533 LO will have different defaults here, depending on the locale. Import with documented defaults + m_pImpl->m_pDefaultParaProps->Insert(PROP_WRITING_MODE, uno::makeAny(sal_Int16(text::WritingMode_LR_TB)), /*bOverwrite=*/false); + m_pImpl->m_pDefaultParaProps->Insert(PROP_PARA_ADJUST, uno::makeAny(sal_Int16(style::ParagraphAdjust_LEFT)), false); + + // Widow/Orphan -> set both to two if not already set + uno::Any aTwo = uno::makeAny(sal_Int8(2)); + m_pImpl->m_pDefaultParaProps->Insert(PROP_PARA_WIDOWS, aTwo, /*bOverwrite=*/false); + m_pImpl->m_pDefaultParaProps->Insert(PROP_PARA_ORPHANS, aTwo, false); + uno::Reference<style::XStyleFamiliesSupplier> xStylesSupplier(m_pImpl->m_xTextDocument, uno::UNO_QUERY); uno::Reference<container::XNameAccess> xStyleFamilies = xStylesSupplier->getStyleFamilies(); uno::Reference<container::XNameAccess> xParagraphStyles; |