diff options
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf113547.docx | bin | 0 -> 14424 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport11.cxx | 11 | ||||
-rw-r--r-- | writerfilter/source/dmapper/NumberingManager.cxx | 10 | ||||
-rw-r--r-- | writerfilter/source/dmapper/NumberingManager.hxx | 3 |
4 files changed, 22 insertions, 2 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf113547.docx b/sw/qa/extras/ooxmlexport/data/tdf113547.docx Binary files differnew file mode 100644 index 000000000000..7b35ad72ba44 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf113547.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx index c750e5b74e50..8a711978fb63 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx @@ -170,6 +170,17 @@ DECLARE_OOXMLEXPORT_TEST(testTdf113183, "tdf113183.docx") "HoriOrientPosition")); } +DECLARE_OOXMLEXPORT_TEST(testTdf113547, "tdf113547.docx") +{ + uno::Reference<beans::XPropertySet> xPropertySet( + getStyles("NumberingStyles")->getByName("WWNum1"), uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xLevels( + xPropertySet->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + comphelper::SequenceAsHashMap aProps(xLevels->getByIndex(0)); // 1st level + // This was 0, first-line left margin of the numbering was lost. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(-635), aProps["FirstLineIndent"].get<sal_Int32>()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx index 8754b489a9ec..809717e62659 100644 --- a/writerfilter/source/dmapper/NumberingManager.cxx +++ b/writerfilter/source/dmapper/NumberingManager.cxx @@ -119,6 +119,12 @@ void ListLevel::SetValue( Id nId, sal_Int32 nValue ) default: OSL_FAIL( "this line should never be reached"); } + m_bHasValues = true; +} + +bool ListLevel::HasValues() const +{ + return m_bHasValues; } void ListLevel::SetParaStyle( const std::shared_ptr< StyleSheetEntry >& pStyle ) @@ -467,9 +473,9 @@ uno::Sequence< uno::Sequence< beans::PropertyValue > > ListDef::GetPropertyValue for ( sal_Int32 i = 0; i < nThisCount && i < nAbstractCount; i++ ) { uno::Sequence< beans::PropertyValue > level = aThis[i]; - if ( level.hasElements() ) + if (level.hasElements() && GetLevel(i)->HasValues()) { - // If the element contains something, merge it + // If the element contains something, merge it, but ignore stub overrides. lcl_mergeProperties( level, aAbstract[i] ); } } diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx index 026164122e85..eabf4a0276c6 100644 --- a/writerfilter/source/dmapper/NumberingManager.hxx +++ b/writerfilter/source/dmapper/NumberingManager.hxx @@ -52,6 +52,7 @@ class ListLevel : public PropertyMap sal_Int32 m_nTabstop; std::shared_ptr< StyleSheetEntry > m_pParaStyle; bool m_outline; + bool m_bHasValues = false; public: @@ -80,6 +81,8 @@ public: const OUString& GetBulletChar( ) { return m_sBulletChar; }; const std::shared_ptr< StyleSheetEntry >& GetParaStyle( ) { return m_pParaStyle; }; bool isOutlineNumbering() const { return m_outline; } + /// Determines if SetValue() was called at least once. + bool HasValues() const; // UNO mapping functions |