summaryrefslogtreecommitdiff
path: root/editeng/source/accessibility/AccessibleEditableTextPara.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-07-03 20:29:28 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-07-08 10:10:11 +0200
commit8d8e6c84e512c1a8b33aac75965b84481d1a1d13 (patch)
tree9ed209d057081d4283eb44b51c0d9af18f976eab /editeng/source/accessibility/AccessibleEditableTextPara.cxx
parent911ac42485b690df5cbbff6e3c04b111c1723aca (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.cxx53
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()