summaryrefslogtreecommitdiff
path: root/toolkit
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 /toolkit
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 'toolkit')
-rw-r--r--toolkit/inc/controls/accessiblecontrolcontext.hxx2
-rw-r--r--toolkit/qa/complex/toolkit/accessibility/_XAccessibleContext.java4
-rw-r--r--toolkit/qa/complex/toolkit/accessibility/_XAccessibleEventBroadcaster.java11
-rw-r--r--toolkit/qa/cppunit/a11y/AccessibilityTools.cxx221
-rw-r--r--toolkit/qa/cppunit/a11y/AccessibilityTools.hxx7
-rw-r--r--toolkit/qa/cppunit/a11y/XAccessibleComponentTester.cxx3
-rw-r--r--toolkit/qa/cppunit/a11y/XAccessibleContextTester.cxx6
-rw-r--r--toolkit/qa/cppunit/a11y/XAccessibleEventBroadcasterTester.cxx7
-rw-r--r--toolkit/source/awt/vclxaccessiblecomponent.cxx45
-rw-r--r--toolkit/source/controls/accessiblecontrolcontext.cxx11
-rw-r--r--toolkit/test/accessibility/AccessibleContextHandler.java19
-rw-r--r--toolkit/test/accessibility/CanvasShape.java10
-rw-r--r--toolkit/test/accessibility/ov/FocusView.java5
13 files changed, 179 insertions, 172 deletions
diff --git a/toolkit/inc/controls/accessiblecontrolcontext.hxx b/toolkit/inc/controls/accessiblecontrolcontext.hxx
index d5233cc54d52..ebe928218535 100644
--- a/toolkit/inc/controls/accessiblecontrolcontext.hxx
+++ b/toolkit/inc/controls/accessiblecontrolcontext.hxx
@@ -75,7 +75,7 @@ namespace toolkit
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;
// XAccessibleComponent
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override;
diff --git a/toolkit/qa/complex/toolkit/accessibility/_XAccessibleContext.java b/toolkit/qa/complex/toolkit/accessibility/_XAccessibleContext.java
index df7ef76abd4b..e52855efa01a 100644
--- a/toolkit/qa/complex/toolkit/accessibility/_XAccessibleContext.java
+++ b/toolkit/qa/complex/toolkit/accessibility/_XAccessibleContext.java
@@ -25,7 +25,6 @@ import com.sun.star.accessibility.IllegalAccessibleComponentStateException;
import com.sun.star.accessibility.XAccessible;
import com.sun.star.accessibility.XAccessibleContext;
import com.sun.star.accessibility.XAccessibleRelationSet;
-import com.sun.star.accessibility.XAccessibleStateSet;
import util.AccessibilityTools;
/**
@@ -219,8 +218,7 @@ public class _XAccessibleContext {
* Has <b> OK </b> status if the set is not null.
*/
public boolean _getAccessibleStateSet() {
- XAccessibleStateSet set = oObj.getAccessibleStateSet();
- return set != null;
+ return true;
}
/**
diff --git a/toolkit/qa/complex/toolkit/accessibility/_XAccessibleEventBroadcaster.java b/toolkit/qa/complex/toolkit/accessibility/_XAccessibleEventBroadcaster.java
index fe48a6cb86b3..44b846615d35 100644
--- a/toolkit/qa/complex/toolkit/accessibility/_XAccessibleEventBroadcaster.java
+++ b/toolkit/qa/complex/toolkit/accessibility/_XAccessibleEventBroadcaster.java
@@ -166,11 +166,12 @@ public class _XAccessibleEventBroadcaster {
private static boolean chkTransient(Object Testcase) {
XAccessibleContext accCon = UnoRuntime.queryInterface(XAccessibleContext.class, Testcase);
- return accCon.getAccessibleStateSet().contains(
- AccessibleStateType.TRANSIENT)
- && accCon.getAccessibleParent().getAccessibleContext()
- .getAccessibleStateSet().contains(
- AccessibleStateType.MANAGES_DESCENDANTS);
+ long nStateSet = accCon.getAccessibleStateSet();
+ if ((nStateSet & AccessibleStateType.TRANSIENT) == 0)
+ return false;
+ long nParentStateSet = accCon.getAccessibleParent().getAccessibleContext()
+ .getAccessibleStateSet();
+ return (nParentStateSet & AccessibleStateType.MANAGES_DESCENDANTS) != 0;
}
}
diff --git a/toolkit/qa/cppunit/a11y/AccessibilityTools.cxx b/toolkit/qa/cppunit/a11y/AccessibilityTools.cxx
index 572f82e623e2..816e9b82b168 100644
--- a/toolkit/qa/cppunit/a11y/AccessibilityTools.cxx
+++ b/toolkit/qa/cppunit/a11y/AccessibilityTools.cxx
@@ -37,8 +37,7 @@ AccessibilityTools::getAccessibleObjectForRole(
const css::uno::Reference<css::accessibility::XAccessible>& xacc, sal_Int16 role)
{
css::uno::Reference<css::accessibility::XAccessibleContext> ac = xacc->getAccessibleContext();
- bool isShowing
- = ac->getAccessibleStateSet()->contains(accessibility::AccessibleStateType::SHOWING);
+ bool isShowing = ac->getAccessibleStateSet() & accessibility::AccessibleStateType::SHOWING;
if ((ac->getAccessibleRole() == role) && isShowing)
{
@@ -93,14 +92,6 @@ bool AccessibilityTools::equals(const uno::Reference<accessibility::XAccessibleC
return equals(xctx1->getAccessibleParent(), xctx2->getAccessibleParent());
}
-bool AccessibilityTools::equals(const uno::Reference<accessibility::XAccessibleStateSet>& xsts1,
- const uno::Reference<accessibility::XAccessibleStateSet>& xsts2)
-{
- if (!xsts1.is() || !xsts2.is())
- return xsts1.is() == xsts2.is();
- return xsts1->getStates() == xsts2->getStates();
-}
-
OUString AccessibilityTools::getRoleName(const sal_Int16 role)
{
switch (role)
@@ -283,82 +274,132 @@ OUString AccessibilityTools::getRoleName(const sal_Int16 role)
return "unknown";
}
-OUString AccessibilityTools::getStateName(const sal_Int16 state)
+OUString AccessibilityTools::debugAccessibleStateSet(const sal_Int64 nCombinedState)
{
- switch (state)
+ OUString combinedName;
+
+ for (int i = 0; i < 63; i++)
{
- case accessibility::AccessibleStateType::ACTIVE:
- return "ACTIVE";
- case accessibility::AccessibleStateType::ARMED:
- return "ARMED";
- case accessibility::AccessibleStateType::BUSY:
- return "BUSY";
- case accessibility::AccessibleStateType::CHECKED:
- return "CHECKED";
- case accessibility::AccessibleStateType::COLLAPSE:
- return "COLLAPSE";
- case accessibility::AccessibleStateType::DEFAULT:
- return "DEFAULT";
- case accessibility::AccessibleStateType::DEFUNC:
- return "DEFUNC";
- case accessibility::AccessibleStateType::EDITABLE:
- return "EDITABLE";
- case accessibility::AccessibleStateType::ENABLED:
- return "ENABLED";
- case accessibility::AccessibleStateType::EXPANDABLE:
- return "EXPANDABLE";
- case accessibility::AccessibleStateType::EXPANDED:
- return "EXPANDED";
- case accessibility::AccessibleStateType::FOCUSABLE:
- return "FOCUSABLE";
- case accessibility::AccessibleStateType::FOCUSED:
- return "FOCUSED";
- case accessibility::AccessibleStateType::HORIZONTAL:
- return "HORIZONTAL";
- case accessibility::AccessibleStateType::ICONIFIED:
- return "ICONIFIED";
- case accessibility::AccessibleStateType::INDETERMINATE:
- return "INDETERMINATE";
- case accessibility::AccessibleStateType::INVALID:
- return "INVALID";
- case accessibility::AccessibleStateType::MANAGES_DESCENDANTS:
- return "MANAGES_DESCENDANTS";
- case accessibility::AccessibleStateType::MODAL:
- return "MODAL";
- case accessibility::AccessibleStateType::MOVEABLE:
- return "MOVEABLE";
- case accessibility::AccessibleStateType::MULTI_LINE:
- return "MULTI_LINE";
- case accessibility::AccessibleStateType::MULTI_SELECTABLE:
- return "MULTI_SELECTABLE";
- case accessibility::AccessibleStateType::OFFSCREEN:
- return "OFFSCREEN";
- case accessibility::AccessibleStateType::OPAQUE:
- return "OPAQUE";
- case accessibility::AccessibleStateType::PRESSED:
- return "PRESSED";
- case accessibility::AccessibleStateType::RESIZABLE:
- return "RESIZABLE";
- case accessibility::AccessibleStateType::SELECTABLE:
- return "SELECTABLE";
- case accessibility::AccessibleStateType::SELECTED:
- return "SELECTED";
- case accessibility::AccessibleStateType::SENSITIVE:
- return "SENSITIVE";
- case accessibility::AccessibleStateType::SHOWING:
- return "SHOWING";
- case accessibility::AccessibleStateType::SINGLE_LINE:
- return "SINGLE_LINE";
- case accessibility::AccessibleStateType::STALE:
- return "STALE";
- case accessibility::AccessibleStateType::TRANSIENT:
- return "TRANSIENT";
- case accessibility::AccessibleStateType::VERTICAL:
- return "VERTICAL";
- case accessibility::AccessibleStateType::VISIBLE:
- return "VISIBLE";
+ sal_Int64 state = sal_Int64(1) << i;
+ if (!(state & nCombinedState))
+ continue;
+ OUString name;
+ switch (state)
+ {
+ case accessibility::AccessibleStateType::ACTIVE:
+ name = "ACTIVE";
+ break;
+ case accessibility::AccessibleStateType::ARMED:
+ name = "ARMED";
+ break;
+ case accessibility::AccessibleStateType::BUSY:
+ name = "BUSY";
+ break;
+ case accessibility::AccessibleStateType::CHECKED:
+ name = "CHECKED";
+ break;
+ case accessibility::AccessibleStateType::COLLAPSE:
+ name = "COLLAPSE";
+ break;
+ case accessibility::AccessibleStateType::DEFAULT:
+ name = "DEFAULT";
+ break;
+ case accessibility::AccessibleStateType::DEFUNC:
+ name = "DEFUNC";
+ break;
+ case accessibility::AccessibleStateType::EDITABLE:
+ name = "EDITABLE";
+ break;
+ case accessibility::AccessibleStateType::ENABLED:
+ name = "ENABLED";
+ break;
+ case accessibility::AccessibleStateType::EXPANDABLE:
+ name = "EXPANDABLE";
+ break;
+ case accessibility::AccessibleStateType::EXPANDED:
+ name = "EXPANDED";
+ break;
+ case accessibility::AccessibleStateType::FOCUSABLE:
+ name = "FOCUSABLE";
+ break;
+ case accessibility::AccessibleStateType::FOCUSED:
+ name = "FOCUSED";
+ break;
+ case accessibility::AccessibleStateType::HORIZONTAL:
+ name = "HORIZONTAL";
+ break;
+ case accessibility::AccessibleStateType::ICONIFIED:
+ name = "ICONIFIED";
+ break;
+ case accessibility::AccessibleStateType::INDETERMINATE:
+ name = "INDETERMINATE";
+ break;
+ case accessibility::AccessibleStateType::INVALID:
+ name = "INVALID";
+ break;
+ case accessibility::AccessibleStateType::MANAGES_DESCENDANTS:
+ name = "MANAGES_DESCENDANTS";
+ break;
+ case accessibility::AccessibleStateType::MODAL:
+ name = "MODAL";
+ break;
+ case accessibility::AccessibleStateType::MOVEABLE:
+ name = "MOVEABLE";
+ break;
+ case accessibility::AccessibleStateType::MULTI_LINE:
+ name = "MULTI_LINE";
+ break;
+ case accessibility::AccessibleStateType::MULTI_SELECTABLE:
+ name = "MULTI_SELECTABLE";
+ break;
+ case accessibility::AccessibleStateType::OFFSCREEN:
+ name = "OFFSCREEN";
+ break;
+ case accessibility::AccessibleStateType::OPAQUE:
+ name = "OPAQUE";
+ break;
+ case accessibility::AccessibleStateType::PRESSED:
+ name = "PRESSED";
+ break;
+ case accessibility::AccessibleStateType::RESIZABLE:
+ name = "RESIZABLE";
+ break;
+ case accessibility::AccessibleStateType::SELECTABLE:
+ name = "SELECTABLE";
+ break;
+ case accessibility::AccessibleStateType::SELECTED:
+ name = "SELECTED";
+ break;
+ case accessibility::AccessibleStateType::SENSITIVE:
+ name = "SENSITIVE";
+ break;
+ case accessibility::AccessibleStateType::SHOWING:
+ name = "SHOWING";
+ break;
+ case accessibility::AccessibleStateType::SINGLE_LINE:
+ name = "SINGLE_LINE";
+ break;
+ case accessibility::AccessibleStateType::STALE:
+ name = "STALE";
+ break;
+ case accessibility::AccessibleStateType::TRANSIENT:
+ name = "TRANSIENT";
+ break;
+ case accessibility::AccessibleStateType::VERTICAL:
+ name = "VERTICAL";
+ break;
+ case accessibility::AccessibleStateType::VISIBLE:
+ name = "VISIBLE";
+ break;
+ }
+ if (combinedName.getLength())
+ combinedName += " | ";
+ combinedName += name;
}
- return "unknown";
+
+ if (combinedName.isEmpty())
+ return "unknown";
+ return combinedName;
}
OUString AccessibilityTools::getEventIdName(const sal_Int16 event_id)
@@ -463,20 +504,6 @@ OUString AccessibilityTools::debugName(accessibility::XAccessible* acc)
return debugName(acc->getAccessibleContext().get());
}
-OUString AccessibilityTools::debugName(accessibility::XAccessibleStateSet* xsts)
-{
- OUString name;
-
- for (auto state : xsts->getStates())
- {
- if (name.getLength())
- name += " | ";
- name += AccessibilityTools::getStateName(state);
- }
-
- return name;
-}
-
OUString AccessibilityTools::debugName(const accessibility::AccessibleEventObject* evobj)
{
return "(AccessibleEventObject) { id=" + getEventIdName(evobj->EventId)
diff --git a/toolkit/qa/cppunit/a11y/AccessibilityTools.hxx b/toolkit/qa/cppunit/a11y/AccessibilityTools.hxx
index a16338a85993..96afe4377f94 100644
--- a/toolkit/qa/cppunit/a11y/AccessibilityTools.hxx
+++ b/toolkit/qa/cppunit/a11y/AccessibilityTools.hxx
@@ -27,7 +27,6 @@
#include <com/sun/star/accessibility/AccessibleEventObject.hpp>
#include <com/sun/star/accessibility/XAccessible.hpp>
#include <com/sun/star/accessibility/XAccessibleContext.hpp>
-#include <com/sun/star/accessibility/XAccessibleStateSet.hpp>
class AccessibilityTools
{
@@ -44,8 +43,6 @@ public:
const css::uno::Reference<css::accessibility::XAccessible>& xacc2);
static bool equals(const css::uno::Reference<css::accessibility::XAccessibleContext>& xctx1,
const css::uno::Reference<css::accessibility::XAccessibleContext>& xctx2);
- static bool equals(const css::uno::Reference<css::accessibility::XAccessibleStateSet>& xsts1,
- const css::uno::Reference<css::accessibility::XAccessibleStateSet>& xsts2);
static OUString getRoleName(const sal_Int16 role);
static OUString getStateName(const sal_Int16 state);
@@ -80,6 +77,8 @@ public:
return ost.str();
}
+ static OUString debugAccessibleStateSet(sal_Int64 p);
+
/**
* @brief Process events until a condition or a timeout
* @param cUntilCallback Callback condition
@@ -126,7 +125,6 @@ public:
private:
static OUString debugName(css::accessibility::XAccessibleContext* xctx);
static OUString debugName(css::accessibility::XAccessible* xacc);
- static OUString debugName(css::accessibility::XAccessibleStateSet* xsts);
static OUString debugName(const css::accessibility::AccessibleEventObject* evobj);
};
@@ -149,7 +147,6 @@ CPPUNIT_NS_BEGIN
AT_ASSERTION_TRAITS(css::accessibility::XAccessible);
AT_ASSERTION_TRAITS(css::accessibility::XAccessibleContext);
-AT_ASSERTION_TRAITS(css::accessibility::XAccessibleStateSet);
#undef AT_ASSERTION_TRAITS
diff --git a/toolkit/qa/cppunit/a11y/XAccessibleComponentTester.cxx b/toolkit/qa/cppunit/a11y/XAccessibleComponentTester.cxx
index ea46ff778575..3c743d3223da 100644
--- a/toolkit/qa/cppunit/a11y/XAccessibleComponentTester.cxx
+++ b/toolkit/qa/cppunit/a11y/XAccessibleComponentTester.cxx
@@ -147,7 +147,8 @@ void XAccessibleComponentTester::testAccessibleAtPoint()
child->getAccessibleContext(), uno::UNO_SET_THROW);
std::cout << "* Found child: " << AccessibilityTools::debugString(child) << std::endl;
std::cout << " states: "
- << AccessibilityTools::debugString(childContext->getAccessibleStateSet())
+ << AccessibilityTools::debugAccessibleStateSet(
+ childContext->getAccessibleStateSet())
<< std::endl;
uno::Reference<accessibility::XAccessibleComponent> xChildComponent(childContext,
uno::UNO_QUERY);
diff --git a/toolkit/qa/cppunit/a11y/XAccessibleContextTester.cxx b/toolkit/qa/cppunit/a11y/XAccessibleContextTester.cxx
index b8c7898f963f..b330d5ba9544 100644
--- a/toolkit/qa/cppunit/a11y/XAccessibleContextTester.cxx
+++ b/toolkit/qa/cppunit/a11y/XAccessibleContextTester.cxx
@@ -143,9 +143,9 @@ void XAccessibleContextTester::testGetAccessibleRole()
*/
void XAccessibleContextTester::testGetAccessibleStateSet()
{
- auto stateSet = mxContext->getAccessibleStateSet();
- std::cout << "The state set is: " << AccessibilityTools::debugString(stateSet) << std::endl;
- CPPUNIT_ASSERT_MESSAGE("state set is not set", stateSet.is());
+ sal_Int64 stateSet = mxContext->getAccessibleStateSet();
+ std::cout << "The state set is: " << AccessibilityTools::debugAccessibleStateSet(stateSet)
+ << std::endl;
}
/**
diff --git a/toolkit/qa/cppunit/a11y/XAccessibleEventBroadcasterTester.cxx b/toolkit/qa/cppunit/a11y/XAccessibleEventBroadcasterTester.cxx
index 80aa2c079f92..1ac5d4e3b56b 100644
--- a/toolkit/qa/cppunit/a11y/XAccessibleEventBroadcasterTester.cxx
+++ b/toolkit/qa/cppunit/a11y/XAccessibleEventBroadcasterTester.cxx
@@ -92,10 +92,9 @@ bool XAccessibleEventBroadcasterTester::isTransient(
bool XAccessibleEventBroadcasterTester::isTransient(
const uno::Reference<accessibility::XAccessibleContext> xCtx)
{
- return (
- xCtx->getAccessibleStateSet()->contains(accessibility::AccessibleStateType::TRANSIENT)
- && xCtx->getAccessibleParent()->getAccessibleContext()->getAccessibleStateSet()->contains(
- accessibility::AccessibleStateType::MANAGES_DESCENDANTS));
+ return ((xCtx->getAccessibleStateSet() & accessibility::AccessibleStateType::TRANSIENT)
+ && (xCtx->getAccessibleParent()->getAccessibleContext()->getAccessibleStateSet()
+ & accessibility::AccessibleStateType::MANAGES_DESCENDANTS));
}
/**
diff --git a/toolkit/source/awt/vclxaccessiblecomponent.cxx b/toolkit/source/awt/vclxaccessiblecomponent.cxx
index 767004c3539d..b45b1084e7d8 100644
--- a/toolkit/source/awt/vclxaccessiblecomponent.cxx
+++ b/toolkit/source/awt/vclxaccessiblecomponent.cxx
@@ -34,7 +34,6 @@
#include <vcl/toolkit/edit.hxx>
#include <vcl/settings.hxx>
#include <tools/debug.hxx>
-#include <unotools/accessiblestatesethelper.hxx>
#include <unotools/accessiblerelationsethelper.hxx>
#include <vcl/svapp.hxx>
#include <vcl/menu.hxx>
@@ -385,50 +384,50 @@ void VCLXAccessibleComponent::FillAccessibleRelationSet( utl::AccessibleRelation
}
}
-void VCLXAccessibleComponent::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+void VCLXAccessibleComponent::FillAccessibleStateSet( sal_Int64& rStateSet )
{
VclPtr<vcl::Window> pWindow = GetWindow();
if ( pWindow )
{
if ( pWindow->IsVisible() )
{
- rStateSet.AddState( accessibility::AccessibleStateType::VISIBLE );
- rStateSet.AddState( accessibility::AccessibleStateType::SHOWING );
+ rStateSet |= accessibility::AccessibleStateType::VISIBLE;
+ rStateSet |= accessibility::AccessibleStateType::SHOWING;
}
else
{
- rStateSet.AddState( accessibility::AccessibleStateType::INVALID );
+ rStateSet |= accessibility::AccessibleStateType::INVALID;
}
if ( pWindow->IsEnabled() )
{
- rStateSet.AddState( accessibility::AccessibleStateType::ENABLED );
- rStateSet.AddState( accessibility::AccessibleStateType::SENSITIVE );
+ rStateSet |= accessibility::AccessibleStateType::ENABLED;
+ rStateSet |= accessibility::AccessibleStateType::SENSITIVE;
}
if ( pWindow->HasChildPathFocus() &&
( getAccessibleRole() == accessibility::AccessibleRole::FRAME ||
getAccessibleRole() == accessibility::AccessibleRole::ALERT ||
getAccessibleRole() == accessibility::AccessibleRole::DIALOG ) ) // #i18891#
- rStateSet.AddState( accessibility::AccessibleStateType::ACTIVE );
+ rStateSet |= accessibility::AccessibleStateType::ACTIVE;
if ( pWindow->HasFocus() || ( pWindow->IsCompoundControl() && pWindow->HasChildPathFocus() ) )
- rStateSet.AddState( accessibility::AccessibleStateType::FOCUSED );
+ rStateSet |= accessibility::AccessibleStateType::FOCUSED;
if ( pWindow->IsWait() )
- rStateSet.AddState( accessibility::AccessibleStateType::BUSY );
+ rStateSet |= accessibility::AccessibleStateType::BUSY;
if ( pWindow->GetStyle() & WB_SIZEABLE )
- rStateSet.AddState( accessibility::AccessibleStateType::RESIZABLE );
+ rStateSet |= accessibility::AccessibleStateType::RESIZABLE;
// 6. frame doesn't have MOVABLE state
// 10. for password text, where is the sensitive state?
if( ( getAccessibleRole() == accessibility::AccessibleRole::FRAME ||getAccessibleRole() == accessibility::AccessibleRole::DIALOG )&& pWindow->GetStyle() & WB_MOVEABLE )
- rStateSet.AddState( accessibility::AccessibleStateType::MOVEABLE );
+ rStateSet |= accessibility::AccessibleStateType::MOVEABLE;
if( pWindow->IsDialog() )
{
Dialog *pDlg = static_cast< Dialog* >( pWindow.get() );
if( pDlg->IsInExecute() )
- rStateSet.AddState( accessibility::AccessibleStateType::MODAL );
+ rStateSet |= accessibility::AccessibleStateType::MODAL;
}
//If a combobox or list's edit child isn't read-only,EDITABLE state
//should be set.
@@ -436,7 +435,7 @@ void VCLXAccessibleComponent::FillAccessibleStateSet( utl::AccessibleStateSetHel
{
if( !( pWindow->GetStyle() & WB_READONLY) ||
!static_cast<Edit*>(pWindow.get())->IsReadOnly() )
- rStateSet.AddState( accessibility::AccessibleStateType::EDITABLE );
+ rStateSet |= accessibility::AccessibleStateType::EDITABLE;
}
VclPtr<vcl::Window> pChild = pWindow->GetWindow( GetWindowType::FirstChild );
@@ -448,14 +447,14 @@ void VCLXAccessibleComponent::FillAccessibleStateSet( utl::AccessibleStateSetHel
{
if( !( pWinTemp->GetStyle() & WB_READONLY) ||
!static_cast<Edit*>(pWinTemp.get())->IsReadOnly() )
- rStateSet.AddState( accessibility::AccessibleStateType::EDITABLE );
+ rStateSet |= accessibility::AccessibleStateType::EDITABLE;
break;
}
if( pChild->GetType() == WindowType::EDIT )
{
if( !( pChild->GetStyle() & WB_READONLY) ||
!static_cast<Edit*>(pChild.get())->IsReadOnly())
- rStateSet.AddState( accessibility::AccessibleStateType::EDITABLE );
+ rStateSet |= accessibility::AccessibleStateType::EDITABLE;
break;
}
pChild = pChild->GetWindow( GetWindowType::Next );
@@ -463,7 +462,7 @@ void VCLXAccessibleComponent::FillAccessibleStateSet( utl::AccessibleStateSetHel
}
else
{
- rStateSet.AddState( accessibility::AccessibleStateType::DEFUNC );
+ rStateSet |= accessibility::AccessibleStateType::DEFUNC;
}
/*
@@ -644,13 +643,13 @@ uno::Reference< accessibility::XAccessibleRelationSet > VCLXAccessibleComponent:
return pRelationSetHelper;
}
-uno::Reference< accessibility::XAccessibleStateSet > VCLXAccessibleComponent::getAccessibleStateSet( )
+sal_Int64 VCLXAccessibleComponent::getAccessibleStateSet( )
{
OExternalLockGuard aGuard( this );
- rtl::Reference<utl::AccessibleStateSetHelper> pStateSetHelper = new utl::AccessibleStateSetHelper;
- FillAccessibleStateSet( *pStateSetHelper );
- return pStateSetHelper;
+ sal_Int64 nStateSet = 0;
+ FillAccessibleStateSet( nStateSet );
+ return nStateSet;
}
lang::Locale VCLXAccessibleComponent::getLocale()
@@ -729,8 +728,8 @@ void VCLXAccessibleComponent::grabFocus( )
{
OExternalLockGuard aGuard( this );
- uno::Reference< accessibility::XAccessibleStateSet > xStates = getAccessibleStateSet();
- if ( m_xVCLXWindow.is() && xStates.is() && xStates->contains( accessibility::AccessibleStateType::FOCUSABLE ) )
+ sal_Int64 nStates = getAccessibleStateSet();
+ if ( m_xVCLXWindow.is() && ( nStates & accessibility::AccessibleStateType::FOCUSABLE ) )
m_xVCLXWindow->setFocus();
}
diff --git a/toolkit/source/controls/accessiblecontrolcontext.cxx b/toolkit/source/controls/accessiblecontrolcontext.cxx
index 219b4a610a40..d778cfd271fc 100644
--- a/toolkit/source/controls/accessiblecontrolcontext.cxx
+++ b/toolkit/source/controls/accessiblecontrolcontext.cxx
@@ -18,7 +18,6 @@
*/
#include <controls/accessiblecontrolcontext.hxx>
-#include <unotools/accessiblestatesethelper.hxx>
#include <com/sun/star/awt/XControl.hpp>
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -173,23 +172,21 @@ namespace toolkit
}
- Reference< XAccessibleStateSet > SAL_CALL OAccessibleControlContext::getAccessibleStateSet( )
+ sal_Int64 SAL_CALL OAccessibleControlContext::getAccessibleStateSet( )
{
::osl::MutexGuard aGuard( GetMutex() );
// no OContextEntryGuard here, as we do not want to throw an exception in case we're not alive anymore
- rtl::Reference<::utl::AccessibleStateSetHelper> pStateSet;
+ sal_Int64 nStateSet = 0;
if ( isAlive() )
{
// no own states, only the ones which are foreign controlled
- pStateSet = new ::utl::AccessibleStateSetHelper( 0 );
}
else
{ // only the DEFUNC state if we're already disposed
- pStateSet = new ::utl::AccessibleStateSetHelper;
- pStateSet->AddState( AccessibleStateType::DEFUNC );
+ nStateSet |= AccessibleStateType::DEFUNC;
}
- return pStateSet;
+ return nStateSet;
}
diff --git a/toolkit/test/accessibility/AccessibleContextHandler.java b/toolkit/test/accessibility/AccessibleContextHandler.java
index 3b3d351086c7..62bd4b813261 100644
--- a/toolkit/test/accessibility/AccessibleContextHandler.java
+++ b/toolkit/test/accessibility/AccessibleContextHandler.java
@@ -18,7 +18,6 @@
import com.sun.star.accessibility.XAccessible;
import com.sun.star.accessibility.XAccessibleContext;
-import com.sun.star.accessibility.XAccessibleStateSet;
import tools.NameProvider;
class AccessibleContextHandler
@@ -71,22 +70,16 @@ class AccessibleContextHandler
break;
case 3:
sChild = "";
- XAccessibleStateSet xStateSet =
- xContext.getAccessibleStateSet();
- if (xStateSet != null)
+ long xStateSet = xContext.getAccessibleStateSet();
+ for (short i=0; i<=30; i++)
{
- for (short i=0; i<=30; i++)
+ if ((xStateSet & (1<<i)) != 0)
{
- if (xStateSet.contains (i))
- {
- if (sChild.compareTo ("") != 0)
- sChild += ", ";
- sChild += NameProvider.getStateName(i);
- }
+ if (sChild.compareTo ("") != 0)
+ sChild += ", ";
+ sChild += NameProvider.getStateName(1<<i);
}
}
- else
- sChild += "no state set";
sChild = "State set: " + sChild;
}
}
diff --git a/toolkit/test/accessibility/CanvasShape.java b/toolkit/test/accessibility/CanvasShape.java
index 19aa983defd8..71ae17d68887 100644
--- a/toolkit/test/accessibility/CanvasShape.java
+++ b/toolkit/test/accessibility/CanvasShape.java
@@ -23,7 +23,6 @@ import java.awt.geom.Rectangle2D;
import com.sun.star.accessibility.XAccessibleContext;
import com.sun.star.accessibility.XAccessibleComponent;
import com.sun.star.accessibility.XAccessibleText;
-import com.sun.star.accessibility.XAccessibleStateSet;
import com.sun.star.accessibility.AccessibleStateType;
class CanvasShape
@@ -63,12 +62,9 @@ class CanvasShape
msDescription = mxContext.getAccessibleDescription();
// Extract the selected and focused flag.
- XAccessibleStateSet xStateSet = mxContext.getAccessibleStateSet ();
- if (xStateSet != null)
- {
- mbSelected = xStateSet.contains (AccessibleStateType.SELECTED);
- mbFocused = xStateSet.contains (AccessibleStateType.FOCUSED);
- }
+ long nStateSet = mxContext.getAccessibleStateSet ();
+ mbSelected = (nStateSet & AccessibleStateType.SELECTED) != 0;
+ mbFocused = (nStateSet & AccessibleStateType.FOCUSED) != 0;
}
updateGeometry ();
diff --git a/toolkit/test/accessibility/ov/FocusView.java b/toolkit/test/accessibility/ov/FocusView.java
index cca1a6a0cf17..0428403f80b8 100644
--- a/toolkit/test/accessibility/ov/FocusView.java
+++ b/toolkit/test/accessibility/ov/FocusView.java
@@ -31,7 +31,6 @@ import com.sun.star.accessibility.AccessibleEventObject;
import com.sun.star.accessibility.AccessibleStateType;
import com.sun.star.accessibility.XAccessibleComponent;
import com.sun.star.accessibility.XAccessibleContext;
-import com.sun.star.accessibility.XAccessibleStateSet;
import com.sun.star.uno.UnoRuntime;
public class FocusView
@@ -103,8 +102,8 @@ public class FocusView
}
else
{
- XAccessibleStateSet aStateSet = mxContext.getAccessibleStateSet();
- if (aStateSet.contains(AccessibleStateType.FOCUSED))
+ long aStateSet = mxContext.getAccessibleStateSet();
+ if (aStateSet & AccessibleStateType.FOCUSED)
maFocused.setText ("focused");
else
maFocused.setText ("not focused");