diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2022-07-03 20:29:28 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-07-08 10:10:11 +0200 |
commit | 8d8e6c84e512c1a8b33aac75965b84481d1a1d13 (patch) | |
tree | 9ed209d057081d4283eb44b51c0d9af18f976eab /svx | |
parent | 911ac42485b690df5cbbff6e3c04b111c1723aca (diff) |
[API CHANGE] Drop css::accessibility::XAccessibleStateSet
which is internal API, unused (as far as I can tell) by external
users.
This state is purely a bitset
(as implemented by utl::AccessibleStateSetHelper)
so we can just return it as a 64-bit value.
This shaves significant time off the performance profiles
of code that loads very complex shapes, because this state
is frequently used, and we no longer need to allocate a return
value on the heap for every call.
Change-Id: Icf1b3bd367c256646ae9015f9127025f59459c2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136786
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx')
19 files changed, 216 insertions, 303 deletions
diff --git a/svx/inc/AccessibleTableShape.hxx b/svx/inc/AccessibleTableShape.hxx index 16dcf4fe38ae..eee79cac6cdd 100644 --- a/svx/inc/AccessibleTableShape.hxx +++ b/svx/inc/AccessibleTableShape.hxx @@ -114,11 +114,11 @@ public: /// @throws css::lang::IndexOutOfBoundsException void getColumnAndRow( sal_Int32 nChildIndex, sal_Int32& rnColumn, sal_Int32& rnRow ); // overwrite the SetState & ResetState to do special operation for table cell's internal text - virtual bool SetState (sal_Int16 aState) override; - virtual bool ResetState (sal_Int16 aState) override; + virtual bool SetState (sal_Int64 aState) override; + virtual bool ResetState (sal_Int64 aState) override; // The following two methods are used to set state directly on table object, instead of the internal cell or paragraph. - bool SetStateDirectly (sal_Int16 aState); - bool ResetStateDirectly (sal_Int16 aState); + bool SetStateDirectly (sal_Int64 aState); + bool ResetStateDirectly (sal_Int64 aState); // Get the currently active cell which is text editing AccessibleCell* GetActiveAccessibleCell(); @@ -163,7 +163,7 @@ public: virtual sal_Int16 SAL_CALL getAccessibleRole( ) override; virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; virtual css::lang::Locale SAL_CALL getLocale( ) override; diff --git a/svx/inc/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx index f6206e076d4e..9f589d4e8e8c 100644 --- a/svx/inc/pch/precompiled_svx.hxx +++ b/svx/inc/pch/precompiled_svx.hxx @@ -353,7 +353,6 @@ #include <tools/urlobj.hxx> #include <typelib/typedescription.h> #include <uno/data.h> -#include <unotools/accessiblestatesethelper.hxx> #include <unotools/fontcvt.hxx> #include <unotools/localedatawrapper.hxx> #include <unotools/pathoptions.hxx> diff --git a/svx/source/accessibility/AccessibleControlShape.cxx b/svx/source/accessibility/AccessibleControlShape.cxx index 45b7edd75fe4..67ec411e4f6d 100644 --- a/svx/source/accessibility/AccessibleControlShape.cxx +++ b/svx/source/accessibility/AccessibleControlShape.cxx @@ -33,7 +33,6 @@ #include <com/sun/star/container/XContainer.hpp> #include <comphelper/processfactory.hxx> #include <comphelper/property.hxx> -#include <unotools/accessiblestatesethelper.hxx> #include <unotools/accessiblerelationsethelper.hxx> #include <svx/IAccessibleParent.hxx> #include <svx/svdouno.hxx> @@ -89,7 +88,7 @@ namespace // determines whether or not a state which belongs to the inner context needs to be forwarded to the "composed" // context - bool isComposedState( const sal_Int16 _nState ) + bool isComposedState( const sal_Int64 _nState ) { return ( ( AccessibleStateType::INVALID != _nState ) && ( AccessibleStateType::DEFUNC != _nState ) @@ -237,9 +236,8 @@ void AccessibleControlShape::Init() // some initialization for our child manager, which is used in alive mode only if ( isAliveMode( m_xUnoControl ) ) { - Reference< XAccessibleStateSet > xStates( getAccessibleStateSet( ) ); - OSL_ENSURE( xStates.is(), "AccessibleControlShape::AccessibleControlShape: no inner state set!" ); - m_pChildManager->setTransientChildren( !xStates.is() || xStates->contains( AccessibleStateType::MANAGES_DESCENDANTS ) ); + sal_Int64 nStates( getAccessibleStateSet( ) ); + m_pChildManager->setTransientChildren( nStates & AccessibleStateType::MANAGES_DESCENDANTS ); } // finally, aggregate a proxy for the control context @@ -410,7 +408,7 @@ void SAL_CALL AccessibleControlShape::notifyEvent( const AccessibleEventObject& if ( AccessibleEventId::STATE_CHANGED == _rEvent.EventId ) { // multiplex this change - sal_Int16 nLostState( 0 ), nGainedState( 0 ); + sal_Int64 nLostState( 0 ), nGainedState( 0 ); _rEvent.OldValue >>= nLostState; _rEvent.NewValue >>= nGainedState; @@ -754,7 +752,7 @@ void AccessibleControlShape::adjustAccessibleRole( ) #ifdef DBG_UTIL -bool AccessibleControlShape::SetState( sal_Int16 _nState ) +bool AccessibleControlShape::SetState( sal_Int64 _nState ) { OSL_ENSURE( !isAliveMode( m_xUnoControl ) || !isComposedState( _nState ), "AccessibleControlShape::SetState: a state which should be determined by the control context is set from outside!" ); @@ -768,26 +766,12 @@ void AccessibleControlShape::initializeComposedState() // no action necessary for design mode return; - // get our own state set implementation - ::utl::AccessibleStateSetHelper* pComposedStates = mxStateSet.get(); - OSL_PRECOND( pComposedStates, - "AccessibleControlShape::initializeComposedState: no composed set!" ); - // we need to reset some states of the composed set, because they either do not apply // for controls in alive mode, or are in the responsibility of the UNO-control, anyway - pComposedStates->RemoveState( AccessibleStateType::ENABLED ); // this is controlled by the UNO-control - pComposedStates->RemoveState( AccessibleStateType::SENSITIVE ); // this is controlled by the UNO-control - pComposedStates->RemoveState( AccessibleStateType::FOCUSABLE ); // this is controlled by the UNO-control - pComposedStates->RemoveState( AccessibleStateType::SELECTABLE ); // this does not hold for an alive UNO-control -#if OSL_DEBUG_LEVEL > 0 - // now, only states which are not in the responsibility of the UNO control should be part of this state set - { - const Sequence< sal_Int16 > aInitStates = pComposedStates->getStates(); - for ( sal_Int16 state : aInitStates ) - OSL_ENSURE( !isComposedState( state ), - "AccessibleControlShape::initializeComposedState: invalid initial composed state (should be controlled by the UNO-control)!" ); - } -#endif + mnStateSet &= ~AccessibleStateType::ENABLED; // this is controlled by the UNO-control + mnStateSet &= ~AccessibleStateType::SENSITIVE; // this is controlled by the UNO-control + mnStateSet &= ~AccessibleStateType::FOCUSABLE; // this is controlled by the UNO-control + mnStateSet &= ~AccessibleStateType::SELECTABLE; // this does not hold for an alive UNO-control // get my inner context Reference< XAccessibleContext > xInnerContext( m_aControlContext ); @@ -796,18 +780,15 @@ void AccessibleControlShape::initializeComposedState() return; // get all states of the inner context - Reference< XAccessibleStateSet > xInnerStates( xInnerContext->getAccessibleStateSet() ); - OSL_ENSURE( xInnerStates.is(), "AccessibleControlShape::initializeComposedState: no inner states!" ); - Sequence< sal_Int16 > aInnerStates; - if ( xInnerStates.is() ) - aInnerStates = xInnerStates->getStates(); + sal_Int64 nInnerStates( xInnerContext->getAccessibleStateSet() ); // look which one are to be propagated to the composed context - for ( const sal_Int16 nState : std::as_const(aInnerStates) ) + for ( int i = 0; i < 63; ++i ) { - if ( isComposedState( nState ) && !pComposedStates->contains( nState ) ) + sal_Int64 nState = sal_Int64(1) << i; + if ( (nInnerStates & nState) && isComposedState( nState ) ) { - pComposedStates->AddState( nState ); + mnStateSet |= nState; } } } diff --git a/svx/source/accessibility/AccessibleFrameSelector.cxx b/svx/source/accessibility/AccessibleFrameSelector.cxx index 3c3007fc0aff..4f5af742feaf 100644 --- a/svx/source/accessibility/AccessibleFrameSelector.cxx +++ b/svx/source/accessibility/AccessibleFrameSelector.cxx @@ -20,7 +20,6 @@ #include <AccessibleFrameSelector.hxx> #include <com/sun/star/accessibility/AccessibleStateType.hpp> #include <com/sun/star/accessibility/AccessibleRole.hpp> -#include <unotools/accessiblestatesethelper.hxx> #include <unotools/accessiblerelationsethelper.hxx> #include <vcl/svapp.hxx> #include <vcl/settings.hxx> @@ -107,44 +106,38 @@ Reference< XAccessibleRelationSet > AccFrameSelector::getAccessibleRelationSet( return mpFrameSel->get_accessible_relation_set(); } -Reference< XAccessibleStateSet > AccFrameSelector::getAccessibleStateSet( ) +sal_Int64 AccFrameSelector::getAccessibleStateSet( ) { SolarMutexGuard aGuard; - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if(!mpFrameSel) - pStateSetHelper->AddState(AccessibleStateType::DEFUNC); + nStateSet |= AccessibleStateType::DEFUNC; else { - const sal_Int16 aStandardStates[] = - { - AccessibleStateType::EDITABLE, - AccessibleStateType::FOCUSABLE, - AccessibleStateType::MULTI_SELECTABLE, - AccessibleStateType::SELECTABLE, - AccessibleStateType::SHOWING, - AccessibleStateType::VISIBLE, - AccessibleStateType::OPAQUE, - 0}; - sal_Int16 nState = 0; - while(aStandardStates[nState]) - { - pStateSetHelper->AddState(aStandardStates[nState++]); - } + // add standard states + nStateSet |= + AccessibleStateType::EDITABLE | + AccessibleStateType::FOCUSABLE | + AccessibleStateType::MULTI_SELECTABLE | + AccessibleStateType::SELECTABLE | + AccessibleStateType::SHOWING | + AccessibleStateType::VISIBLE | + AccessibleStateType::OPAQUE; if(mpFrameSel->IsEnabled()) { - pStateSetHelper->AddState(AccessibleStateType::ENABLED); - pStateSetHelper->AddState(AccessibleStateType::SENSITIVE); + nStateSet |= AccessibleStateType::ENABLED; + nStateSet |= AccessibleStateType::SENSITIVE; } if (mpFrameSel->HasFocus()) { - pStateSetHelper->AddState(AccessibleStateType::ACTIVE); - pStateSetHelper->AddState(AccessibleStateType::FOCUSED); - pStateSetHelper->AddState(AccessibleStateType::SELECTED); + nStateSet |= AccessibleStateType::ACTIVE; + nStateSet |= AccessibleStateType::FOCUSED; + nStateSet |= AccessibleStateType::SELECTED; } } - return pStateSetHelper; + return nStateSet; } Reference< XAccessible > AccFrameSelector::getAccessibleAtPoint( @@ -275,44 +268,37 @@ Reference< XAccessibleRelationSet > AccFrameSelectorChild::getAccessibleRelation return xRet; } -Reference< XAccessibleStateSet > AccFrameSelectorChild::getAccessibleStateSet( ) +sal_Int64 AccFrameSelectorChild::getAccessibleStateSet( ) { SolarMutexGuard aGuard; - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if(!mpFrameSel) - pStateSetHelper->AddState(AccessibleStateType::DEFUNC); + nStateSet |= AccessibleStateType::DEFUNC; else { - const sal_Int16 aStandardStates[] = - { - AccessibleStateType::EDITABLE, - AccessibleStateType::FOCUSABLE, - AccessibleStateType::MULTI_SELECTABLE, - AccessibleStateType::SELECTABLE, - AccessibleStateType::SHOWING, - AccessibleStateType::VISIBLE, - AccessibleStateType::OPAQUE, - 0}; - sal_Int16 nState = 0; - while(aStandardStates[nState]) - { - pStateSetHelper->AddState(aStandardStates[nState++]); - } + nStateSet |= + AccessibleStateType::EDITABLE | + AccessibleStateType::FOCUSABLE | + AccessibleStateType::MULTI_SELECTABLE | + AccessibleStateType::SELECTABLE | + AccessibleStateType::SHOWING | + AccessibleStateType::VISIBLE | + AccessibleStateType::OPAQUE; if(mpFrameSel->IsEnabled()) { - pStateSetHelper->AddState(AccessibleStateType::ENABLED); - pStateSetHelper->AddState(AccessibleStateType::SENSITIVE); + nStateSet |= AccessibleStateType::ENABLED; + nStateSet |= AccessibleStateType::SENSITIVE; } if (mpFrameSel->HasFocus() && mpFrameSel->IsBorderSelected(meBorder)) { - pStateSetHelper->AddState(AccessibleStateType::ACTIVE); - pStateSetHelper->AddState(AccessibleStateType::FOCUSED); - pStateSetHelper->AddState(AccessibleStateType::SELECTED); + nStateSet |= AccessibleStateType::ACTIVE; + nStateSet |= AccessibleStateType::FOCUSED; + nStateSet |= AccessibleStateType::SELECTED; } } - return pStateSetHelper; + return nStateSet; } Reference< XAccessible > AccFrameSelectorChild::getAccessibleAtPoint( diff --git a/svx/source/accessibility/AccessibleShape.cxx b/svx/source/accessibility/AccessibleShape.cxx index 03996fe7f67e..2caf0841a104 100644 --- a/svx/source/accessibility/AccessibleShape.cxx +++ b/svx/source/accessibility/AccessibleShape.cxx @@ -44,7 +44,6 @@ #include <vcl/svapp.hxx> #include <vcl/window.hxx> -#include <unotools/accessiblestatesethelper.hxx> #include <unotools/accessiblerelationsethelper.hxx> #include <svx/svdview.hxx> #include <tools/diagnose_ex.h> @@ -176,9 +175,6 @@ void AccessibleShape::Init() void AccessibleShape::UpdateStates() { - if (mxStateSet == nullptr) - return; - // Set the opaque state for certain shape types when their fill style is // solid. bool bShapeIsOpaque = false; @@ -205,9 +201,9 @@ void AccessibleShape::UpdateStates() } } if (bShapeIsOpaque) - mxStateSet->AddState (AccessibleStateType::OPAQUE); + mnStateSet |= AccessibleStateType::OPAQUE; else - mxStateSet->RemoveState (AccessibleStateType::OPAQUE); + mnStateSet &= ~AccessibleStateType::OPAQUE; // Set the selected state. bool bShapeIsSelected = false; @@ -218,9 +214,9 @@ void AccessibleShape::UpdateStates() } if (bShapeIsSelected) - mxStateSet->AddState (AccessibleStateType::SELECTED); + mnStateSet |= AccessibleStateType::SELECTED; else - mxStateSet->RemoveState (AccessibleStateType::SELECTED); + mnStateSet &= ~AccessibleStateType::SELECTED; } OUString AccessibleShape::GetStyle() const @@ -228,7 +224,7 @@ OUString AccessibleShape::GetStyle() const return ShapeTypeHandler::CreateAccessibleBaseName( mxShape ); } -bool AccessibleShape::SetState (sal_Int16 aState) +bool AccessibleShape::SetState (sal_Int64 aState) { bool bStateHasChanged = false; @@ -247,7 +243,7 @@ bool AccessibleShape::SetState (sal_Int16 aState) } -bool AccessibleShape::ResetState (sal_Int16 aState) +bool AccessibleShape::ResetState (sal_Int64 aState) { bool bStateHasChanged = false; @@ -266,7 +262,7 @@ bool AccessibleShape::ResetState (sal_Int16 aState) } -bool AccessibleShape::GetState (sal_Int16 aState) +bool AccessibleShape::GetState (sal_Int64 aState) { if (aState == AccessibleStateType::FOCUSED && mpText != nullptr) { @@ -379,7 +375,7 @@ uno::Reference<XAccessibleRelationSet> SAL_CALL SHOWING VISIBLE */ -uno::Reference<XAccessibleStateSet> SAL_CALL +sal_Int64 SAL_CALL AccessibleShape::getAccessibleStateSet() { ::osl::MutexGuard aGuard (m_aMutex); @@ -390,18 +386,13 @@ uno::Reference<XAccessibleStateSet> SAL_CALL return AccessibleContextBase::getAccessibleStateSet (); } - ::utl::AccessibleStateSetHelper* pStateSet = mxStateSet.get(); - - if (!pStateSet) - return Reference<XAccessibleStateSet>(); - // Merge current FOCUSED state from edit engine. if (mpText) { if (mpText->HaveFocus()) - pStateSet->AddState (AccessibleStateType::FOCUSED); + mnStateSet |= AccessibleStateType::FOCUSED; else - pStateSet->RemoveState (AccessibleStateType::FOCUSED); + mnStateSet &= ~AccessibleStateType::FOCUSED; } //Just when the document is not read-only,set states EDITABLE,RESIZABLE,MOVEABLE css::uno::Reference<XAccessible> xTempAcc = getAccessibleParent(); @@ -411,33 +402,24 @@ uno::Reference<XAccessibleStateSet> SAL_CALL xTempAccContext = xTempAcc->getAccessibleContext(); if( xTempAccContext.is() ) { - css::uno::Reference<XAccessibleStateSet> rState = - xTempAccContext->getAccessibleStateSet(); - if (rState.is()) + sal_Int64 nState = xTempAccContext->getAccessibleStateSet(); + if (nState & AccessibleStateType::EDITABLE) { - const css::uno::Sequence<short> aStates = rState->getStates(); - if (std::find(aStates.begin(), aStates.end(), AccessibleStateType::EDITABLE) != aStates.end()) - { - pStateSet->AddState (AccessibleStateType::EDITABLE); - pStateSet->AddState (AccessibleStateType::RESIZABLE); - pStateSet->AddState (AccessibleStateType::MOVEABLE); - } + mnStateSet |= AccessibleStateType::EDITABLE; + mnStateSet |= AccessibleStateType::RESIZABLE; + mnStateSet |= AccessibleStateType::MOVEABLE; } } } - // Create a copy of the state set that may be modified by the - // caller without affecting the current state set. - Reference<XAccessibleStateSet> xStateSet(new ::utl::AccessibleStateSetHelper(*pStateSet)); + sal_Int64 nRetStateSet = mnStateSet; if (mpParent && mpParent->IsDocumentSelAll()) { - ::utl::AccessibleStateSetHelper* pCopyStateSet = - static_cast<::utl::AccessibleStateSetHelper*>(xStateSet.get()); - pCopyStateSet->AddState (AccessibleStateType::SELECTED); + nRetStateSet |= AccessibleStateType::SELECTED; } - return xStateSet; + return nRetStateSet; } // XAccessibleComponent @@ -780,12 +762,9 @@ sal_Bool SAL_CALL AccessibleShape::isAccessibleChildSelected( sal_Int32 nChildIn } else if( xContext->getAccessibleRole() == AccessibleRole::SHAPE ) { - Reference< XAccessibleStateSet > pRState = xContext->getAccessibleStateSet(); - if( !pRState.is() ) - return false; + sal_Int64 pRState = xContext->getAccessibleStateSet(); - const uno::Sequence<short> aStates = pRState->getStates(); - return std::find(aStates.begin(), aStates.end(), AccessibleStateType::SELECTED) != aStates.end(); + return bool(pRState & AccessibleStateType::SELECTED); } } @@ -1012,9 +991,7 @@ void AccessibleShape::disposing() // Make sure to send an event that this object loses the focus in the // case that it has the focus. - ::utl::AccessibleStateSetHelper* pStateSet = mxStateSet.get(); - if (pStateSet != nullptr) - pStateSet->RemoveState (AccessibleStateType::FOCUSED); + mnStateSet &= ~AccessibleStateType::FOCUSED; // Unregister from model. if (mxShape.is() && maShapeTreeInfo.GetModelBroadcaster().is()) diff --git a/svx/source/accessibility/AccessibleTextHelper.cxx b/svx/source/accessibility/AccessibleTextHelper.cxx index 2fa4c0a9b5eb..5c8ce773b028 100644 --- a/svx/source/accessibility/AccessibleTextHelper.cxx +++ b/svx/source/accessibility/AccessibleTextHelper.cxx @@ -122,7 +122,7 @@ namespace accessibility return mnStartIndex; } - void SetAdditionalChildStates( VectorOfStates&& rChildStates ); + void SetAdditionalChildStates( sal_Int64 nChildStates ); void Dispose(); @@ -352,9 +352,9 @@ namespace accessibility } } - void AccessibleTextHelper_Impl::SetAdditionalChildStates( VectorOfStates&& rChildStates ) + void AccessibleTextHelper_Impl::SetAdditionalChildStates( sal_Int64 nChildStates ) { - maParaManager.SetAdditionalChildStates( std::move(rChildStates) ); + maParaManager.SetAdditionalChildStates( nChildStates ); } void AccessibleTextHelper_Impl::SetChildFocus( sal_Int32 nChild, bool bHaveFocus ) @@ -1642,9 +1642,9 @@ namespace accessibility #endif } - void AccessibleTextHelper::SetAdditionalChildStates( VectorOfStates&& rChildStates ) + void AccessibleTextHelper::SetAdditionalChildStates( sal_Int64 nChildStates ) { - mpImpl->SetAdditionalChildStates( std::move(rChildStates) ); + mpImpl->SetAdditionalChildStates( nChildStates ); } void AccessibleTextHelper::UpdateChildren() diff --git a/svx/source/accessibility/GraphCtlAccessibleContext.cxx b/svx/source/accessibility/GraphCtlAccessibleContext.cxx index 531b75eb60cc..66189cf80c40 100644 --- a/svx/source/accessibility/GraphCtlAccessibleContext.cxx +++ b/svx/source/accessibility/GraphCtlAccessibleContext.cxx @@ -23,7 +23,6 @@ #include <com/sun/star/accessibility/IllegalAccessibleComponentStateException.hpp> #include <com/sun/star/lang/DisposedException.hpp> #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> -#include <unotools/accessiblestatesethelper.hxx> #include <cppuhelper/supportsservice.hxx> #include <vcl/svapp.hxx> #include <vcl/settings.hxx> @@ -390,27 +389,27 @@ Reference< XAccessibleRelationSet > SAL_CALL SvxGraphCtrlAccessibleContext::getA } -Reference< XAccessibleStateSet > SAL_CALL SvxGraphCtrlAccessibleContext::getAccessibleStateSet() +sal_Int64 SAL_CALL SvxGraphCtrlAccessibleContext::getAccessibleStateSet() { ::SolarMutexGuard aGuard; - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if ( rBHelper.bDisposed || mbDisposed ) { - pStateSetHelper->AddState( AccessibleStateType::DEFUNC ); + nStateSet |= AccessibleStateType::DEFUNC; } else { - pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE ); + nStateSet |= AccessibleStateType::FOCUSABLE; if( mpControl->HasFocus() ) - pStateSetHelper->AddState( AccessibleStateType::FOCUSED ); - pStateSetHelper->AddState( AccessibleStateType::OPAQUE ); - pStateSetHelper->AddState( AccessibleStateType::SHOWING ); - pStateSetHelper->AddState( AccessibleStateType::VISIBLE ); + nStateSet |= AccessibleStateType::FOCUSED; + nStateSet |= AccessibleStateType::OPAQUE; + nStateSet |= AccessibleStateType::SHOWING; + nStateSet |= AccessibleStateType::VISIBLE; } - return pStateSetHelper; + return nStateSet; } diff --git a/svx/source/accessibility/charmapacc.cxx b/svx/source/accessibility/charmapacc.cxx index 0de91ccee450..adbda3a3957d 100644 --- a/svx/source/accessibility/charmapacc.cxx +++ b/svx/source/accessibility/charmapacc.cxx @@ -17,7 +17,6 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <unotools/accessiblestatesethelper.hxx> #include <vcl/settings.hxx> #include <vcl/svapp.hxx> #include <stdio.h> @@ -190,33 +189,33 @@ uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL SvxShowCha } -uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL SvxShowCharSetAcc::getAccessibleStateSet() +sal_Int64 SAL_CALL SvxShowCharSetAcc::getAccessibleStateSet() { OExternalLockGuard aGuard( this ); - rtl::Reference<::utl::AccessibleStateSetHelper> pStateSet = new ::utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if (m_pParent) { // SELECTABLE - pStateSet->AddState( AccessibleStateType::FOCUSABLE ); + nStateSet |= AccessibleStateType::FOCUSABLE; if (m_pParent->HasFocus()) { - pStateSet->AddState( AccessibleStateType::FOCUSED ); - pStateSet->AddState( AccessibleStateType::ACTIVE ); + nStateSet |= AccessibleStateType::FOCUSED; + nStateSet |= AccessibleStateType::ACTIVE; } if (m_pParent->IsEnabled()) { - pStateSet->AddState( AccessibleStateType::ENABLED ); - pStateSet->AddState( AccessibleStateType::SENSITIVE ); + nStateSet |= AccessibleStateType::ENABLED; + nStateSet |= AccessibleStateType::SENSITIVE; } if (m_pParent->IsVisible()) - pStateSet->AddState( AccessibleStateType::VISIBLE ); + nStateSet |= AccessibleStateType::VISIBLE; - pStateSet->AddState( AccessibleStateType::MANAGES_DESCENDANTS ); + nStateSet |= AccessibleStateType::MANAGES_DESCENDANTS; } - return pStateSet; + return nStateSet; } @@ -462,37 +461,37 @@ uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL SvxShowCha } -uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL SvxShowCharSetItemAcc::getAccessibleStateSet() +sal_Int64 SAL_CALL SvxShowCharSetItemAcc::getAccessibleStateSet() { OExternalLockGuard aGuard( this ); - rtl::Reference<::utl::AccessibleStateSetHelper> pStateSet = new ::utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if( mpParent ) { if (mpParent->mrParent.IsEnabled()) { - pStateSet->AddState( css::accessibility::AccessibleStateType::ENABLED ); + nStateSet |= css::accessibility::AccessibleStateType::ENABLED; // SELECTABLE - pStateSet->AddState( css::accessibility::AccessibleStateType::SELECTABLE ); - pStateSet->AddState( css::accessibility::AccessibleStateType::FOCUSABLE ); + nStateSet |= css::accessibility::AccessibleStateType::SELECTABLE; + nStateSet |= css::accessibility::AccessibleStateType::FOCUSABLE; } // SELECTED if( mpParent->mrParent.GetSelectIndexId() == mpParent->mnId ) { - pStateSet->AddState( css::accessibility::AccessibleStateType::SELECTED ); - pStateSet->AddState( css::accessibility::AccessibleStateType::FOCUSED ); + nStateSet |= css::accessibility::AccessibleStateType::SELECTED; + nStateSet |= css::accessibility::AccessibleStateType::FOCUSED; } if ( mpParent->mnId >= mpParent->mrParent.FirstInView() && mpParent->mnId <= mpParent->mrParent.LastInView() ) { - pStateSet->AddState( AccessibleStateType::VISIBLE ); - pStateSet->AddState( AccessibleStateType::SHOWING ); + nStateSet |= AccessibleStateType::VISIBLE; + nStateSet |= AccessibleStateType::SHOWING; } - pStateSet->AddState( AccessibleStateType::TRANSIENT ); + nStateSet |= AccessibleStateType::TRANSIENT; } - return pStateSet; + return nStateSet; } diff --git a/svx/source/accessibility/svxpixelctlaccessiblecontext.cxx b/svx/source/accessibility/svxpixelctlaccessiblecontext.cxx index 4873b3cfe834..4b1ded51ac8d 100644 --- a/svx/source/accessibility/svxpixelctlaccessiblecontext.cxx +++ b/svx/source/accessibility/svxpixelctlaccessiblecontext.cxx @@ -19,7 +19,6 @@ #include <com/sun/star/accessibility/AccessibleRole.hpp> #include <com/sun/star/accessibility/AccessibleEventId.hpp> -#include <unotools/accessiblestatesethelper.hxx> #include <com/sun/star/accessibility/AccessibleStateType.hpp> #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> #include <toolkit/helper/convert.hxx> @@ -106,36 +105,27 @@ Reference< XAccessibleRelationSet > SAL_CALL SvxPixelCtlAccessible::getAccessibl return uno::Reference<css::accessibility::XAccessibleRelationSet>(); } -uno::Reference< XAccessibleStateSet > SvxPixelCtlAccessible::getAccessibleStateSet( ) +sal_Int64 SvxPixelCtlAccessible::getAccessibleStateSet( ) { ::osl::MutexGuard aGuard( m_aMutex ); - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if (mpPixelCtl) { - const sal_Int16 aStandardStates[] = - { - AccessibleStateType::FOCUSABLE, - AccessibleStateType::SELECTABLE, - AccessibleStateType::SHOWING, - AccessibleStateType::VISIBLE, - AccessibleStateType::OPAQUE, - 0 - }; - - sal_Int16 nState = 0; - while (aStandardStates[nState]) - { - pStateSetHelper->AddState(aStandardStates[nState++]); - } + nStateSet |= + AccessibleStateType::FOCUSABLE | + AccessibleStateType::SELECTABLE | + AccessibleStateType::SHOWING | + AccessibleStateType::VISIBLE | + AccessibleStateType::OPAQUE; if (mpPixelCtl->IsEnabled()) - pStateSetHelper->AddState(AccessibleStateType::ENABLED); + nStateSet |= AccessibleStateType::ENABLED; if (mpPixelCtl->HasFocus()) - pStateSetHelper->AddState(AccessibleStateType::FOCUSED); - pStateSetHelper->AddState(AccessibleStateType::MANAGES_DESCENDANTS); + nStateSet |= AccessibleStateType::FOCUSED; + nStateSet |= AccessibleStateType::MANAGES_DESCENDANTS; } - return pStateSetHelper; + return nStateSet; } uno::Reference<XAccessible > SAL_CALL SvxPixelCtlAccessible::getAccessibleAtPoint ( @@ -409,35 +399,34 @@ uno::Reference<XAccessibleRelationSet> SAL_CALL SvxPixelCtlAccessibleChild::getA return uno::Reference< XAccessibleRelationSet >(); } -uno::Reference< XAccessibleStateSet > SAL_CALL SvxPixelCtlAccessibleChild::getAccessibleStateSet() +sal_Int64 SAL_CALL SvxPixelCtlAccessibleChild::getAccessibleStateSet() { ::osl::MutexGuard aGuard( m_aMutex ); - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if (!rBHelper.bDisposed) { - - pStateSetHelper->AddState( AccessibleStateType::TRANSIENT ); - pStateSetHelper->AddState( AccessibleStateType::ENABLED ); - pStateSetHelper->AddState( AccessibleStateType::OPAQUE ); - pStateSetHelper->AddState( AccessibleStateType::SELECTABLE ); - pStateSetHelper->AddState( AccessibleStateType::SHOWING ); - pStateSetHelper->AddState( AccessibleStateType::VISIBLE ); + nStateSet |= AccessibleStateType::TRANSIENT; + nStateSet |= AccessibleStateType::ENABLED; + nStateSet |= AccessibleStateType::OPAQUE; + nStateSet |= AccessibleStateType::SELECTABLE; + nStateSet |= AccessibleStateType::SHOWING; + nStateSet |= AccessibleStateType::VISIBLE; tools::Long nIndex = mrParentWindow.GetFocusPosIndex(); if ( nIndex == mnIndexInParent) { - pStateSetHelper->AddState( AccessibleStateType::SELECTED ); + nStateSet |= AccessibleStateType::SELECTED; } if (mrParentWindow.GetBitmapPixel(sal_uInt16(mnIndexInParent))) { - pStateSetHelper->AddState( AccessibleStateType::CHECKED ); + nStateSet |= AccessibleStateType::CHECKED; } } else - pStateSetHelper->AddState( AccessibleStateType::DEFUNC ); + nStateSet |= AccessibleStateType::DEFUNC; - return pStateSetHelper; + return nStateSet; } void SAL_CALL SvxPixelCtlAccessibleChild::disposing() diff --git a/svx/source/accessibility/svxrectctaccessiblecontext.cxx b/svx/source/accessibility/svxrectctaccessiblecontext.cxx index bca421c29a51..5b57fd318bba 100644 --- a/svx/source/accessibility/svxrectctaccessiblecontext.cxx +++ b/svx/source/accessibility/svxrectctaccessiblecontext.cxx @@ -20,7 +20,6 @@ #include <svxrectctaccessiblecontext.hxx> #include <com/sun/star/accessibility/AccessibleRole.hpp> #include <com/sun/star/accessibility/AccessibleEventId.hpp> -#include <unotools/accessiblestatesethelper.hxx> #include <com/sun/star/accessibility/AccessibleStateType.hpp> #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> #include <toolkit/helper/convert.hxx> @@ -208,28 +207,28 @@ Reference< XAccessibleRelationSet > SAL_CALL SvxRectCtlAccessibleContext::getAcc return uno::Reference<css::accessibility::XAccessibleRelationSet>(); } -Reference< XAccessibleStateSet > SAL_CALL SvxRectCtlAccessibleContext::getAccessibleStateSet() +sal_Int64 SAL_CALL SvxRectCtlAccessibleContext::getAccessibleStateSet() { ::osl::MutexGuard aGuard( m_aMutex ); - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if (mpRepr) { - pStateSetHelper->AddState( AccessibleStateType::ENABLED ); - pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE ); + nStateSet |= AccessibleStateType::ENABLED; + nStateSet |= AccessibleStateType::FOCUSABLE; if( mpRepr->HasFocus() ) - pStateSetHelper->AddState( AccessibleStateType::FOCUSED ); - pStateSetHelper->AddState( AccessibleStateType::OPAQUE ); + nStateSet |= AccessibleStateType::FOCUSED; + nStateSet |= AccessibleStateType::OPAQUE; - pStateSetHelper->AddState( AccessibleStateType::SHOWING ); + nStateSet |= AccessibleStateType::SHOWING; if( mpRepr->IsVisible() ) - pStateSetHelper->AddState( AccessibleStateType::VISIBLE ); + nStateSet |= AccessibleStateType::VISIBLE; } else - pStateSetHelper->AddState( AccessibleStateType::DEFUNC ); + nStateSet |= AccessibleStateType::DEFUNC; - return pStateSetHelper; + return nStateSet; } void SAL_CALL SvxRectCtlAccessibleContext::grabFocus() @@ -496,29 +495,29 @@ Reference<XAccessibleRelationSet> SAL_CALL SvxRectCtlChildAccessibleContext::get return pRelationSetHelper; } -Reference< XAccessibleStateSet > SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleStateSet() +sal_Int64 SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleStateSet() { ::osl::MutexGuard aGuard( m_aMutex ); - rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if (!rBHelper.bDisposed) { if( mbIsChecked ) { - pStateSetHelper->AddState( AccessibleStateType::CHECKED ); + nStateSet |= AccessibleStateType::CHECKED; } - pStateSetHelper->AddState( AccessibleStateType::ENABLED ); - pStateSetHelper->AddState( AccessibleStateType::SENSITIVE ); - pStateSetHelper->AddState( AccessibleStateType::OPAQUE ); - pStateSetHelper->AddState( AccessibleStateType::SELECTABLE ); - pStateSetHelper->AddState( AccessibleStateType::SHOWING ); - pStateSetHelper->AddState( AccessibleStateType::VISIBLE ); + nStateSet |= AccessibleStateType::ENABLED; + nStateSet |= AccessibleStateType::SENSITIVE; + nStateSet |= AccessibleStateType::OPAQUE; + nStateSet |= AccessibleStateType::SELECTABLE; + nStateSet |= AccessibleStateType::SHOWING; + nStateSet |= AccessibleStateType::VISIBLE; } else - pStateSetHelper->AddState( AccessibleStateType::DEFUNC ); + nStateSet |= AccessibleStateType::DEFUNC; - return pStateSetHelper; + return nStateSet; } // XAccessibleValue diff --git a/svx/source/dialog/weldeditview.cxx b/svx/source/dialog/weldeditview.cxx index 7d36ed3c79b9..1de0c5d237f8 100644 --- a/svx/source/dialog/weldeditview.cxx +++ b/svx/source/dialog/weldeditview.cxx @@ -48,7 +48,6 @@ #include <svx/AccessibleTextHelper.hxx> #include <svx/weldeditview.hxx> #include <tools/diagnose_ex.h> -#include <unotools/accessiblestatesethelper.hxx> #include <vcl/canvastools.hxx> #include <vcl/cursor.hxx> #include <vcl/event.hxx> @@ -781,35 +780,33 @@ public: return m_pController->GetDrawingArea()->get_accessible_relation_set(); } - virtual css::uno::Reference<css::accessibility::XAccessibleStateSet> - SAL_CALL getAccessibleStateSet() override + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override { SolarMutexGuard aGuard; - rtl::Reference<::utl::AccessibleStateSetHelper> pStateSet - = new ::utl::AccessibleStateSetHelper; + sal_Int64 nStateSet = 0; if (!m_pController || !m_xTextHelper) - pStateSet->AddState(css::accessibility::AccessibleStateType::DEFUNC); + nStateSet |= css::accessibility::AccessibleStateType::DEFUNC; else { - pStateSet->AddState(css::accessibility::AccessibleStateType::MULTI_LINE); - pStateSet->AddState(css::accessibility::AccessibleStateType::ENABLED); - pStateSet->AddState(css::accessibility::AccessibleStateType::EDITABLE); - pStateSet->AddState(css::accessibility::AccessibleStateType::FOCUSABLE); - pStateSet->AddState(css::accessibility::AccessibleStateType::SELECTABLE); + nStateSet |= css::accessibility::AccessibleStateType::MULTI_LINE; + nStateSet |= css::accessibility::AccessibleStateType::ENABLED; + nStateSet |= css::accessibility::AccessibleStateType::EDITABLE; + nStateSet |= css::accessibility::AccessibleStateType::FOCUSABLE; + nStateSet |= css::accessibility::AccessibleStateType::SELECTABLE; if (m_pController->HasFocus()) - pStateSet->AddState(css::accessibility::AccessibleStateType::FOCUSED); + nStateSet |= css::accessibility::AccessibleStateType::FOCUSED; if (m_pController->IsActive()) - pStateSet->AddState(css::accessibility::AccessibleStateType::ACTIVE); + nStateSet |= css::accessibility::AccessibleStateType::ACTIVE; if (m_pController->IsVisible()) - pStateSet->AddState(css::accessibility::AccessibleStateType::SHOWING); + nStateSet |= css::accessibility::AccessibleStateType::SHOWING; if (m_pController->IsReallyVisible()) - pStateSet->AddState(css::accessibility::AccessibleStateType::VISIBLE); + nStateSet |= css::accessibility::AccessibleStateType::VISIBLE; if (COL_TRANSPARENT != m_pEditEngine->GetBackgroundColor()) - pStateSet->AddState(css::accessibility::AccessibleStateType::OPAQUE); + nStateSet |= css::accessibility::AccessibleStateType::OPAQUE; } - return pStateSet; + return nStateSet; } virtual css::lang::Locale SAL_CALL getLocale() override diff --git a/svx/source/inc/AccessibleFrameSelector.hxx b/svx/source/inc/AccessibleFrameSelector.hxx index 26f30aa6726b..cb6fbda5cd9e 100644 --- a/svx/source/inc/AccessibleFrameSelector.hxx +++ b/svx/source/inc/AccessibleFrameSelector.hxx @@ -56,7 +56,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; //XAccessible virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; @@ -100,7 +100,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; //XAccessible virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; diff --git a/svx/source/inc/GraphCtlAccessibleContext.hxx b/svx/source/inc/GraphCtlAccessibleContext.hxx index 5e77d3a11c99..03bd43e1a09d 100644 --- a/svx/source/inc/GraphCtlAccessibleContext.hxx +++ b/svx/source/inc/GraphCtlAccessibleContext.hxx @@ -106,7 +106,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription() override; virtual OUString SAL_CALL getAccessibleName() override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet> SAL_CALL getAccessibleRelationSet() override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet> SAL_CALL getAccessibleStateSet() override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override; virtual css::lang::Locale SAL_CALL getLocale() override; // XAccessibleEventBroadcaster diff --git a/svx/source/inc/charmapacc.hxx b/svx/source/inc/charmapacc.hxx index 193314ba4661..013c1da1c57d 100644 --- a/svx/source/inc/charmapacc.hxx +++ b/svx/source/inc/charmapacc.hxx @@ -92,7 +92,7 @@ namespace svx virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override { return this; } virtual sal_Int32 SAL_CALL getForeground( ) override; @@ -191,7 +191,7 @@ namespace svx virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override { return this; } diff --git a/svx/source/inc/svxpixelctlaccessiblecontext.hxx b/svx/source/inc/svxpixelctlaccessiblecontext.hxx index 2e0f0abcf931..8970e9983099 100644 --- a/svx/source/inc/svxpixelctlaccessiblecontext.hxx +++ b/svx/source/inc/svxpixelctlaccessiblecontext.hxx @@ -66,7 +66,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; //XAccessible virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; @@ -118,7 +118,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription( ) override; virtual OUString SAL_CALL getAccessibleName( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override; virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; virtual sal_Int32 SAL_CALL getForeground( ) override; diff --git a/svx/source/inc/svxrectctaccessiblecontext.hxx b/svx/source/inc/svxrectctaccessiblecontext.hxx index ef20985a44b4..5e8f458d8895 100644 --- a/svx/source/inc/svxrectctaccessiblecontext.hxx +++ b/svx/source/inc/svxrectctaccessiblecontext.hxx @@ -68,7 +68,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription() override; virtual OUString SAL_CALL getAccessibleName() override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override; virtual css::uno::Reference< css::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext() override { return this; } virtual sal_Int32 SAL_CALL getForeground() override; @@ -161,7 +161,7 @@ public: virtual OUString SAL_CALL getAccessibleDescription() override; virtual OUString SAL_CALL getAccessibleName() override; virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override; virtual css::uno::Reference< css::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext() override { return this; } diff --git a/svx/source/table/accessiblecell.cxx b/svx/source/table/accessiblecell.cxx index 1052ab5eb93b..0cb9072fb04b 100644 --- a/svx/source/table/accessiblecell.cxx +++ b/svx/source/table/accessiblecell.cxx @@ -33,7 +33,6 @@ #include <vcl/svapp.hxx> #include <vcl/window.hxx> -#include <unotools/accessiblestatesethelper.hxx> #include <comphelper/string.hxx> #include <comphelper/sequence.hxx> #include <svx/IAccessibleViewForwarder.hxx> @@ -87,7 +86,7 @@ void AccessibleCell::Init() } -bool AccessibleCell::SetState (sal_Int16 aState) +bool AccessibleCell::SetState (sal_Int64 aState) { bool bStateHasChanged = false; @@ -106,7 +105,7 @@ bool AccessibleCell::SetState (sal_Int16 aState) } -bool AccessibleCell::ResetState (sal_Int16 aState) +bool AccessibleCell::ResetState (sal_Int64 aState) { bool bStateHasChanged = false; @@ -178,65 +177,54 @@ Reference<XAccessible> SAL_CALL AccessibleCell::getAccessibleChild (sal_Int32 nI SHOWING VISIBLE */ -Reference<XAccessibleStateSet> SAL_CALL AccessibleCell::getAccessibleStateSet() +sal_Int64 SAL_CALL AccessibleCell::getAccessibleStateSet() { SolarMutexGuard aSolarGuard; ::osl::MutexGuard aGuard (m_aMutex); - Reference<XAccessibleStateSet> xStateSet; + sal_Int64 nStateSet = 0; if (rBHelper.bDisposed || mpText == nullptr) { // Return a minimal state set that only contains the DEFUNC state. - xStateSet = AccessibleContextBase::getAccessibleStateSet (); + nStateSet = AccessibleContextBase::getAccessibleStateSet (); } else { - if(mxStateSet) + // Merge current FOCUSED state from edit engine. + if (mpText != nullptr) { - // Merge current FOCUSED state from edit engine. - if (mpText != nullptr) - { - if (mpText->HaveFocus()) - mxStateSet->AddState (AccessibleStateType::FOCUSED); - else - mxStateSet->RemoveState (AccessibleStateType::FOCUSED); - } - // Set the invisible state for merged cell - if (mxCell.is() && mxCell->isMerged()) - mxStateSet->RemoveState(AccessibleStateType::VISIBLE); + if (mpText->HaveFocus()) + mnStateSet |= AccessibleStateType::FOCUSED; else - mxStateSet->AddState(AccessibleStateType::VISIBLE); + mnStateSet &= ~AccessibleStateType::FOCUSED; + } + // Set the invisible state for merged cell + if (mxCell.is() && mxCell->isMerged()) + mnStateSet &= ~AccessibleStateType::VISIBLE; + else + mnStateSet |= AccessibleStateType::VISIBLE; - //Just when the parent table is not read-only,set states EDITABLE,RESIZABLE,MOVEABLE - css::uno::Reference<XAccessible> xTempAcc = getAccessibleParent(); - if( xTempAcc.is() ) + //Just when the parent table is not read-only,set states EDITABLE,RESIZABLE,MOVEABLE + css::uno::Reference<XAccessible> xTempAcc = getAccessibleParent(); + if( xTempAcc.is() ) + { + css::uno::Reference<XAccessibleContext> + xTempAccContext = xTempAcc->getAccessibleContext(); + if( xTempAccContext.is() ) { - css::uno::Reference<XAccessibleContext> - xTempAccContext = xTempAcc->getAccessibleContext(); - if( xTempAccContext.is() ) + if (xTempAccContext->getAccessibleStateSet() & AccessibleStateType::EDITABLE) { - css::uno::Reference<XAccessibleStateSet> rState = - xTempAccContext->getAccessibleStateSet(); - if( rState.is() ) - { - const css::uno::Sequence<short> aStates = rState->getStates(); - if (std::find(aStates.begin(), aStates.end(), AccessibleStateType::EDITABLE) != aStates.end()) - { - mxStateSet->AddState (AccessibleStateType::EDITABLE); - mxStateSet->AddState (AccessibleStateType::RESIZABLE); - mxStateSet->AddState (AccessibleStateType::MOVEABLE); - } - } + mnStateSet |= AccessibleStateType::EDITABLE; + mnStateSet |= AccessibleStateType::RESIZABLE; + mnStateSet |= AccessibleStateType::MOVEABLE; } } - // Create a copy of the state set that may be modified by the - // caller without affecting the current state set. - xStateSet.set(new ::utl::AccessibleStateSetHelper (*mxStateSet)); } + nStateSet = mnStateSet; } - return xStateSet; + return nStateSet; } @@ -491,8 +479,7 @@ void AccessibleCell::disposing() // Make sure to send an event that this object loses the focus in the // case that it has the focus. - if (mxStateSet != nullptr) - mxStateSet->RemoveState(AccessibleStateType::FOCUSED); + mnStateSet &= ~AccessibleStateType::FOCUSED; if (mpText != nullptr) { diff --git a/svx/source/table/accessiblecell.hxx b/svx/source/table/accessiblecell.hxx index 65b9665ab668..d08cc97e9207 100644 --- a/svx/source/table/accessiblecell.hxx +++ b/svx/source/table/accessiblecell.hxx @@ -54,8 +54,8 @@ public: void Init(); - virtual bool SetState (sal_Int16 aState) override; - virtual bool ResetState (sal_Int16 aState) override; + virtual bool SetState (sal_Int64 aState) override; + virtual bool ResetState (sal_Int64 aState) override; // XInterface virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) override; @@ -65,7 +65,7 @@ public: // XAccessibleContext virtual sal_Int32 SAL_CALL getAccessibleChildCount() override; virtual css::uno::Reference< css::accessibility::XAccessible> SAL_CALL getAccessibleChild(sal_Int32 nIndex) override; - virtual css::uno::Reference< css::accessibility::XAccessibleStateSet> SAL_CALL getAccessibleStateSet() override; + virtual sal_Int64 SAL_CALL getAccessibleStateSet() override; virtual sal_Int32 SAL_CALL getAccessibleIndexInParent() override; virtual OUString SAL_CALL getAccessibleName() override; const sdr::table::CellRef& getCellRef() const { return mxCell;} diff --git a/svx/source/table/accessibletableshape.cxx b/svx/source/table/accessibletableshape.cxx index 540ae311687e..cd29e8dbf1bc 100644 --- a/svx/source/table/accessibletableshape.cxx +++ b/svx/source/table/accessibletableshape.cxx @@ -954,7 +954,7 @@ AccessibleCell* AccessibleTableShape::GetActiveAccessibleCell() } //If current active cell is in editing, the focus state should be set to internal text -bool AccessibleTableShape::SetState (sal_Int16 aState) +bool AccessibleTableShape::SetState (sal_Int64 aState) { if( aState == AccessibleStateType::FOCUSED ) { @@ -967,7 +967,7 @@ bool AccessibleTableShape::SetState (sal_Int16 aState) } //If current active cell is in editing, the focus state should be reset to internal text -bool AccessibleTableShape::ResetState (sal_Int16 aState) +bool AccessibleTableShape::ResetState (sal_Int64 aState) { if( aState == AccessibleStateType::FOCUSED ) { @@ -979,12 +979,12 @@ bool AccessibleTableShape::ResetState (sal_Int16 aState) return AccessibleShape::ResetState (aState); } -bool AccessibleTableShape::SetStateDirectly (sal_Int16 aState) +bool AccessibleTableShape::SetStateDirectly (sal_Int64 aState) { return AccessibleContextBase::SetState (aState); } -bool AccessibleTableShape::ResetStateDirectly (sal_Int16 aState) +bool AccessibleTableShape::ResetStateDirectly (sal_Int64 aState) { return AccessibleContextBase::ResetState (aState); } @@ -1051,7 +1051,7 @@ OUString SAL_CALL AccessibleTableHeaderShape::getAccessibleName() return mpTable->getAccessibleName(); } -Reference< XAccessibleStateSet > SAL_CALL AccessibleTableHeaderShape::getAccessibleStateSet() +sal_Int64 SAL_CALL AccessibleTableHeaderShape::getAccessibleStateSet() { return mpTable->getAccessibleStateSet(); } |