summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf113547.docxbin0 -> 14424 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport11.cxx11
-rw-r--r--writerfilter/source/dmapper/NumberingManager.cxx10
-rw-r--r--writerfilter/source/dmapper/NumberingManager.hxx3
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
new file mode 100644
index 000000000000..7b35ad72ba44
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf113547.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
index 6aca7e81b2cd..e2af3250cb07 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx
@@ -109,6 +109,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