summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2013-10-17 13:02:29 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2013-10-17 13:05:15 +0200
commitab2c1321776e0b622c5f0747366bb0bfeb163cc5 (patch)
tree14a7712291fb9885755f5c32eefef75b18426726 /writerfilter
parent214fc9134176c79c701ce90dc252738d8038e01f (diff)
writerfilter: fix default numbering style
Change-Id: Ia019c93841043ac5d65e08ad17400acc27f82d6c
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/StyleSheetTable.cxx28
1 files changed, 27 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index c3fd4a8737a5..ab07e89f07a4 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -826,6 +826,31 @@ void StyleSheetTable::ApplyStyleSheets( FontTablePtr rFontTable )
rPropNameSupplier.GetName( PROP_SERVICE_PARA_STYLE ) :
(bListStyle ? OUString("com.sun.star.style.NumberingStyle") : rPropNameSupplier.GetName( PROP_SERVICE_CHAR_STYLE ))),
uno::UNO_QUERY_THROW);
+
+ // Numbering styles have to be inserted early, as e.g. the NumberingRules property is only available after insertion.
+ if (bListStyle)
+ {
+ xStyles->insertByName( sConvertedStyleName, uno::makeAny( xStyle ) );
+ xStyle.set(xStyles->getByName(sConvertedStyleName), uno::UNO_QUERY_THROW);
+
+ StyleSheetPropertyMap* pPropertyMap = dynamic_cast<StyleSheetPropertyMap*>(pEntry->pProperties.get());
+ if (pPropertyMap->GetListId() == -1)
+ {
+ // No properties? Word default is 'none', Writer one is 'arabic', handle this.
+ uno::Reference<beans::XPropertySet> xPropertySet(xStyle, uno::UNO_QUERY_THROW);
+ uno::Reference<container::XIndexReplace> xNumberingRules;
+ xPropertySet->getPropertyValue("NumberingRules") >>= xNumberingRules;
+ uno::Reference<container::XIndexAccess> xIndexAccess(xNumberingRules, uno::UNO_QUERY_THROW);
+ for (sal_Int32 i = 0; i < xIndexAccess->getCount(); ++i)
+ {
+ uno::Sequence< beans::PropertyValue > aLvlProps(1);
+ aLvlProps[0].Name = "NumberingType";
+ aLvlProps[0].Value <<= style::NumberingType::NUMBER_NONE;
+ xNumberingRules->replaceByIndex(i, uno::makeAny(aLvlProps));
+ xPropertySet->setPropertyValue("NumberingRules", uno::makeAny(xNumberingRules));
+ }
+ }
+ }
}
if( !pEntry->sBaseStyleIdentifier.isEmpty() )
{
@@ -1015,7 +1040,8 @@ void StyleSheetTable::ApplyStyleSheets( FontTablePtr rFontTable )
OSL_FAIL( "Some style properties could not be set");
}
}
- if(bInsert)
+ // Numbering style got inserted earlier.
+ if(bInsert && !bListStyle)
{
xStyles->insertByName( sConvertedStyleName, uno::makeAny( xStyle) );
}