summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2022-02-21 16:51:03 +0100
committerMichael Weghorn <m.weghorn@posteo.de>2022-02-22 10:19:27 +0100
commit2ab735df698972bff159f52975a1ed5cd4df128e (patch)
tree2c3ffdcb48915a293da9d2a4eebc83a8f32adcf4 /vcl
parentb910044514cfdeff2967eab248d03b2e9c5ca863 (diff)
gtk3 a11y: Make a11y role mapping more explicit
Use switch-case instead of an array that uses the numerical value of the accessibility::AccessibleRole as an index. Change-Id: Id7fbc31c058d0db716d2b60a4a7eb7e7e954af95 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130330 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/a11y/atkwrapper.cxx277
1 files changed, 180 insertions, 97 deletions
diff --git a/vcl/unx/gtk3/a11y/atkwrapper.cxx b/vcl/unx/gtk3/a11y/atkwrapper.cxx
index 2d65859ddd12..d23f384e26fc 100644
--- a/vcl/unx/gtk3/a11y/atkwrapper.cxx
+++ b/vcl/unx/gtk3/a11y/atkwrapper.cxx
@@ -168,103 +168,186 @@ AtkStateType mapAtkState( sal_Int16 nState )
static AtkRole mapToAtkRole( sal_Int16 nRole )
{
- AtkRole role = ATK_ROLE_UNKNOWN;
-
- static AtkRole roleMap[] = {
- ATK_ROLE_UNKNOWN,
- ATK_ROLE_ALERT,
- ATK_ROLE_COLUMN_HEADER,
- ATK_ROLE_CANVAS,
- ATK_ROLE_CHECK_BOX,
- ATK_ROLE_CHECK_MENU_ITEM,
- ATK_ROLE_COLOR_CHOOSER,
- ATK_ROLE_COMBO_BOX,
- ATK_ROLE_DATE_EDITOR,
- ATK_ROLE_DESKTOP_ICON,
- ATK_ROLE_DESKTOP_FRAME, // ? pane
- ATK_ROLE_DIRECTORY_PANE,
- ATK_ROLE_DIALOG,
- ATK_ROLE_DOCUMENT_FRAME, // DOCUMENT
- ATK_ROLE_EMBEDDED, // EMBEDDED_OBJECT
- ATK_ROLE_FOOTNOTE, // END_NOTE
- ATK_ROLE_FILE_CHOOSER,
- ATK_ROLE_FILLER,
- ATK_ROLE_FONT_CHOOSER,
- ATK_ROLE_FOOTER,
- ATK_ROLE_FOOTNOTE,
- ATK_ROLE_FRAME,
- ATK_ROLE_GLASS_PANE,
- ATK_ROLE_IMAGE, // GRAPHIC
- ATK_ROLE_GROUPING, // GROUP_BOX
- ATK_ROLE_HEADER,
- ATK_ROLE_HEADING,
- ATK_ROLE_LINK, // HYPER_LINK
- ATK_ROLE_ICON,
- ATK_ROLE_INTERNAL_FRAME,
- ATK_ROLE_LABEL,
- ATK_ROLE_LAYERED_PANE,
- ATK_ROLE_LIST,
- ATK_ROLE_LIST_ITEM,
- ATK_ROLE_MENU,
- ATK_ROLE_MENU_BAR,
- ATK_ROLE_MENU_ITEM,
- ATK_ROLE_OPTION_PANE,
- ATK_ROLE_PAGE_TAB,
- ATK_ROLE_PAGE_TAB_LIST,
- ATK_ROLE_PANEL,
- ATK_ROLE_PARAGRAPH,
- ATK_ROLE_PASSWORD_TEXT,
- ATK_ROLE_POPUP_MENU,
- ATK_ROLE_PUSH_BUTTON,
- ATK_ROLE_PROGRESS_BAR,
- ATK_ROLE_RADIO_BUTTON,
- ATK_ROLE_RADIO_MENU_ITEM,
- ATK_ROLE_ROW_HEADER,
- ATK_ROLE_ROOT_PANE,
- ATK_ROLE_SCROLL_BAR,
- ATK_ROLE_SCROLL_PANE,
- ATK_ROLE_PANEL, // SHAPE
- ATK_ROLE_SEPARATOR,
- ATK_ROLE_SLIDER,
- ATK_ROLE_SPIN_BUTTON, // SPIN_BOX ?
- ATK_ROLE_SPLIT_PANE,
- ATK_ROLE_STATUSBAR,
- ATK_ROLE_TABLE,
- ATK_ROLE_TABLE_CELL,
- ATK_ROLE_TEXT,
- ATK_ROLE_PANEL, // TEXT_FRAME
- ATK_ROLE_TOGGLE_BUTTON,
- ATK_ROLE_TOOL_BAR,
- ATK_ROLE_TOOL_TIP,
- ATK_ROLE_TREE,
- ATK_ROLE_VIEWPORT,
- ATK_ROLE_WINDOW,
- ATK_ROLE_PUSH_BUTTON, // BUTTON_DROPDOWN
- ATK_ROLE_PUSH_BUTTON, // BUTTON_MENU
- ATK_ROLE_CAPTION,
- ATK_ROLE_CHART,
- ATK_ROLE_EDITBAR,
- ATK_ROLE_FORM,
- ATK_ROLE_IMAGE_MAP,
- ATK_ROLE_COMMENT, // NOTE
- ATK_ROLE_PAGE,
- ATK_ROLE_RULER,
- ATK_ROLE_SECTION,
- ATK_ROLE_TREE_ITEM,
- ATK_ROLE_TREE_TABLE,
- ATK_ROLE_COMMENT,
- ATK_ROLE_UNKNOWN, // COMMENT_END - mapped to atk_role_unknown
- ATK_ROLE_DOCUMENT_PRESENTATION,
- ATK_ROLE_DOCUMENT_SPREADSHEET,
- ATK_ROLE_DOCUMENT_TEXT,
- ATK_ROLE_STATIC
- };
-
- static const sal_Int32 nMapSize = SAL_N_ELEMENTS(roleMap);
- if( 0 <= nRole && nMapSize > nRole )
- role = roleMap[nRole];
-
- return role;
+ switch (nRole)
+ {
+ case accessibility::AccessibleRole::UNKNOWN:
+ return ATK_ROLE_UNKNOWN;
+ case accessibility::AccessibleRole::ALERT:
+ return ATK_ROLE_ALERT;
+ case accessibility::AccessibleRole::COLUMN_HEADER:
+ return ATK_ROLE_COLUMN_HEADER;
+ case accessibility::AccessibleRole::CANVAS:
+ return ATK_ROLE_CANVAS;
+ case accessibility::AccessibleRole::CHECK_BOX:
+ return ATK_ROLE_CHECK_BOX;
+ case accessibility::AccessibleRole::CHECK_MENU_ITEM:
+ return ATK_ROLE_CHECK_MENU_ITEM;
+ case accessibility::AccessibleRole::COLOR_CHOOSER:
+ return ATK_ROLE_COLOR_CHOOSER;
+ case accessibility::AccessibleRole::COMBO_BOX:
+ return ATK_ROLE_COMBO_BOX;
+ case accessibility::AccessibleRole::DATE_EDITOR:
+ return ATK_ROLE_DATE_EDITOR;
+ case accessibility::AccessibleRole::DESKTOP_ICON:
+ return ATK_ROLE_DESKTOP_ICON;
+ case accessibility::AccessibleRole::DESKTOP_PANE:
+ return ATK_ROLE_DESKTOP_FRAME;
+ case accessibility::AccessibleRole::DIRECTORY_PANE:
+ return ATK_ROLE_DIRECTORY_PANE;
+ case accessibility::AccessibleRole::DIALOG:
+ return ATK_ROLE_DIALOG;
+ case accessibility::AccessibleRole::DOCUMENT:
+ return ATK_ROLE_DOCUMENT_FRAME;
+ case accessibility::AccessibleRole::EMBEDDED_OBJECT:
+ return ATK_ROLE_EMBEDDED;
+ case accessibility::AccessibleRole::END_NOTE:
+ return ATK_ROLE_FOOTNOTE;
+ case accessibility::AccessibleRole::FILE_CHOOSER:
+ return ATK_ROLE_FILE_CHOOSER;
+ case accessibility::AccessibleRole::FILLER:
+ return ATK_ROLE_FILLER;
+ case accessibility::AccessibleRole::FONT_CHOOSER:
+ return ATK_ROLE_FONT_CHOOSER;
+ case accessibility::AccessibleRole::FOOTER:
+ return ATK_ROLE_FOOTER;
+ case accessibility::AccessibleRole::FOOTNOTE:
+ return ATK_ROLE_FOOTNOTE;
+ case accessibility::AccessibleRole::FRAME:
+ return ATK_ROLE_FRAME;
+ case accessibility::AccessibleRole::GLASS_PANE:
+ return ATK_ROLE_GLASS_PANE;
+ case accessibility::AccessibleRole::GRAPHIC:
+ return ATK_ROLE_IMAGE;
+ case accessibility::AccessibleRole::GROUP_BOX:
+ return ATK_ROLE_GROUPING;
+ case accessibility::AccessibleRole::HEADER:
+ return ATK_ROLE_HEADER;
+ case accessibility::AccessibleRole::HEADING:
+ return ATK_ROLE_HEADING;
+ case accessibility::AccessibleRole::HYPER_LINK:
+ return ATK_ROLE_LINK;
+ case accessibility::AccessibleRole::ICON:
+ return ATK_ROLE_ICON;
+ case accessibility::AccessibleRole::INTERNAL_FRAME:
+ return ATK_ROLE_INTERNAL_FRAME;
+ case accessibility::AccessibleRole::LABEL:
+ return ATK_ROLE_LABEL;
+ case accessibility::AccessibleRole::LAYERED_PANE:
+ return ATK_ROLE_LAYERED_PANE;
+ case accessibility::AccessibleRole::LIST:
+ return ATK_ROLE_LIST;
+ case accessibility::AccessibleRole::LIST_ITEM:
+ return ATK_ROLE_LIST_ITEM;
+ case accessibility::AccessibleRole::MENU:
+ return ATK_ROLE_MENU;
+ case accessibility::AccessibleRole::MENU_BAR:
+ return ATK_ROLE_MENU_BAR;
+ case accessibility::AccessibleRole::MENU_ITEM:
+ return ATK_ROLE_MENU_ITEM;
+ case accessibility::AccessibleRole::OPTION_PANE:
+ return ATK_ROLE_OPTION_PANE;
+ case accessibility::AccessibleRole::PAGE_TAB:
+ return ATK_ROLE_PAGE_TAB;
+ case accessibility::AccessibleRole::PAGE_TAB_LIST:
+ return ATK_ROLE_PAGE_TAB_LIST;
+ case accessibility::AccessibleRole::PANEL:
+ return ATK_ROLE_PANEL;
+ case accessibility::AccessibleRole::PARAGRAPH:
+ return ATK_ROLE_PARAGRAPH;
+ case accessibility::AccessibleRole::PASSWORD_TEXT:
+ return ATK_ROLE_PASSWORD_TEXT;
+ case accessibility::AccessibleRole::POPUP_MENU:
+ return ATK_ROLE_POPUP_MENU;
+ case accessibility::AccessibleRole::PUSH_BUTTON:
+ return ATK_ROLE_PUSH_BUTTON;
+ case accessibility::AccessibleRole::PROGRESS_BAR:
+ return ATK_ROLE_PROGRESS_BAR;
+ case accessibility::AccessibleRole::RADIO_BUTTON:
+ return ATK_ROLE_RADIO_BUTTON;
+ case accessibility::AccessibleRole::RADIO_MENU_ITEM:
+ return ATK_ROLE_RADIO_MENU_ITEM;
+ case accessibility::AccessibleRole::ROW_HEADER:
+ return ATK_ROLE_ROW_HEADER;
+ case accessibility::AccessibleRole::ROOT_PANE:
+ return ATK_ROLE_ROOT_PANE;
+ case accessibility::AccessibleRole::SCROLL_BAR:
+ return ATK_ROLE_SCROLL_BAR;
+ case accessibility::AccessibleRole::SCROLL_PANE:
+ return ATK_ROLE_SCROLL_PANE;
+ case accessibility::AccessibleRole::SHAPE:
+ return ATK_ROLE_PANEL;
+ case accessibility::AccessibleRole::SEPARATOR:
+ return ATK_ROLE_SEPARATOR;
+ case accessibility::AccessibleRole::SLIDER:
+ return ATK_ROLE_SLIDER;
+ case accessibility::AccessibleRole::SPIN_BOX:
+ return ATK_ROLE_SPIN_BUTTON;
+ case accessibility::AccessibleRole::SPLIT_PANE:
+ return ATK_ROLE_SPLIT_PANE;
+ case accessibility::AccessibleRole::STATUS_BAR:
+ return ATK_ROLE_STATUSBAR;
+ case accessibility::AccessibleRole::TABLE:
+ return ATK_ROLE_TABLE;
+ case accessibility::AccessibleRole::TABLE_CELL:
+ return ATK_ROLE_TABLE_CELL;
+ case accessibility::AccessibleRole::TEXT:
+ return ATK_ROLE_TEXT;
+ case accessibility::AccessibleRole::TEXT_FRAME:
+ return ATK_ROLE_PANEL;
+ case accessibility::AccessibleRole::TOGGLE_BUTTON:
+ return ATK_ROLE_TOGGLE_BUTTON;
+ case accessibility::AccessibleRole::TOOL_BAR:
+ return ATK_ROLE_TOOL_BAR;
+ case accessibility::AccessibleRole::TOOL_TIP:
+ return ATK_ROLE_TOOL_TIP;
+ case accessibility::AccessibleRole::TREE:
+ return ATK_ROLE_TREE;
+ case accessibility::AccessibleRole::VIEW_PORT:
+ return ATK_ROLE_VIEWPORT;
+ case accessibility::AccessibleRole::WINDOW:
+ return ATK_ROLE_WINDOW;
+ case accessibility::AccessibleRole::BUTTON_DROPDOWN:
+ return ATK_ROLE_PUSH_BUTTON;
+ case accessibility::AccessibleRole::BUTTON_MENU:
+ return ATK_ROLE_PUSH_BUTTON;
+ case accessibility::AccessibleRole::CAPTION:
+ return ATK_ROLE_CAPTION;
+ case accessibility::AccessibleRole::CHART:
+ return ATK_ROLE_CHART;
+ case accessibility::AccessibleRole::EDIT_BAR:
+ return ATK_ROLE_EDITBAR;
+ case accessibility::AccessibleRole::FORM:
+ return ATK_ROLE_FORM;
+ case accessibility::AccessibleRole::IMAGE_MAP:
+ return ATK_ROLE_IMAGE_MAP;
+ case accessibility::AccessibleRole::NOTE:
+ return ATK_ROLE_COMMENT;
+ case accessibility::AccessibleRole::PAGE:
+ return ATK_ROLE_PAGE;
+ case accessibility::AccessibleRole::RULER:
+ return ATK_ROLE_RULER;
+ case accessibility::AccessibleRole::SECTION:
+ return ATK_ROLE_SECTION;
+ case accessibility::AccessibleRole::TREE_ITEM:
+ return ATK_ROLE_TREE_ITEM;
+ case accessibility::AccessibleRole::TREE_TABLE:
+ return ATK_ROLE_TREE_TABLE;
+ case accessibility::AccessibleRole::COMMENT:
+ return ATK_ROLE_COMMENT;
+ case accessibility::AccessibleRole::COMMENT_END:
+ return ATK_ROLE_UNKNOWN;
+ case accessibility::AccessibleRole::DOCUMENT_PRESENTATION:
+ return ATK_ROLE_DOCUMENT_PRESENTATION;
+ case accessibility::AccessibleRole::DOCUMENT_SPREADSHEET:
+ return ATK_ROLE_DOCUMENT_SPREADSHEET;
+ case accessibility::AccessibleRole::DOCUMENT_TEXT:
+ return ATK_ROLE_DOCUMENT_TEXT;
+ case accessibility::AccessibleRole::STATIC:
+ return ATK_ROLE_STATIC;
+ default:
+ SAL_WARN("vcl.gtk", "Unmapped accessible role: " << nRole);
+ return ATK_ROLE_UNKNOWN;
+ }
}
/*****************************************************************************/