26 #include <osl/mutex.hxx>
28 #include <com/sun/star/uno/Any.hxx>
29 #include <com/sun/star/uno/Reference.hxx>
30 #include <com/sun/star/awt/Point.hpp>
31 #include <com/sun/star/awt/Rectangle.hpp>
32 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
33 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
34 #include <com/sun/star/accessibility/XAccessible.hpp>
35 #include <com/sun/star/accessibility/XAccessibleContext.hpp>
36 #include <com/sun/star/accessibility/XAccessibleComponent.hpp>
37 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
57 #include "../table/accessiblecell.hxx"
70 template <
typename first_type,
typename second_type >
71 static ::std::pair< first_type, second_type >
makeSortedPair( first_type first,
75 return ::std::make_pair( second, first );
77 return ::std::make_pair( first, second );
102 void SetEditSource( ::std::unique_ptr< SvxEditSource > && pEditSource );
131 void FireEvent(
const AccessibleEventObject& rEvent )
const;
169 void ParagraphsMoved( sal_Int32 nFirst, sal_Int32 nMiddle, sal_Int32 nLast );
230 mnFirstVisibleChild( -1 ),
231 mnLastVisibleChild( -2 ),
234 mbGroupHasFocus( false ),
235 mbThisHasFocus( false ),
242 mnNotifierClientId(::
comphelper::AccessibleEventNotifier::registerClient())
257 catch(
const uno::Exception& ) {}
263 throw uno::RuntimeException(
"Unknown edit source",
mxFrontEnd);
267 if( !pTextForwarder )
268 throw uno::RuntimeException(
"Unable to fetch text forwarder, model might be dead",
mxFrontEnd);
270 if( !pTextForwarder->
IsValid() )
271 throw uno::RuntimeException(
"Text forwarder is invalid, model might be dead",
mxFrontEnd);
273 return *pTextForwarder;
279 throw uno::RuntimeException(
"Unknown edit source",
mxFrontEnd);
283 if( !pViewForwarder )
284 throw uno::RuntimeException(
"Unable to fetch view forwarder, model might be dead",
mxFrontEnd);
286 if( !pViewForwarder->
IsValid() )
287 throw uno::RuntimeException(
"View forwarder is invalid, model might be dead",
mxFrontEnd);
289 return *pViewForwarder;
295 throw uno::RuntimeException(
"Unknown edit source",
mxFrontEnd);
299 if( !pViewForwarder )
301 throw uno::RuntimeException(
"No edit view forwarder, object not in edit mode",
mxFrontEnd);
304 if( !pViewForwarder->
IsValid() )
306 throw uno::RuntimeException(
"View forwarder is invalid, object not in edit mode",
mxFrontEnd);
309 return *pViewForwarder;
315 throw uno::RuntimeException(
"AccessibleTextHelper_Impl::GetEditSource: no edit source",
mxFrontEnd );
322 class AccessibleTextHelper_OffsetChildIndex
325 explicit AccessibleTextHelper_OffsetChildIndex( sal_Int32 nDifference ) :
mnDifference(nDifference) {}
326 void operator()( ::accessibility::AccessibleEditableTextPara& rPara )
328 rPara.SetIndexInParent( rPara.GetIndexInParent() +
mnDifference );
343 if( nOldOffset != nOffset )
346 AccessibleTextHelper_OffsetChildIndex aFunctor( nOffset - nOldOffset );
349 AccessibleParaManager::WeakChildAdapter< AccessibleTextHelper_OffsetChildIndex > (aFunctor) );
370 SAL_INFO(
"svx",
"Paragraph " << nChild <<
" received focus");
376 SAL_INFO(
"svx",
"Paragraph " << nChild <<
" lost focus");
391 SAL_INFO(
"svx",
"Paragraph " << nNewChild <<
" received focus");
400 if( bOldFocus == bHaveFocus )
408 if ( !pAccessibleCell )
409 GotPropertyEvent( uno::makeAny(AccessibleStateType::FOCUSED), AccessibleEventId::STATE_CHANGED );
417 SAL_INFO(
"svx",
"Parent object received focus" );
426 if ( !pAccessibleCell )
427 FireEvent( AccessibleEventId::STATE_CHANGED,
uno::Any(), uno::makeAny(AccessibleStateType::FOCUSED) );
435 SAL_INFO(
"svx",
"Parent object lost focus" );
454 catch(
const uno::Exception& ) {}
456 else if( bOldFocus != bHaveFocus )
461 SAL_INFO(
"svx",
"focus changed, Object " <<
this <<
", state: " << (bHaveFocus ?
"focused" :
"not focused") );
471 if( !pViewForwarder )
477 if ( pAccessibleCell )
481 return xCell->IsActiveCell();
484 return pViewForwarder->
IsValid();
486 catch(
const uno::RuntimeException& )
505 SAL_INFO(
"svx",
"Parent has focus!");
523 AccessibleEventId::CARET_CHANGED,
524 uno::makeAny(static_cast<sal_Int32>(-1)),
532 "focus changed, Object: " <<
this
533 <<
", Paragraph: " << aSelection.
nEndPara
534 <<
", Last paragraph: "
553 aOldCursor <<= static_cast<sal_Int32>(-1);
558 AccessibleEventId::CARET_CHANGED,
559 uno::makeAny(aSelection.
nEndPos),
565 "caret changed, Object: " <<
this <<
", New pos: "
566 << aSelection.
nEndPos <<
", Old pos: "
568 << aSelection.
nEndPara <<
", Old para: "
572 ::std::pair<sal_Int32, sal_Int32> sortedSelection(
574 ::std::min( aSelection.
nEndPara, nMaxValidParaIndex ) ) );
577 ::std::pair<sal_Int32, sal_Int32> sortedLastSelection(
582 const sal_Int16 nTextSelChgEventId =
583 AccessibleEventId::TEXT_SELECTION_CHANGED;
593 sortedSelection.second+1,
594 nTextSelChgEventId );
606 sortedLastSelection.second+1,
607 nTextSelChgEventId );
615 sortedSelection.second+1,
616 nTextSelChgEventId );
630 for ( ; nPara <= aTmpSel.
nEndPara; ++nPara )
637 nTextSelChgEventId );
642 const sal_Int32 nParaStartPos =
645 const sal_Int32 nParaEndPos =
648 const sal_Int32 nLastParaStartPos =
651 const sal_Int32 nLastParaEndPos =
654 if ( nParaStartPos != nLastParaStartPos ||
655 nParaEndPos != nLastParaEndPos )
658 nPara, nTextSelChgEventId );
664 for ( ; nPara <= aTmpLastSel.
nEndPara; ++nPara )
670 nTextSelChgEventId );
681 catch(
const uno::RuntimeException& ) {}
700 FireEvent(AccessibleEventId::INVALIDATE_ALL_CHILDREN);
706 maEditSource.SetEditSource( ::std::unique_ptr< SvxEditSource >() );
735 ::osl::MutexGuard aGuard(
maMutex );
756 for( sal_Int32 nCurrPara=0; nCurrPara<nParas; ++nCurrPara )
764 ::accessibility::AccessibleParaManager::WeakChild aChild(
maParaManager.GetChild(nCurrPara) );
765 if( aChild.second.Width == 0 &&
766 aChild.second.Height == 0 )
770 AccessibleEventId::CHILD );
775 catch(
const uno::Exception& )
777 OSL_FAIL(
"AccessibleTextHelper_Impl::UpdateVisibleChildren error while determining visible children");
785 if( bBroadcastEvents )
786 FireEvent(AccessibleEventId::INVALIDATE_ALL_CHILDREN);
793 class AccessibleTextHelper_UpdateChildBounds
796 explicit AccessibleTextHelper_UpdateChildBounds() {}
797 ::accessibility::AccessibleParaManager::WeakChild operator()( const ::accessibility::AccessibleParaManager::WeakChild& rChild )
800 auto aHardRef( rChild.first.get() );
804 awt::Rectangle aNewRect = aHardRef->getBounds();
805 const awt::Rectangle& aOldRect = rChild.second;
807 if( aNewRect.X != aOldRect.X ||
808 aNewRect.Y != aOldRect.Y ||
809 aNewRect.Width != aOldRect.Width ||
810 aNewRect.Height != aOldRect.Height )
813 aHardRef->FireEvent( AccessibleEventId::BOUNDRECT_CHANGED );
816 return ::accessibility::AccessibleParaManager::WeakChild( rChild.first, aNewRect );
830 AccessibleTextHelper_UpdateChildBounds aFunctor;
840 OSL_FAIL(
"AccessibleTextHelper: range invalid" );
848 class AccessibleTextHelper_LostChildEvent
852 void operator()( const ::accessibility::AccessibleParaManager::WeakChild& rPara )
855 auto aHardRef( rPara.first.get() );
858 mrImpl.FireEvent(AccessibleEventId::CHILD,
uno::Any(), uno::makeAny<css::uno::Reference<css::accessibility::XAccessible>>(aHardRef.get()) );
902 if( nMiddle < nFirst )
904 ::std::swap(nFirst, nMiddle);
906 else if( nMiddle < nLast )
908 nLast = nLast + nMiddle - nFirst;
912 ::std::swap(nMiddle, nLast);
913 nLast = nLast + nMiddle - nFirst;
916 if( !(nFirst < nParas && nMiddle < nParas && nLast < nParas) )
927 ::accessibility::AccessibleParaManager::VectorOfChildren::const_iterator
begin =
maParaManager.begin();
928 ::accessibility::AccessibleParaManager::VectorOfChildren::const_iterator
end = begin;
930 ::std::advance( begin, nFirst );
931 ::std::advance( end, nLast+1 );
936 AccessibleTextHelper_LostChildEvent aFunctor( *
this );
938 ::std::for_each( begin, end, aFunctor );
947 class AccessibleTextHelper_ChildrenTextChanged
950 void operator()( ::accessibility::AccessibleEditableTextPara& rPara )
961 class AccessibleTextHelper_QueueFunctor
964 AccessibleTextHelper_QueueFunctor() :
969 void operator()(
const SfxHint* pEvent )
978 if( !(!pEditSourceHint && pTextHint &&
979 (pTextHint->GetId() == SfxHintId::TextParaInserted ||
980 pTextHint->GetId() == SfxHintId::TextParaRemoved )) )
1000 sal_Int32 GetNumberOfParasChanged()
const {
return mnParasChanged; }
1006 sal_Int32 GetParaIndex()
const {
return mnParaIndex; }
1035 AccessibleTextHelper_QueueFunctor aFunctor;
1043 bool bEverythingUpdated(
false );
1045 if( std::abs( nNewParas - nCurrParas ) == 1 &&
1046 aFunctor.GetNumberOfParasChanged() == 1 )
1051 if( aFunctor.GetHintId() == SfxHintId::TextParaInserted )
1071 AccessibleEventId::CHILD );
1073 catch(
const uno::Exception& )
1075 OSL_FAIL(
"AccessibleTextHelper_Impl::ProcessQueue: could not create new paragraph");
1078 else if( aFunctor.GetHintId() == SfxHintId::TextParaRemoved )
1080 ::accessibility::AccessibleParaManager::VectorOfChildren::const_iterator
begin =
maParaManager.begin();
1081 ::std::advance( begin, aFunctor.GetParaIndex() );
1082 ::accessibility::AccessibleParaManager::VectorOfChildren::const_iterator
end = begin;
1083 ::std::advance( end, 1 );
1087 ::uno::Reference< XAccessible > xPara(begin->first.get().get());
1107 OSL_FAIL(
"AccessibleTextHelper_Impl::ProcessQueue() invalid hint id");
1110 else if( nNewParas != nCurrParas )
1126 FireEvent(AccessibleEventId::INVALIDATE_ALL_CHILDREN);
1129 bEverythingUpdated =
true;
1137 const SfxHint& rHint = *pHint;
1145 if (rHint.
GetId() == SfxHintId::ThisIsAnSdrHint)
1147 const SdrHint* pSdrHint =
static_cast< const SdrHint*
>( &rHint );
1183 else if(
const SvxEditSourceHint* pEditSourceHint = dynamic_cast<const SvxEditSourceHint*>( &rHint ) )
1185 switch( pEditSourceHint->GetId() )
1187 case SfxHintId::EditSourceParasMoved:
1191 "AccessibleTextHelper_Impl::NotifyHdl: Invalid notification");
1193 if( !bEverythingUpdated )
1196 pEditSourceHint->GetValue(),
1205 case SfxHintId::EditSourceSelectionChanged:
1212 catch(
const uno::Exception& ) {}
1217 else if(
const TextHint* pTextHint = dynamic_cast<const TextHint*>( &rHint ) )
1221 switch( pTextHint->GetId() )
1223 case SfxHintId::TextModified:
1226 sal_Int32 nPara( pTextHint->
GetValue() );
1229 AccessibleTextHelper_ChildrenTextChanged aNotifyChildrenFunctor;
1235 AccessibleParaManager::WeakChildAdapter< AccessibleTextHelper_ChildrenTextChanged > (aNotifyChildrenFunctor) );
1238 if( nPara < nParas )
1242 AccessibleParaManager::WeakChildAdapter< AccessibleTextHelper_ChildrenTextChanged > (aNotifyChildrenFunctor) );
1247 case SfxHintId::TextParaInserted:
1251 case SfxHintId::TextParaRemoved:
1255 case SfxHintId::TextHeightChanged:
1259 case SfxHintId::TextViewScrolled:
1269 else if ( dynamic_cast<const SvxViewChangedHint*>( &rHint ) )
1276 else if( rHint.
GetId() == SfxHintId::Dying)
1285 catch(
const uno::Exception& ) {}
1288 catch(
const uno::Exception& )
1313 if (rHint.
GetId() == SfxHintId::ThisIsAnSdrHint)
1315 const SdrHint* pSdrHint =
static_cast< const SdrHint*
>( &rHint );
1322 else if(
const SvxViewChangedHint* pViewHint = dynamic_cast<const SvxViewChangedHint*>( &rHint ) )
1330 else if(
const SvxEditSourceHint* pEditSourceHint = dynamic_cast<const SvxEditSourceHint*>( &rHint ) )
1335 else if(
const TextHint* pTextHint = dynamic_cast<const TextHint*>( &rHint ) )
1338 if(pTextHint->GetId() == SfxHintId::TextProcessNotifications)
1344 else if( rHint.
GetId() == SfxHintId::Dying )
1355 catch(
const uno::Exception& ) {}
1358 catch(
const uno::Exception& )
1377 catch(
const uno::Exception& ) {}
1387 catch(
const uno::Exception& ) {}
1394 maEditSource.SetEditSource( ::std::unique_ptr< SvxEditSource >() );
1401 AccessibleEventObject
aEvent;
1403 osl::MutexGuard aGuard(
maMutex);
1408 aEvent = AccessibleEventObject(
mxFrontEnd->getAccessibleContext(), nEventId,
1409 rNewValue, rOldValue);
1411 aEvent = AccessibleEventObject(uno::Reference<uno::XInterface>(), nEventId,
1412 rNewValue, rOldValue);
1427 if( rEvent.EventId == AccessibleStateType::FOCUSED )
1448 throw lang::IndexOutOfBoundsException(
"Invalid child index",
mxFrontEnd);
1451 DBG_ASSERT(
mxFrontEnd.is(),
"AccessibleTextHelper_Impl::UpdateVisibleChildren: no frontend set");
1471 if ( !nListenerCount )
1487 throw uno::RuntimeException(
"AccessibleTextHelper_Impl::getAccessibleAt: frontend invalid",
mxFrontEnd );
1489 uno::Reference< XAccessibleContext > xFrontEndContext =
mxFrontEnd->getAccessibleContext();
1491 if( !xFrontEndContext.is() )
1492 throw uno::RuntimeException(
"AccessibleTextHelper_Impl::getAccessibleAt: frontend invalid",
mxFrontEnd );
1494 uno::Reference< XAccessibleComponent > xFrontEndComponent( xFrontEndContext, uno::UNO_QUERY_THROW );
1497 Point aPoint( _aPoint.X, _aPoint.Y );
1511 "AccessibleTextHelper_Impl::getAccessibleAt: index value overflow");
1515 if( aParaBounds.IsInside( aLogPoint ) )
1541 mpImpl->CheckInvariants();
1545 mpImpl->CheckInvariants();
1549 return mpImpl->GetEditSource();
1559 mpImpl->CheckInvariants();
1562 mpImpl->SetEditSource( std::move(pEditSource) );
1565 mpImpl->CheckInvariants();
1572 mpImpl->CheckInvariants();
1575 mpImpl->SetEventSource( rInterface );
1578 mpImpl->CheckInvariants();
1588 mpImpl->CheckInvariants();
1591 mpImpl->SetFocus( bHaveFocus );
1594 mpImpl->CheckInvariants();
1601 mpImpl->CheckInvariants();
1603 bool bRet(
mpImpl->HaveFocus() );
1605 mpImpl->CheckInvariants();
1609 return mpImpl->HaveFocus();
1619 mpImpl->CheckInvariants();
1622 mpImpl->SetOffset( rPoint );
1625 mpImpl->CheckInvariants();
1635 mpImpl->CheckInvariants();
1638 mpImpl->SetStartIndex( nOffset );
1641 mpImpl->CheckInvariants();
1648 mpImpl->CheckInvariants();
1650 sal_Int32 nOffset =
mpImpl->GetStartIndex();
1652 mpImpl->CheckInvariants();
1656 return mpImpl->GetStartIndex();
1662 mpImpl->SetAdditionalChildStates( rChildStates );
1671 mpImpl->CheckInvariants();
1674 mpImpl->UpdateVisibleChildren();
1675 mpImpl->UpdateBoundRect();
1677 mpImpl->UpdateSelection();
1680 mpImpl->CheckInvariants();
1692 mpImpl->CheckInvariants();
1698 mpImpl->CheckInvariants();
1708 mpImpl->CheckInvariants();
1710 sal_Int32 nRet =
mpImpl->getAccessibleChildCount();
1712 mpImpl->CheckInvariants();
1716 return mpImpl->getAccessibleChildCount();
1725 mpImpl->CheckInvariants();
1727 uno::Reference< XAccessible > xRet =
mpImpl->getAccessibleChild( i );
1729 mpImpl->CheckInvariants();
1733 return mpImpl->getAccessibleChild( i );
1740 mpImpl->CheckInvariants();
1742 mpImpl->addAccessibleEventListener( xListener );
1744 mpImpl->CheckInvariants();
1746 mpImpl->addAccessibleEventListener( xListener );
1753 mpImpl->CheckInvariants();
1755 mpImpl->removeAccessibleEventListener( xListener );
1757 mpImpl->CheckInvariants();
1759 mpImpl->removeAccessibleEventListener( xListener );
1769 mpImpl->CheckInvariants();
1771 uno::Reference< XAccessible > xChild =
mpImpl->getAccessibleAtPoint( aPoint );
1773 mpImpl->CheckInvariants();
1777 return mpImpl->getAccessibleAtPoint( aPoint );
sal_Int32 getAccessibleChildCount() const
uno::Reference< XAccessible > mxFrontEnd
int mnNotifierClientId
client Id from AccessibleEventNotifier
virtual tools::Rectangle GetParaBounds(sal_Int32 nPara) const =0
uno::Reference< XAccessible > getAccessibleAtPoint(const awt::Point &aPoint)
virtual bool IsValid() const =0
SdrHintKind GetKind() const
void SetOffset(const Point &)
void GetSelection(struct ESelection &rSel, SvxTextForwarder const *pForwarder)
void UpdateVisibleChildren(bool bBroadcastEvents=true)
const SvxEditSource & GetEditSource() const
Query the current edit source.
SfxHintId mnHintId
TextHint ID (removed/inserted) of last interesting event.
virtual SvxEditViewForwarder * GetEditViewForwarder(bool bCreate=false)
css::uno::Reference< css::accessibility::XAccessible > GetAt(const css::awt::Point &aPoint)
Implements getAccessibleAt.
void GotPropertyEvent(const uno::Any &rNewValue, const sal_Int16 nEventId) const
::std::vector< sal_Int16 > VectorOfStates
#define EE_INDEX_NOT_FOUND
sal_Int32 mnLastVisibleChild
SvxEditSourceAdapter & GetEditSource() const
const std::unique_ptr< AccessibleTextHelper_Impl > mpImpl
bool SetStateDirectly(sal_Int16 aState)
AccessibleTextHelper_Impl()
mutable::osl::Mutex maMutex
void Dispose()
Drop all references and enter disposed state.
SvxViewForwarder & GetViewForwarder() const
sal_Int32 mnFirstVisibleChild
void SetOffset(const Point &rPoint)
Set offset of EditEngine/Outliner from parent.
#define EE_PARA_NOT_FOUND
sal_Int32 mnParaIndex
index of paragraph added/removed last
void FireEvent(const sal_Int16 nEventId, const uno::Any &rNewValue=uno::Any(), const uno::Any &rOldValue=uno::Any()) const
void SetEditSource(::std::unique_ptr< SvxEditSource > &&pEditSource)
Set the current edit source.
enumrange< T >::Iterator begin(enumrange< T >)
static::std::pair< first_type, second_type > makeSortedPair(first_type first, second_type second)
SvxEditSourceAdapter maEditSource
sal_uLong GetValue() const
SvxTextForwarder & GetTextForwarder() const
sal_Int32 GetChildCount() const
Implements getAccessibleChildCount.
void SetAdditionalChildStates(const VectorOfStates &rChildStates)
const sal_Int32 mnDifference
void Clear()
Clear event queue.
SvxEditViewForwarder & GetEditViewForwarder() const
void addAccessibleEventListener(const uno::Reference< XAccessibleEventListener > &xListener)
#define DBG_UNHANDLED_EXCEPTION(...)
bool ResetStateDirectly(sal_Int16 aState)
#define DBG_ASSERT(sCon, aError)
ESelection maLastSelection
void RemoveEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener)
Implements removeEventListener.
void Append(const SdrHint &rHint)
Append event to end of queue.
void SetFocus(bool bHaveFocus)
virtual MapMode GetMapMode() const =0
::std::unique_ptr< SfxHint > PopFront()
Pop first queue element.
void SetEventSource(const css::uno::Reference< css::accessibility::XAccessible > &rInterface)
Set the event source.
static sal_Int32 removeEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
void CheckInvariants() const
sal_Int32 GetStartIndex() const
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
void SetChildFocus(sal_Int32 nChild, bool bHaveFocus)
const sdr::table::CellRef & getCellRef() const
void AddEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener)
Implements addEventListener.
void ChangeChildFocus(sal_Int32 nNewChild)
void SetStartIndex(sal_Int32 nOffset)
AccessibleTextHelper_Impl & mrImpl
enumrange< T >::Iterator end(enumrange< T >)
AccessibleTextHelper(::std::unique_ptr< SvxEditSource > &&pEditSource)
Create accessible text object for given edit source.
void ShutdownEditSource()
uno::Reference< XAccessible > getAccessibleChild(sal_Int32 i)
sal_Int32 GetStartIndex() const
Query offset the object adds to all children's indices.
void UpdateChildren()
Update the visible children.
bool HaveFocus()
Query the focus state of the surrounding object.
Point maOffset
our current offset to the containing shape/cell (guarded by maMutex)
void SetEditSource(::std::unique_ptr< SvxEditSource > &&pEditSource)
static void revokeClient(const TClientId _nClient)
virtual ~AccessibleTextHelper_Impl() override
#define SAL_INFO(area, stream)
void SetAdditionalChildStates(const VectorOfStates &rChildStates)
Sets a vector of additional accessible states.
void EndListening(SfxBroadcaster &rBroadcaster, bool bRemoveAllDuplicates=false)
sal_Int32 GetEndValue() const
virtual bool IsValid() const =0
::accessibility::AccessibleParaManager maParaManager
AccessibleTextEventQueue maEventQueue
void ForEach(Functor &rFunctor) const
Apply functor to every queue member.
#define DBG_TESTSOLARMUTEX()
This class handles the notification events for the AccessibleTextHelper class.
static void addEvent(const TClientId _nClient, const css::accessibility::AccessibleEventObject &_rEvent)
sal_Int32 GetStartValue() const
sal_Int32 mnParasChanged
number of paragraphs changed during queue processing.
bool IsEmpty() const
Query whether queue is empty.
void ParagraphsMoved(sal_Int32 nFirst, sal_Int32 nMiddle, sal_Int32 nLast)
void SetFocus(bool bHaveFocus=true)
Set the focus state of the accessibility object.
void SetStartIndex(sal_Int32 nOffset)
Set offset the object adds to all children's indices.
virtual sal_Int32 GetParagraphCount() const =0
int getNotifierClientId() const
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
void SetEventSource(const uno::Reference< XAccessible > &rInterface)
VCL_DLLPUBLIC void NotifyAccessibleStateEventGlobally(const css::accessibility::AccessibleEventObject &rEventObject)
void SetShapeFocus(bool bHaveFocus)
void removeAccessibleEventListener(const uno::Reference< XAccessibleEventListener > &xListener)
css::uno::Reference< css::accessibility::XAccessible > GetChild(sal_Int32 i)
Implements getAccessibleChild.
static sal_Int32 addEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
AccessibleTableShape * GetParentTable()