hg commig -mmib17:
This commit is contained in:
parent
dd6ba6b64a
commit
47ad982559
2 changed files with 17 additions and 7 deletions
|
@ -74,12 +74,20 @@ private:
|
|||
public:
|
||||
ControlArrayWrapper( const uno::Reference< awt::XControl >& xDialog )
|
||||
{
|
||||
mxDialog.set( xDialog, uno::UNO_QUERY_THROW );
|
||||
uno::Sequence< uno::Reference< awt::XControl > > sXControls = mxDialog->getControls();
|
||||
try
|
||||
{
|
||||
mxDialog.set( xDialog, uno::UNO_QUERY_THROW );
|
||||
uno::Sequence< uno::Reference< awt::XControl > > sXControls = mxDialog->getControls();
|
||||
|
||||
msNames.realloc( sXControls.getLength() );
|
||||
for ( sal_Int32 i = 0; i < sXControls.getLength(); ++i )
|
||||
SetArrayElementTo( sXControls[ i ], i );
|
||||
msNames.realloc( sXControls.getLength() );
|
||||
for ( sal_Int32 i = 0; i < sXControls.getLength(); ++i )
|
||||
SetArrayElementTo( sXControls[ i ], i );
|
||||
}
|
||||
catch( uno::Exception& )
|
||||
{
|
||||
// accept the case when the dialog already does not exist
|
||||
// in this case the wrapper should work in dummy mode
|
||||
}
|
||||
}
|
||||
|
||||
static rtl::OUString getControlName( const uno::Reference< awt::XControl >& xCtrl )
|
||||
|
@ -186,7 +194,7 @@ ScVbaControls::ScVbaControls( const uno::Reference< XHelperInterface >& xParent,
|
|||
const css::uno::Reference< awt::XControl >& xDialog )
|
||||
: ControlsImpl_BASE( xParent, xContext, lcl_controlsWrapper( xDialog ) )
|
||||
{
|
||||
mxDialog.set( xDialog, uno::UNO_QUERY_THROW );
|
||||
mxDialog.set( xDialog, uno::UNO_QUERY );
|
||||
}
|
||||
|
||||
uno::Reference< container::XEnumeration >
|
||||
|
|
|
@ -185,7 +185,9 @@ ScVbaUserForm::hasMethod( const ::rtl::OUString& /*aName*/ ) throw (uno::Runtime
|
|||
uno::Any SAL_CALL
|
||||
ScVbaUserForm::Controls( const uno::Any& index ) throw (uno::RuntimeException)
|
||||
{
|
||||
uno::Reference< awt::XControl > xDialogControl( m_xDialog, uno::UNO_QUERY_THROW );
|
||||
// if the dialog already closed we should do nothing, but the VBA will call methods of the Controls objects
|
||||
// thus we have to provide a dummy object in this case
|
||||
uno::Reference< awt::XControl > xDialogControl( m_xDialog, uno::UNO_QUERY );
|
||||
uno::Reference< XCollection > xControls( new ScVbaControls( this, mxContext, xDialogControl ) );
|
||||
if ( index.hasValue() )
|
||||
return uno::makeAny( xControls->Item( index, uno::Any() ) );
|
||||
|
|
Loading…
Reference in a new issue