From cc99bb9f383a65912d004e227a5b6a88b401bbba Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Wed, 21 Mar 2012 10:37:46 +0100 Subject: [PATCH] writerfilter: PropertyMap: speed this up a bit Using XMultiPropertySet reduces the number of SwTxtNodes created for the bugdoc from rhbz#789022 from ~5k to ~3k. --- writerfilter/source/dmapper/PropertyMap.cxx | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx index 575730f1bdd3..ee3ba7f5e6eb 100644 --- a/writerfilter/source/dmapper/PropertyMap.cxx +++ b/writerfilter/source/dmapper/PropertyMap.cxx @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -986,6 +987,28 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl ) void SectionPropertyMap::_ApplyProperties( uno::Reference< beans::XPropertySet > xStyle ) { PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier(); + uno::Reference const xMultiSet(xStyle, + uno::UNO_QUERY); + if (xMultiSet.is()) + { // FIXME why is "this" a STL container??? + uno::Sequence names(this->size()); + uno::Sequence values(this->size()); + PropertyMap::iterator it = this->begin(); + for (size_t i = 0; it != this->end(); ++it, ++i) + { + names[i] = rPropNameSupplier.GetName(it->first.eId); + values[i] = it->second; + } + try + { + xMultiSet->setPropertyValues(names, values); + } + catch( const uno::Exception& ) + { + OSL_FAIL( "Exception in ::setPropertyValue"); + } + return; + } PropertyMap::iterator aMapIter = begin(); while( aMapIter != end()) {