summaryrefslogtreecommitdiff
path: root/winaccessibility
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2023-11-13 13:57:17 +0000
committerMichael Weghorn <m.weghorn@posteo.de>2023-11-14 08:08:49 +0100
commit74c1e23c80eef5e246acfbfdf2287b49303ecc6f (patch)
tree0f4e0e4ecfbf494dede7c5f0db9b7ac4f5e36db9 /winaccessibility
parent552eb49c60562b67d2e8bc4b3813464b5d13be87 (diff)
wina11y: Make UNO to IA2 state mapping more explicit
Rather than having one array with UNO states and one with IAccessible2 states, map the states explicitly using a new helper function. The third array that the // maintenance the consistency, change one array, change the three all comment was referring to is potentially one of the two removed in commit 3d4da2347ee6ef787902e0af57e7f9635e3bd6c0 Date: Fri Nov 27 16:48:38 2015 +0100 Remove unused data Change-Id: I5553b28c58fedab24f2adc789ad91c9889a4ef61 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159381 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'winaccessibility')
-rw-r--r--winaccessibility/source/UAccCOM/MAccessible.cxx108
1 files changed, 57 insertions, 51 deletions
diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx
index e4b17fa43826..d126fc31d716 100644
--- a/winaccessibility/source/UAccCOM/MAccessible.cxx
+++ b/winaccessibility/source/UAccCOM/MAccessible.cxx
@@ -65,7 +65,6 @@
using namespace com::sun::star::uno;
using namespace com::sun::star::accessibility;
-using namespace com::sun::star::accessibility::AccessibleStateType;
namespace {
@@ -128,53 +127,60 @@ bool queryTableCell(XAccessible* pXAcc, XInterface** ppXI)
return true;
}
-}
-// IA2 states mapping, and name
-// maintenance the consistency, change one array, change the three all
-long const IA2_STATES[] =
-{
- IA2_STATE_ACTIVE, // = 0x1;
- IA2_STATE_ARMED, // = 0x2;
- IA2_STATE_DEFUNCT, // = 0x4;
- IA2_STATE_EDITABLE, // = 0x8;
- IA2_STATE_HORIZONTAL, // = 0x10;
- IA2_STATE_ICONIFIED, // = 0x20;
- IA2_STATE_INVALID_ENTRY, // = 0x80;
- IA2_STATE_MANAGES_DESCENDANTS, // = 0x100;
- IA2_STATE_MODAL, // = 0x200;
- IA2_STATE_MULTI_LINE, // = 0x400;
- IA2_STATE_OPAQUE, // = 0x800;
- IA2_STATE_REQUIRED, // = 0x2000;
- IA2_STATE_SELECTABLE_TEXT, // = 0x3000;
- IA2_STATE_SINGLE_LINE, // = 0x4000;
- IA2_STATE_STALE, // = 0x8000;
- IA2_STATE_SUPPORTS_AUTOCOMPLETION, // = 0x10000;
- IA2_STATE_TRANSIENT, //= 0x20000;
- IA2_STATE_VERTICAL // = 0x40000;
-};
+void lcl_addIA2State(AccessibleStates& rStates, sal_Int64 nUnoState)
+{
+ switch (nUnoState)
+ {
+ case css::accessibility::AccessibleStateType::ACTIVE:
+ rStates |= IA2_STATE_ACTIVE;
+ break;
+ case css::accessibility::AccessibleStateType::ARMED:
+ rStates |= IA2_STATE_ARMED;
+ break;
+ case css::accessibility::AccessibleStateType::DEFUNC:
+ rStates |= IA2_STATE_DEFUNCT;
+ break;
+ case css::accessibility::AccessibleStateType::EDITABLE:
+ rStates |= IA2_STATE_EDITABLE;
+ break;
+ case css::accessibility::AccessibleStateType::HORIZONTAL:
+ rStates |= IA2_STATE_HORIZONTAL;
+ break;
+ case css::accessibility::AccessibleStateType::ICONIFIED:
+ rStates |= IA2_STATE_ICONIFIED;
+ break;
+ case css::accessibility::AccessibleStateType::MANAGES_DESCENDANTS:
+ rStates |= IA2_STATE_MANAGES_DESCENDANTS;
+ break;
+ case css::accessibility::AccessibleStateType::MODAL:
+ rStates |= IA2_STATE_MODAL;
+ break;
+ case css::accessibility::AccessibleStateType::MULTI_LINE:
+ rStates |= IA2_STATE_MULTI_LINE;
+ break;
+ case css::accessibility::AccessibleStateType::OPAQUE:
+ rStates |= IA2_STATE_OPAQUE;
+ break;
+ case css::accessibility::AccessibleStateType::SINGLE_LINE:
+ rStates |= IA2_STATE_SINGLE_LINE;
+ break;
+ case css::accessibility::AccessibleStateType::STALE:
+ rStates |= IA2_STATE_STALE;
+ break;
+ case css::accessibility::AccessibleStateType::TRANSIENT:
+ rStates |= IA2_STATE_TRANSIENT;
+ break;
+ case css::accessibility::AccessibleStateType::VERTICAL:
+ rStates |= IA2_STATE_VERTICAL;
+ break;
+ default:
+ // no match
+ break;
+ }
+}
-sal_Int64 const UNO_STATES[] =
-{
- ACTIVE,
- ARMED,
- DEFUNC,
- EDITABLE,
- HORIZONTAL,
- ICONIFIED,
- -1, //IA2_STATE_INVALID_ENTRY
- MANAGES_DESCENDANTS,
- MODAL,
- MULTI_LINE,
- OPAQUE,
- -1, //IA2_STATE_REQUIRED
- -1, //IA2_STATE_SELECTABLE_TEXT
- SINGLE_LINE,
- STALE,
- -1, //IA2_STATE_SUPPORTS_AUTOCOMPLETION
- TRANSIENT, //IA2_STATE_TRANSIENT
- VERTICAL
-};
+}
using namespace com::sun::star::accessibility::AccessibleRole;
@@ -2582,13 +2588,13 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP CMAccessible::get_states(AccessibleStates __RP
m_xContext->getAccessibleStateSet();
*states = 0x0;
- for( std::size_t j = 0; j < SAL_N_ELEMENTS(UNO_STATES); j++ )
+ for (int i = 0; i < 63; ++i)
{
- if( (UNO_STATES[j] != -1) && (nRStateSet & UNO_STATES[j]) )
- {
- *states |= IA2_STATES[j];
- }
+ sal_Int64 nUnoState = sal_Int64(1) << i;
+ if (nRStateSet & nUnoState)
+ lcl_addIA2State(*states, nUnoState);
}
+
return S_OK;