diff options
Diffstat (limited to 'vbahelper')
-rw-r--r-- | vbahelper/source/vbahelper/vbaapplicationbase.cxx | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/vbahelper/source/vbahelper/vbaapplicationbase.cxx b/vbahelper/source/vbahelper/vbaapplicationbase.cxx index a0268237efe6..d550731cc89f 100644 --- a/vbahelper/source/vbahelper/vbaapplicationbase.cxx +++ b/vbahelper/source/vbahelper/vbaapplicationbase.cxx @@ -151,6 +151,7 @@ struct VbaApplicationBase_Impl final { VbaTimerHashMap m_aTimerHash; bool mbVisible; + OUString msCaption; VbaApplicationBase_Impl() : mbVisible( true ) {} @@ -262,6 +263,39 @@ void SAL_CALL VbaApplicationBase::setVisible( sal_Bool bVisible ) m_pImpl->mbVisible = bVisible; // dummy implementation } +OUString SAL_CALL VbaApplicationBase::getCaption() +{ + SbMethod* pMeth = StarBASIC::GetActiveMethod(); + if (!pMeth) + { + // When called from Automation clients, we don't even try, as there doesn't seem to be any + // good way to get at the actual "caption" (title) of the application's window (any of them, + // if there are several). We just keep a copy of a fake caption in the VbaApplicationBase_Impl. + return m_pImpl->msCaption; + } + + // No idea if this code, which uses APIs that apparently are related to StarBasic (check + // getCurrentDoc() in vbahelper.cxx), actually works any better. + uno::Reference< frame::XModel > xModel( getCurrentDocument(), uno::UNO_QUERY_THROW ); + uno::Reference< frame::XFrame > xFrame( xModel->getCurrentController()->getFrame(), uno::UNO_QUERY_THROW ); + return xFrame->getName(); +} + +void SAL_CALL VbaApplicationBase::setCaption( const OUString& sCaption ) +{ + // See comments in getCaption(). + + SbMethod* pMeth = StarBASIC::GetActiveMethod(); + if (!pMeth) + { + m_pImpl->msCaption = sCaption; + return; + } + + uno::Reference< frame::XModel > xModel( getCurrentDocument(), uno::UNO_QUERY_THROW ); + uno::Reference< frame::XFrame > xFrame( xModel->getCurrentController()->getFrame(), uno::UNO_QUERY_THROW ); + xFrame->setName( sCaption ); +} void SAL_CALL VbaApplicationBase::OnKey( const OUString& Key, const uno::Any& Procedure ) |