summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <sthibault@hypra.fr>2018-08-08 13:34:18 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2018-08-14 12:06:41 +0200
commit4917430c1c5e8105987e81d65d31df21955ad60e (patch)
tree83d242a3cb224327e5f984d6e093b47725e21f44
parented77565f1487ed93e2557b562c10e0f4e8673c6a (diff)
tdf#116542 a11y: introduce STATIC role
This should be used for brief non-editable text which is not meant to have a relation with another object (as opposed to text or label). Change-Id: I46bfa56042a51295e9fa0d332babdbb40668ff0b Reviewed-on: https://gerrit.libreoffice.org/58734 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--offapi/com/sun/star/accessibility/AccessibleRole.idl16
-rw-r--r--officecfg/util/AcceleratorKeyChecker.fodt4
-rw-r--r--toolkit/test/accessibility/tools/NameProvider.java1
-rw-r--r--vcl/osx/a11yrolehelper.mm3
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.cxx6
-rw-r--r--winaccessibility/source/service/AccComponentEventListener.cxx1
-rw-r--r--winaccessibility/source/service/AccObject.cxx7
-rw-r--r--winaccessibility/source/service/AccObjectWinManager.cxx1
8 files changed, 35 insertions, 4 deletions
diff --git a/offapi/com/sun/star/accessibility/AccessibleRole.idl b/offapi/com/sun/star/accessibility/AccessibleRole.idl
index ca3b79bb8b5c..681da637052a 100644
--- a/offapi/com/sun/star/accessibility/AccessibleRole.idl
+++ b/offapi/com/sun/star/accessibility/AccessibleRole.idl
@@ -248,6 +248,7 @@ constants AccessibleRole
const short INTERNAL_FRAME = 29;
/** An object used to present an icon or short string in an interface.
+ <p>See also TEXT and STATIC.</p>
*/
const short LABEL = 30;
@@ -500,9 +501,9 @@ constants AccessibleRole
/** Text role.
<p>An object that presents text to the user. The text is usually
- editable by the user as opposed to a label.</p>
+ editable by the user as opposed to a label or static text.</p>
- <p>See also LABEL.</p>
+ <p>See also LABEL and STATIC.</p>
*/
const short TEXT = 60;
@@ -729,6 +730,17 @@ constants AccessibleRole
*/
const short DOCUMENT_TEXT = 85;
+ /** Static text role.
+
+ <p>An object that presents a brief amount of information to the user.
+ The text is not editable by the user as opposed to a text, and not
+ meant to have a relation with another object as opposed to a
+ label.</p>
+
+ <p>See also LABEL and TEXT.</p>
+ */
+ const short STATIC = 86;
+
};
}; }; }; };
diff --git a/officecfg/util/AcceleratorKeyChecker.fodt b/officecfg/util/AcceleratorKeyChecker.fodt
index 9ad75c1af685..e40928c28a10 100644
--- a/officecfg/util/AcceleratorKeyChecker.fodt
+++ b/officecfg/util/AcceleratorKeyChecker.fodt
@@ -221,6 +221,10 @@ Sub initializeRoleMap
ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TREE_TABLE, &quot;TREE_TABLE&quot;)
ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COMMENT, &quot;COMMENT&quot;)
ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COMMENT_END, &quot;COMMENT_END&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DOCUMENT_PRESENTATION, &quot;DOCUMENT_PRESENTATION&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DOCUMENT_SPREADSHEET, &quot;DOCUMENT_SPREADSHEET&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DOCUMENT_TEXT, &quot;DOCUMENT_TEXT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.STATIC, &quot;STATIC&quot;)
End Sub
</ooo:source-code>
diff --git a/toolkit/test/accessibility/tools/NameProvider.java b/toolkit/test/accessibility/tools/NameProvider.java
index d4055c7f4511..cc5ae469e57a 100644
--- a/toolkit/test/accessibility/tools/NameProvider.java
+++ b/toolkit/test/accessibility/tools/NameProvider.java
@@ -250,6 +250,7 @@ public class NameProvider
maRoleMap.put (Integer.valueOf(AccessibleRole.SLIDER), "SLIDER");
maRoleMap.put (Integer.valueOf(AccessibleRole.SPIN_BOX), "SPIN_BOX");
maRoleMap.put (Integer.valueOf(AccessibleRole.SPLIT_PANE), "SPLIT_PANE");
+ maRoleMap.put (Integer.valueOf(AccessibleRole.STATIC), "STATIC");
maRoleMap.put (Integer.valueOf(AccessibleRole.STATUS_BAR), "STATUS_BAR");
maRoleMap.put (Integer.valueOf(AccessibleRole.TABLE), "TABLE");
maRoleMap.put (Integer.valueOf(AccessibleRole.TABLE_CELL), "TABLE_CELL");
diff --git a/vcl/osx/a11yrolehelper.mm b/vcl/osx/a11yrolehelper.mm
index 2ce476b94c7d..0723fbc9c2d3 100644
--- a/vcl/osx/a11yrolehelper.mm
+++ b/vcl/osx/a11yrolehelper.mm
@@ -125,6 +125,7 @@ using namespace ::com::sun::star::uno;
MAP( AccessibleRole::DOCUMENT_PRESENTATION, NSAccessibilityGroupRole );
MAP( AccessibleRole::DOCUMENT_SPREADSHEET, NSAccessibilityGroupRole );
MAP( AccessibleRole::DOCUMENT_TEXT, NSAccessibilityGroupRole );
+ MAP( AccessibleRole::STATIC, NSAccessibilityStaticTextRole );
#undef MAP
default:
@@ -257,6 +258,8 @@ using namespace ::com::sun::star::uno;
MAP( AccessibleRole::DOCUMENT_SPREADSHEET, @"" );
MAP( AccessibleRole::DOCUMENT_TEXT, @"" );
+ MAP( AccessibleRole::STATIC, @"" );
+
#undef MAP
default:
break;
diff --git a/vcl/unx/gtk/a11y/atkwrapper.cxx b/vcl/unx/gtk/a11y/atkwrapper.cxx
index 951c758eeac7..6a78dce933fb 100644
--- a/vcl/unx/gtk/a11y/atkwrapper.cxx
+++ b/vcl/unx/gtk/a11y/atkwrapper.cxx
@@ -284,11 +284,17 @@ static AtkRole mapToAtkRole( sal_Int16 nRole )
, ATK_ROLE_DOCUMENT_PRESENTATION
, ATK_ROLE_DOCUMENT_SPREADSHEET
, ATK_ROLE_DOCUMENT_TEXT
+#if ATK_CHECK_VERSION(2,15,2)
+ , ATK_ROLE_STATIC
+#else
+ , ATK_ROLE_LABEL
+#endif
#else
//older version should fallback to DOCUMENT_FRAME role
, ATK_ROLE_DOCUMENT_FRAME
, ATK_ROLE_DOCUMENT_FRAME
, ATK_ROLE_DOCUMENT_FRAME
+ , ATK_ROLE_LABEL
#endif
};
diff --git a/winaccessibility/source/service/AccComponentEventListener.cxx b/winaccessibility/source/service/AccComponentEventListener.cxx
index bdbf0c2c3d66..148331acf6cd 100644
--- a/winaccessibility/source/service/AccComponentEventListener.cxx
+++ b/winaccessibility/source/service/AccComponentEventListener.cxx
@@ -176,6 +176,7 @@ void AccComponentEventListener::SetComponentState(short state, bool enable)
pAgent->DecreaseState(m_xAccessible.get(), AccessibleStateType::DEFUNC);
// 8. label should have no FOCUSABLE state, Firefox has READONLY state, we can also have.
if ( GetRole() != AccessibleRole::LABEL
+ && GetRole() != AccessibleRole::STATIC
&& GetRole() != AccessibleRole::SCROLL_BAR)
{
pAgent->IncreaseState(m_xAccessible.get(), AccessibleStateType::FOCUSABLE);
diff --git a/winaccessibility/source/service/AccObject.cxx b/winaccessibility/source/service/AccObject.cxx
index ed0ac90eebb7..eabed2cc219b 100644
--- a/winaccessibility/source/service/AccObject.cxx
+++ b/winaccessibility/source/service/AccObject.cxx
@@ -144,7 +144,8 @@ const short ROLE_TABLE[][2] =
{COMMENT_END, IA2_ROLE_TEXT_FRAME },
{DOCUMENT_PRESENTATION, ROLE_SYSTEM_DOCUMENT },
{DOCUMENT_SPREADSHEET, ROLE_SYSTEM_DOCUMENT },
- {DOCUMENT_TEXT, ROLE_SYSTEM_DOCUMENT }
+ {DOCUMENT_TEXT, ROLE_SYSTEM_DOCUMENT },
+ {STATIC, IA2_ROLE_TEXT_FRAME }
};
@@ -880,6 +881,7 @@ void AccObject::UpdateState()
switch(m_accRole)
{
case LABEL:
+ case STATIC:
m_pIMAcc->IncreaseState( STATE_SYSTEM_READONLY );
break;
case TEXT:
@@ -918,7 +920,8 @@ void AccObject::UpdateState()
if(!(Role == FILLER || Role == END_NOTE || Role == FOOTER || Role == FOOTNOTE || Role == GROUP_BOX || Role == RULER
|| Role == HEADER || Role == ICON || Role == INTERNAL_FRAME || Role == LABEL || Role == LAYERED_PANE
- || Role == SCROLL_BAR || Role == SCROLL_PANE || Role == SPLIT_PANE || Role == STATUS_BAR || Role == TOOL_TIP))
+ || Role == SCROLL_BAR || Role == SCROLL_PANE || Role == SPLIT_PANE || Role == STATIC || Role == STATUS_BAR
+ || Role == TOOL_TIP))
{
if( SEPARATOR == Role )
{
diff --git a/winaccessibility/source/service/AccObjectWinManager.cxx b/winaccessibility/source/service/AccObjectWinManager.cxx
index d5557d685539..f1ec48216ecb 100644
--- a/winaccessibility/source/service/AccObjectWinManager.cxx
+++ b/winaccessibility/source/service/AccObjectWinManager.cxx
@@ -825,6 +825,7 @@ AccObjectWinManager::CreateAccEventListener(XAccessible* pXAcc)
case /*AccessibleRole::*/CHECK_BOX:
case /*AccessibleRole::*/ICON:
case /*AccessibleRole::*/LABEL:
+ case /*AccessibleRole::*/STATIC:
case /*AccessibleRole::*/MENU_ITEM:
case /*AccessibleRole::*/CHECK_MENU_ITEM:
case /*AccessibleRole::*/RADIO_MENU_ITEM: