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.
This commit is contained in:
@@ -32,6 +32,7 @@
|
|||||||
#include <i18nutil/paper.hxx>
|
#include <i18nutil/paper.hxx>
|
||||||
#include <rtl/oustringostreaminserter.hxx>
|
#include <rtl/oustringostreaminserter.hxx>
|
||||||
#include <com/sun/star/beans/PropertyValue.hpp>
|
#include <com/sun/star/beans/PropertyValue.hpp>
|
||||||
|
#include <com/sun/star/beans/XMultiPropertySet.hpp>
|
||||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||||
#include <com/sun/star/table/BorderLine2.hpp>
|
#include <com/sun/star/table/BorderLine2.hpp>
|
||||||
#include <com/sun/star/container/XEnumeration.hpp>
|
#include <com/sun/star/container/XEnumeration.hpp>
|
||||||
@@ -986,6 +987,28 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
|
|||||||
void SectionPropertyMap::_ApplyProperties( uno::Reference< beans::XPropertySet > xStyle )
|
void SectionPropertyMap::_ApplyProperties( uno::Reference< beans::XPropertySet > xStyle )
|
||||||
{
|
{
|
||||||
PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
|
PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
|
||||||
|
uno::Reference<beans::XMultiPropertySet> const xMultiSet(xStyle,
|
||||||
|
uno::UNO_QUERY);
|
||||||
|
if (xMultiSet.is())
|
||||||
|
{ // FIXME why is "this" a STL container???
|
||||||
|
uno::Sequence<rtl::OUString> names(this->size());
|
||||||
|
uno::Sequence<uno::Any> 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 <PageStyle>::setPropertyValue");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
PropertyMap::iterator aMapIter = begin();
|
PropertyMap::iterator aMapIter = begin();
|
||||||
while( aMapIter != end())
|
while( aMapIter != end())
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user