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 /editeng/source/accessibility/AccessibleEditableTextPara.cxx | |
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 'editeng/source/accessibility/AccessibleEditableTextPara.cxx')
-rw-r--r-- | editeng/source/accessibility/AccessibleEditableTextPara.cxx | 53 |
1 files changed, 21 insertions, 32 deletions
diff --git a/editeng/source/accessibility/AccessibleEditableTextPara.cxx b/editeng/source/accessibility/AccessibleEditableTextPara.cxx index c6c6520cc545..df32457ecd5c 100644 --- a/editeng/source/accessibility/AccessibleEditableTextPara.cxx +++ b/editeng/source/accessibility/AccessibleEditableTextPara.cxx @@ -42,7 +42,6 @@ #include <comphelper/accessibleeventnotifier.hxx> #include <comphelper/sequenceashashmap.hxx> #include <cppuhelper/supportsservice.hxx> -#include <unotools/accessiblestatesethelper.hxx> #include <unotools/accessiblerelationsethelper.hxx> #include <com/sun/star/accessibility/AccessibleRelationType.hpp> #include <vcl/unohelp.hxx> @@ -120,22 +119,16 @@ namespace accessibility mpParaManager( _pParaManager ) { - try - { - // Create the state set. - mxStateSet = new ::utl::AccessibleStateSetHelper (); + // Create the state set. + mnStateSet = 0; - // these are always on - mxStateSet->AddState( AccessibleStateType::MULTI_LINE ); - mxStateSet->AddState( AccessibleStateType::FOCUSABLE ); - mxStateSet->AddState( AccessibleStateType::VISIBLE ); - mxStateSet->AddState( AccessibleStateType::SHOWING ); - mxStateSet->AddState( AccessibleStateType::ENABLED ); - mxStateSet->AddState( AccessibleStateType::SENSITIVE ); - } - catch (const uno::Exception&) - { - } + // these are always on + mnStateSet |= AccessibleStateType::MULTI_LINE; + mnStateSet |= AccessibleStateType::FOCUSABLE; + mnStateSet |= AccessibleStateType::VISIBLE; + mnStateSet |= AccessibleStateType::SHOWING; + mnStateSet |= AccessibleStateType::ENABLED; + mnStateSet |= AccessibleStateType::SENSITIVE; } AccessibleEditableTextPara::~AccessibleEditableTextPara() @@ -567,22 +560,20 @@ namespace accessibility aEvent ); } - void AccessibleEditableTextPara::SetState( const sal_Int16 nStateId ) + void AccessibleEditableTextPara::SetState( const sal_Int64 nStateId ) { - if( mxStateSet != nullptr && - !mxStateSet->contains(nStateId) ) + if( !(mnStateSet & nStateId) ) { - mxStateSet->AddState( nStateId ); + mnStateSet |= nStateId; FireEvent( AccessibleEventId::STATE_CHANGED, uno::Any( nStateId ) ); } } - void AccessibleEditableTextPara::UnSetState( const sal_Int16 nStateId ) + void AccessibleEditableTextPara::UnSetState( const sal_Int64 nStateId ) { - if( mxStateSet != nullptr && - mxStateSet->contains(nStateId) ) + if( mnStateSet & nStateId ) { - mxStateSet->RemoveState( nStateId ); + mnStateSet &= ~nStateId; FireEvent( AccessibleEventId::STATE_CHANGED, uno::Any(), uno::Any( nStateId ) ); } } @@ -930,25 +921,23 @@ namespace accessibility return OUString(); } - uno::Reference< XAccessibleStateSet > SAL_CALL AccessibleEditableTextPara::getAccessibleStateSet() + sal_Int64 SAL_CALL AccessibleEditableTextPara::getAccessibleStateSet() { SolarMutexGuard aGuard; // Create a copy of the state set and return it. - if( !mxStateSet ) - return uno::Reference<XAccessibleStateSet>(); - uno::Reference<XAccessibleStateSet> xParentStates; + sal_Int64 nParentStates = 0; if (getAccessibleParent().is()) { uno::Reference<XAccessibleContext> xParentContext = getAccessibleParent()->getAccessibleContext(); - xParentStates = xParentContext->getAccessibleStateSet(); + nParentStates = xParentContext->getAccessibleStateSet(); } - if (xParentStates.is() && xParentStates->contains(AccessibleStateType::EDITABLE) ) + if (nParentStates & AccessibleStateType::EDITABLE) { - mxStateSet->AddState(AccessibleStateType::EDITABLE); + mnStateSet |= AccessibleStateType::EDITABLE; } - return uno::Reference<XAccessibleStateSet>( new ::utl::AccessibleStateSetHelper (*mxStateSet) ); + return mnStateSet; } lang::Locale SAL_CALL AccessibleEditableTextPara::getLocale() |