diff options
author | Noel Power <noel.power@suse.com> | 2013-05-01 12:05:22 +0100 |
---|---|---|
committer | Noel Power <noel.power@suse.com> | 2013-05-09 14:11:14 +0100 |
commit | b1dc5ed5693c8ed23e0bd14f29ad796666c27785 (patch) | |
tree | 133eed35cd845ab67996ef0cb8f0f75997a02c7e /vbahelper/source | |
parent | 04eb03cc0b01e5dd862aa073810d3ab898661e8f (diff) |
tweak vba Control implementation to aritificially fire events from api
Previouslly there were some internal methods to allow event handlers
to be triggered. To test some functionality from the unit tests we
now expose some of that functionality via uno.
Change-Id: I11022226260d3dacd82f42ce89413102ce34cc13
Diffstat (limited to 'vbahelper/source')
-rw-r--r-- | vbahelper/source/msforms/vbacontrol.cxx | 7 | ||||
-rw-r--r-- | vbahelper/source/msforms/vbacontrol.hxx | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/vbahelper/source/msforms/vbacontrol.cxx b/vbahelper/source/msforms/vbacontrol.cxx index 516cfa69247a..ae0cc588cf17 100644 --- a/vbahelper/source/msforms/vbacontrol.cxx +++ b/vbahelper/source/msforms/vbacontrol.cxx @@ -519,8 +519,9 @@ ScVbaControl::setMousePointer( ::sal_Int32 _mousepointer ) throw (::com::sun::st } } -void ScVbaControl::fireEvent( script::ScriptEvent& evt ) +void SAL_CALL ScVbaControl::fireEvent( const script::ScriptEvent& rEvt ) throw (uno::RuntimeException) { + script::ScriptEvent evt( rEvt ); uno::Reference<lang::XMultiComponentFactory > xServiceManager( mxContext->getServiceManager(), uno::UNO_QUERY_THROW ); uno::Reference< script::XScriptListener > xScriptListener( xServiceManager->createInstanceWithContext( "ooo.vba.EventListener" , mxContext ), uno::UNO_QUERY_THROW ); @@ -546,7 +547,9 @@ void ScVbaControl::fireEvent( script::ScriptEvent& evt ) uno::Reference< document::XCodeNameQuery > xNameQuery( xDocFac->createInstance( "ooo.vba.VBACodeNameProvider" ), uno::UNO_QUERY_THROW ); uno::Reference< uno::XInterface > xIf( xControlShape->getControl(), uno::UNO_QUERY_THROW ); evt.ScriptCode = xNameQuery->getCodeNameForObject( xIf ); - evt.Arguments[ 0 ] = uno::makeAny( aEvt ); + // handle if we passed in our own arguments + if ( !rEvt.Arguments.getLength() ) + evt.Arguments[ 0 ] = uno::makeAny( aEvt ); xScriptListener->firing( evt ); } else diff --git a/vbahelper/source/msforms/vbacontrol.hxx b/vbahelper/source/msforms/vbacontrol.hxx index bf6b8a308fcf..7644b56515f8 100644 --- a/vbahelper/source/msforms/vbacontrol.hxx +++ b/vbahelper/source/msforms/vbacontrol.hxx @@ -57,7 +57,6 @@ protected: virtual css::uno::Reference< css::awt::XWindowPeer > getWindowPeer() throw (css::uno::RuntimeException); void fireChangeEvent(); void fireClickEvent(); - void fireEvent( css::script::ScriptEvent& evt ); public: ScVbaControl( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::uno::XInterface >& xControl, const css::uno::Reference< css::frame::XModel >& xModel, ov::AbstractGeometryAttributes* pHelper ); @@ -84,6 +83,7 @@ public: virtual void SAL_CALL setTop( double _top ) throw (css::uno::RuntimeException); virtual void SAL_CALL SetFocus( ) throw (css::uno::RuntimeException); virtual void SAL_CALL Move( double Left, double Top, const ::com::sun::star::uno::Any& Width, const ::com::sun::star::uno::Any& Height ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL fireEvent( const css::script::ScriptEvent& evt ) throw (::com::sun::star::uno::RuntimeException); virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getObject() throw (css::uno::RuntimeException); virtual OUString SAL_CALL getControlSource() throw (css::uno::RuntimeException); |