diff options
author | Noel Power <noel.power@novell.com> | 2012-07-06 11:11:55 +0100 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2012-07-06 11:15:31 +0100 |
commit | eae1d5d9664bb6ab9fedcf573bdfe6640b22fe4d (patch) | |
tree | 35c7ef078e95674572b17a34bde50157e6523025 | |
parent | f99a10d45331c8f007fd521880e7a61546c02fb8 (diff) |
fix dialog editor crasher fdo#51269
missing clone of AllDialogChildren property was the culprit here.
Change-Id: I6c5ee105003967429d5bf79639ae75fb7d90562a
-rw-r--r-- | toolkit/source/controls/dialogcontrol.cxx | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/toolkit/source/controls/dialogcontrol.cxx b/toolkit/source/controls/dialogcontrol.cxx index 41633b5a5050..51c05108b041 100644 --- a/toolkit/source/controls/dialogcontrol.cxx +++ b/toolkit/source/controls/dialogcontrol.cxx @@ -186,6 +186,19 @@ UnoControlDialogModel::UnoControlDialogModel( const Reference< XMultiServiceFact UnoControlDialogModel::UnoControlDialogModel( const UnoControlDialogModel& rModel ) : ControlModelContainerBase( rModel ) { + // need to clone BASEPROPERTY_USERFORMCONTAINEES too + Reference< XNameContainer > xSrcNameCont( const_cast< UnoControlDialogModel& >(rModel).getPropertyValue( GetPropertyName( BASEPROPERTY_USERFORMCONTAINEES ) ), UNO_QUERY ); + Reference<XNameContainer > xNameCont( new SimpleNamedThingContainer< XControlModel >() ); + + uno::Sequence< rtl::OUString > sNames = xSrcNameCont->getElementNames(); + rtl::OUString* pName = sNames.getArray(); + rtl::OUString* pNamesEnd = pName + sNames.getLength(); + for ( ; pName != pNamesEnd; ++pName ) + { + if ( xSrcNameCont->hasByName( *pName ) ) + xNameCont->insertByName( *pName, xSrcNameCont->getByName( *pName ) ); + } + setFastPropertyValue_NoBroadcast( BASEPROPERTY_USERFORMCONTAINEES, makeAny( xNameCont ) ); } UnoControlDialogModel::~UnoControlDialogModel() |