Kaydet (Commit) 4917430c authored tarafından Samuel Thibault's avatar Samuel Thibault Kaydeden (comit) Thorsten Behrens

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: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst ed77565f
......@@ -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;
};
}; }; }; };
......
......@@ -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>
......
......@@ -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");
......
......@@ -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;
......
......@@ -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
};
......
......@@ -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);
......
......@@ -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 )
{
......
......@@ -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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment