diff options
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/control/thumbnailview.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/control/thumbnailviewacc.cxx | 47 | ||||
-rw-r--r-- | sfx2/source/control/thumbnailviewacc.hxx | 6 |
3 files changed, 52 insertions, 3 deletions
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index 5c8522e7b2b1..06f5800d3c97 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -1139,7 +1139,7 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId ) if( ImplHasAccessibleListeners() ) { // focus event (select) - ThumbnailViewAcc* pItemAcc = ThumbnailViewAcc::getImplementation( pItem->GetAccessible( mbIsTransientChildrenDisabled ) ); + ThumbnailViewItemAcc* pItemAcc = ThumbnailViewItemAcc::getImplementation( pItem->GetAccessible( mbIsTransientChildrenDisabled ) ); if( pItemAcc ) { diff --git a/sfx2/source/control/thumbnailviewacc.cxx b/sfx2/source/control/thumbnailviewacc.cxx index 3f612442bc9f..cd4a6d2c8b13 100644 --- a/sfx2/source/control/thumbnailviewacc.cxx +++ b/sfx2/source/control/thumbnailviewacc.cxx @@ -97,7 +97,7 @@ void ThumbnailViewAcc::GetFocus (void) { mbIsFocused = true; - // Boradcast the state change. + // Broadcast the state change. ::com::sun::star::uno::Any aOldState, aNewState; aNewState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED; FireAccessibleEvent( @@ -109,7 +109,7 @@ void ThumbnailViewAcc::LoseFocus (void) { mbIsFocused = false; - // Boradcast the state change. + // Broadcast the state change. ::com::sun::star::uno::Any aOldState, aNewState; aOldState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED; FireAccessibleEvent( @@ -612,6 +612,32 @@ ThumbnailViewItemAcc::~ThumbnailViewItemAcc() { } +void ThumbnailViewItemAcc::FireAccessibleEvent( short nEventId, const uno::Any& rOldValue, const uno::Any& rNewValue ) +{ + if( nEventId ) + { + ::std::vector< uno::Reference< accessibility::XAccessibleEventListener > > aTmpListeners( mxEventListeners ); + accessibility::AccessibleEventObject aEvtObject; + + aEvtObject.EventId = nEventId; + aEvtObject.Source = static_cast<uno::XWeak*>(this); + aEvtObject.NewValue = rNewValue; + aEvtObject.OldValue = rOldValue; + + for (::std::vector< uno::Reference< accessibility::XAccessibleEventListener > >::const_iterator aIter( aTmpListeners.begin() ), aEnd( aTmpListeners.end() ); + aIter != aEnd ; ++aIter) + { + try + { + (*aIter)->notifyEvent( aEvtObject ); + } + catch(const uno::Exception&) + { + } + } + } +} + void ThumbnailViewItemAcc::ParentDestroyed() { const ::osl::MutexGuard aGuard( maMutex ); @@ -628,6 +654,23 @@ const uno::Sequence< sal_Int8 >& ThumbnailViewItemAcc::getUnoTunnelId() return theValueItemAccUnoTunnelId::get().getSeq(); } +ThumbnailViewItemAcc* ThumbnailViewItemAcc::getImplementation( const uno::Reference< uno::XInterface >& rxData ) + throw() +{ + try + { + uno::Reference< lang::XUnoTunnel > xUnoTunnel( rxData, uno::UNO_QUERY ); + return( xUnoTunnel.is() ? + reinterpret_cast<ThumbnailViewItemAcc*>(sal::static_int_cast<sal_IntPtr>( + xUnoTunnel->getSomething( ThumbnailViewItemAcc::getUnoTunnelId() ))) : + NULL ); + } + catch(const ::com::sun::star::uno::Exception&) + { + return NULL; + } +} + uno::Reference< accessibility::XAccessibleContext > SAL_CALL ThumbnailViewItemAcc::getAccessibleContext() throw (uno::RuntimeException) { diff --git a/sfx2/source/control/thumbnailviewacc.hxx b/sfx2/source/control/thumbnailviewacc.hxx index 1e4f5823e636..74f9f1401f67 100644 --- a/sfx2/source/control/thumbnailviewacc.hxx +++ b/sfx2/source/control/thumbnailviewacc.hxx @@ -187,10 +187,16 @@ public: ThumbnailViewItemAcc( ThumbnailViewItem* pParent, bool bIsTransientChildrenDisabled ); ~ThumbnailViewItemAcc(); + void FireAccessibleEvent( short nEventId, + const ::com::sun::star::uno::Any& rOldValue, + const ::com::sun::star::uno::Any& rNewValue ); + void ParentDestroyed(); sal_Bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); } + static ThumbnailViewItemAcc* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); + public: // XAccessible |