Kaydet (Commit) ea6aef69 authored tarafından Justin Luth's avatar Justin Luth Kaydeden (comit) Miklos Vajna

cleanup tdf#72560 writerfilter: set in defaults, not styles

These "unspecified" defaults are best set in document defaults,
not in the style itself. Otherwise things like table styles
don't know whether they can override that property.

Most of the existing logic was no longer necessary, since
a more generic fix ensured that all parentless styles
inherited all docDefaults.

Change-Id: I0ae0ccc4d69c784611fd762b5aed6e924196caf1
Reviewed-on: https://gerrit.libreoffice.org/58829
Tested-by: Jenkins
Reviewed-by: 's avatarJustin Luth <justin_luth@sil.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst fd60696e
......@@ -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")
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment