vcl/unx/gtk4/a11y.cxx                         |   80 ++++++
 winaccessibility/source/service/AccObject.cxx |  301 +++++++++++++++++---------
 2 files changed, 273 insertions(+), 108 deletions(-)

New commits:
commit 33061be5a7538409839dcca3116b9fa72629013f
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Oct 27 15:24:46 2023 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Oct 28 05:45:06 2023 +0200

    tdf#135586 wina11y: Make role mapping more explicit
    
    The previous `ROLE_TABLE` looked like it might
    explicitly map the UNO role on the left-hand side
    to the IAccessible2 role on the right-hand side,
    and the comment also said so.
    
    In reality, the UNO role on the left hand side was
    not really accessed, but the assumption was that
    the index of each entry would correspond to the
    sal_Int16 value of the UNO role
    (`css::accessibility::AccessibleRole`).
    
    Make that mapping more explicit by replacing
    it with a helper function
    `lcl_mapToIAccessible2Role` and slightly
    simplify `AccObject::UpdateRole`.
    
    Change-Id: Id02553c4df042982f92fce3338077e95db687a83
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158572
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/winaccessibility/source/service/AccObject.cxx 
b/winaccessibility/source/service/AccObject.cxx
index 98c6bba9392f..ad0f65d8cc09 100644
--- a/winaccessibility/source/service/AccObject.cxx
+++ b/winaccessibility/source/service/AccObject.cxx
@@ -26,6 +26,7 @@
 
 #include <o3tl/char16_t2wchar_t.hxx>
 #include <o3tl/safeint.hxx>
+#include <sal/log.hxx>
 
 #include <stdlib.h>
 #include <memory.h>
@@ -51,102 +52,199 @@ using namespace com::sun::star::accessibility;
 using namespace com::sun::star::accessibility::AccessibleRole;
 using namespace com::sun::star::accessibility::AccessibleStateType;
 
-//Role mapping table,left side is UNO role, right side is MSAA role
-const short ROLE_TABLE[][2] =
+namespace {
+
+/**
+ * Map a UNO accessible role to an IAccessible2 role.
+ * @param nUnoRole The UNO role (css::accessiblity::AccessibleRole).
+ * @return IAccessible2 role.
+ */
+short lcl_mapToIAccessible2Role(sal_Int16 nUnoRole)
+{
+    switch(nUnoRole)
     {
-        {UNKNOWN,                  IA2_ROLE_UNKNOWN},
-        {ALERT ,                   ROLE_SYSTEM_DIALOG},
-        {COLUMN_HEADER ,           ROLE_SYSTEM_COLUMNHEADER},
-        //{CANVAS ,                  ROLE_SYSTEM_CLIENT},
-        {CANVAS ,                  IA2_ROLE_CANVAS},
-        {CHECK_BOX ,               ROLE_SYSTEM_CHECKBUTTON},
-        {CHECK_MENU_ITEM ,         IA2_ROLE_CHECK_MENU_ITEM},
-        {COLOR_CHOOSER,            IA2_ROLE_COLOR_CHOOSER},
-        {COMBO_BOX ,               ROLE_SYSTEM_COMBOBOX},
-        {DATE_EDITOR ,             IA2_ROLE_DATE_EDITOR},
-        {DESKTOP_ICON ,            IA2_ROLE_DESKTOP_ICON},
-        {DESKTOP_PANE,             IA2_ROLE_DESKTOP_PANE},
-        {DIRECTORY_PANE,           IA2_ROLE_DIRECTORY_PANE},
-        {DIALOG,                   ROLE_SYSTEM_DIALOG},
-        {DOCUMENT,                 ROLE_SYSTEM_DOCUMENT},
-        {EMBEDDED_OBJECT ,         IA2_ROLE_EMBEDDED_OBJECT },
-        {END_NOTE ,                IA2_ROLE_ENDNOTE },
-        {FILE_CHOOSER ,            IA2_ROLE_FILE_CHOOSER },
-        {FILLER,                   ROLE_SYSTEM_WHITESPACE},
-        {FONT_CHOOSER,             IA2_ROLE_FONT_CHOOSER},
-        {FOOTER,                   IA2_ROLE_FOOTER},
-        {FOOTNOTE,                 IA2_ROLE_FOOTNOTE},
-        {FRAME,                    IA2_ROLE_FRAME},
-        {GLASS_PANE ,              IA2_ROLE_GLASS_PANE},
-        {GRAPHIC ,                 ROLE_SYSTEM_GRAPHIC},
-        {GROUP_BOX,                ROLE_SYSTEM_GROUPING},
-        {HEADER ,                  IA2_ROLE_HEADER},
-        {HEADING ,                 IA2_ROLE_HEADING},
-        {HYPER_LINK ,              ROLE_SYSTEM_TEXT},
-        {ICON ,                    IA2_ROLE_ICON},
-        {INTERNAL_FRAME,           IA2_ROLE_INTERNAL_FRAME},
-        {LABEL,                    ROLE_SYSTEM_STATICTEXT},
-        {LAYERED_PANE ,            IA2_ROLE_LAYERED_PANE},
-        {LIST ,                    ROLE_SYSTEM_LIST},
-        {LIST_ITEM ,               ROLE_SYSTEM_LISTITEM},
-        //{MENU ,                    ROLE_SYSTEM_MENUPOPUP},
-        {MENU,                ROLE_SYSTEM_MENUITEM},
-        {MENU_BAR,                 ROLE_SYSTEM_MENUBAR},
-        {MENU_ITEM,                ROLE_SYSTEM_MENUITEM},
-        {OPTION_PANE ,             IA2_ROLE_OPTION_PANE},
-        {PAGE_TAB,                 ROLE_SYSTEM_PAGETAB},
-        {PAGE_TAB_LIST,            ROLE_SYSTEM_PAGETABLIST},
-        {PANEL,                    IA2_ROLE_OPTION_PANE},
-        {PARAGRAPH,                IA2_ROLE_PARAGRAPH},
-        {PASSWORD_TEXT,            ROLE_SYSTEM_TEXT},
-        {POPUP_MENU,               ROLE_SYSTEM_MENUPOPUP},
-        {PUSH_BUTTON,              ROLE_SYSTEM_PUSHBUTTON},
-        {PROGRESS_BAR,             ROLE_SYSTEM_PROGRESSBAR},
-        {RADIO_BUTTON,             ROLE_SYSTEM_RADIOBUTTON},
-        {RADIO_MENU_ITEM,          IA2_ROLE_RADIO_MENU_ITEM},
-        {ROW_HEADER ,              ROLE_SYSTEM_ROWHEADER},
-        {ROOT_PANE,                IA2_ROLE_ROOT_PANE},
-        {SCROLL_BAR ,              ROLE_SYSTEM_SCROLLBAR},
-        {SCROLL_PANE ,             IA2_ROLE_SCROLL_PANE},
-        {SHAPE,                    IA2_ROLE_SHAPE},
-        {SEPARATOR ,               ROLE_SYSTEM_SEPARATOR},
-        {SLIDER ,                  ROLE_SYSTEM_SLIDER},
-        {SPIN_BOX ,                ROLE_SYSTEM_SPINBUTTON},
-        {SPLIT_PANE,               IA2_ROLE_SPLIT_PANE},
-        {STATUS_BAR,               ROLE_SYSTEM_STATUSBAR},
-        {TABLE,                    ROLE_SYSTEM_TABLE},
-        {TABLE_CELL ,              ROLE_SYSTEM_CELL},
-        {TEXT,                     ROLE_SYSTEM_TEXT},
-        {TEXT_FRAME ,              IA2_ROLE_TEXT_FRAME},
-        //for change toggle button to push button for jaws
-        {TOGGLE_BUTTON,            ROLE_SYSTEM_PUSHBUTTON},
-
-        {TOOL_BAR,                 ROLE_SYSTEM_TOOLBAR},
-        {TOOL_TIP,                 ROLE_SYSTEM_TOOLTIP},
-        {TREE ,                    ROLE_SYSTEM_OUTLINE},
-        {VIEW_PORT ,               IA2_ROLE_VIEW_PORT},
-        {WINDOW,                   ROLE_SYSTEM_WINDOW},
-        {BUTTON_DROPDOWN,  ROLE_SYSTEM_BUTTONDROPDOWN},
-        {BUTTON_MENU,             ROLE_SYSTEM_BUTTONMENU},
-        {CAPTION,                   IA2_ROLE_CAPTION},
-        {CHART,                     IA2_ROLE_SHAPE},
-        {EDIT_BAR,                  IA2_ROLE_EDITBAR},
-        {FORM,                      IA2_ROLE_FORM},
-        {IMAGE_MAP ,                IA2_ROLE_IMAGE_MAP},
-        {NOTE,                      IA2_ROLE_NOTE},
-        {PAGE,                      IA2_ROLE_PAGE},
-        {RULER ,                    IA2_ROLE_RULER},
-        {SECTION,                   IA2_ROLE_SECTION},
-        {TREE_ITEM ,                ROLE_SYSTEM_OUTLINEITEM},
-        {TREE_TABLE,                ROLE_SYSTEM_OUTLINE},
-        {COMMENT,                   IA2_ROLE_TEXT_FRAME },
-        {COMMENT_END,               IA2_ROLE_TEXT_FRAME },
-        {DOCUMENT_PRESENTATION,     ROLE_SYSTEM_DOCUMENT },
-        {DOCUMENT_SPREADSHEET,      ROLE_SYSTEM_DOCUMENT },
-        {DOCUMENT_TEXT,             ROLE_SYSTEM_DOCUMENT },
-        {STATIC,                    ROLE_SYSTEM_STATICTEXT },
-        {NOTIFICATION,              ROLE_SYSTEM_ALERT}
-    };
+        case css::accessibility::AccessibleRole::UNKNOWN:
+            return IA2_ROLE_UNKNOWN;
+        case css::accessibility::AccessibleRole::ALERT:
+            return ROLE_SYSTEM_DIALOG;
+        case css::accessibility::AccessibleRole::COLUMN_HEADER:
+            return ROLE_SYSTEM_COLUMNHEADER;
+        case css::accessibility::AccessibleRole::CANVAS:
+            return IA2_ROLE_CANVAS;
+        case css::accessibility::AccessibleRole::CHECK_BOX:
+            return ROLE_SYSTEM_CHECKBUTTON;
+        case css::accessibility::AccessibleRole::CHECK_MENU_ITEM:
+            return IA2_ROLE_CHECK_MENU_ITEM;
+        case css::accessibility::AccessibleRole::COLOR_CHOOSER:
+            return IA2_ROLE_COLOR_CHOOSER;
+        case css::accessibility::AccessibleRole::COMBO_BOX:
+            return ROLE_SYSTEM_COMBOBOX;
+        case css::accessibility::AccessibleRole::DATE_EDITOR:
+            return IA2_ROLE_DATE_EDITOR;
+        case css::accessibility::AccessibleRole::DESKTOP_ICON:
+            return IA2_ROLE_DESKTOP_ICON;
+        case css::accessibility::AccessibleRole::DESKTOP_PANE:
+            return IA2_ROLE_DESKTOP_PANE;
+        case css::accessibility::AccessibleRole::DIRECTORY_PANE:
+            return IA2_ROLE_DIRECTORY_PANE;
+        case css::accessibility::AccessibleRole::DIALOG:
+            return ROLE_SYSTEM_DIALOG;
+        case css::accessibility::AccessibleRole::DOCUMENT:
+            return ROLE_SYSTEM_DOCUMENT;
+        case css::accessibility::AccessibleRole::EMBEDDED_OBJECT:
+            return IA2_ROLE_EMBEDDED_OBJECT;
+        case css::accessibility::AccessibleRole::END_NOTE:
+            return IA2_ROLE_ENDNOTE;
+        case css::accessibility::AccessibleRole::FILE_CHOOSER:
+            return IA2_ROLE_FILE_CHOOSER;
+        case css::accessibility::AccessibleRole::FILLER:
+            return ROLE_SYSTEM_WHITESPACE;
+        case css::accessibility::AccessibleRole::FONT_CHOOSER:
+            return IA2_ROLE_FONT_CHOOSER;
+        case css::accessibility::AccessibleRole::FOOTER:
+            return IA2_ROLE_FOOTER;
+        case css::accessibility::AccessibleRole::FOOTNOTE:
+            return IA2_ROLE_FOOTNOTE;
+        case css::accessibility::AccessibleRole::FRAME:
+            return IA2_ROLE_FRAME;
+        case css::accessibility::AccessibleRole::GLASS_PANE:
+            return IA2_ROLE_GLASS_PANE;
+        case css::accessibility::AccessibleRole::GRAPHIC:
+            return ROLE_SYSTEM_GRAPHIC;
+        case css::accessibility::AccessibleRole::GROUP_BOX:
+            return ROLE_SYSTEM_GROUPING;
+        case css::accessibility::AccessibleRole::HEADER:
+            return IA2_ROLE_HEADER;
+        case css::accessibility::AccessibleRole::HEADING:
+            return IA2_ROLE_HEADING;
+        case css::accessibility::AccessibleRole::HYPER_LINK:
+            return ROLE_SYSTEM_TEXT;
+        case css::accessibility::AccessibleRole::ICON:
+            return IA2_ROLE_ICON;
+        case css::accessibility::AccessibleRole::INTERNAL_FRAME:
+            return IA2_ROLE_INTERNAL_FRAME;
+        case css::accessibility::AccessibleRole::LABEL:
+            return ROLE_SYSTEM_STATICTEXT;
+        case css::accessibility::AccessibleRole::LAYERED_PANE:
+            return IA2_ROLE_LAYERED_PANE;
+        case css::accessibility::AccessibleRole::LIST:
+            return ROLE_SYSTEM_LIST;
+        case css::accessibility::AccessibleRole::LIST_ITEM:
+            return ROLE_SYSTEM_LISTITEM;
+        case css::accessibility::AccessibleRole::MENU:
+            return ROLE_SYSTEM_MENUITEM;
+        case css::accessibility::AccessibleRole::MENU_BAR:
+            return ROLE_SYSTEM_MENUBAR;
+        case css::accessibility::AccessibleRole::MENU_ITEM:
+            return ROLE_SYSTEM_MENUITEM;
+        case css::accessibility::AccessibleRole::OPTION_PANE:
+            return IA2_ROLE_OPTION_PANE;
+        case css::accessibility::AccessibleRole::PAGE_TAB:
+            return ROLE_SYSTEM_PAGETAB;
+        case css::accessibility::AccessibleRole::PAGE_TAB_LIST:
+            return ROLE_SYSTEM_PAGETABLIST;
+        case css::accessibility::AccessibleRole::PANEL:
+            return IA2_ROLE_OPTION_PANE;
+        case css::accessibility::AccessibleRole::PARAGRAPH:
+            return IA2_ROLE_PARAGRAPH;
+        case css::accessibility::AccessibleRole::PASSWORD_TEXT:
+            return ROLE_SYSTEM_TEXT;
+        case css::accessibility::AccessibleRole::POPUP_MENU:
+            return ROLE_SYSTEM_MENUPOPUP;
+        case css::accessibility::AccessibleRole::PUSH_BUTTON:
+            return ROLE_SYSTEM_PUSHBUTTON;
+        case css::accessibility::AccessibleRole::PROGRESS_BAR:
+            return ROLE_SYSTEM_PROGRESSBAR;
+        case css::accessibility::AccessibleRole::RADIO_BUTTON:
+            return ROLE_SYSTEM_RADIOBUTTON;
+        case css::accessibility::AccessibleRole::RADIO_MENU_ITEM:
+            return IA2_ROLE_RADIO_MENU_ITEM;
+        case css::accessibility::AccessibleRole::ROW_HEADER:
+            return ROLE_SYSTEM_ROWHEADER;
+        case css::accessibility::AccessibleRole::ROOT_PANE:
+            return IA2_ROLE_ROOT_PANE;
+        case css::accessibility::AccessibleRole::SCROLL_BAR:
+            return ROLE_SYSTEM_SCROLLBAR;
+        case css::accessibility::AccessibleRole::SCROLL_PANE:
+            return IA2_ROLE_SCROLL_PANE;
+        case css::accessibility::AccessibleRole::SHAPE:
+            return IA2_ROLE_SHAPE;
+        case css::accessibility::AccessibleRole::SEPARATOR:
+            return ROLE_SYSTEM_SEPARATOR;
+        case css::accessibility::AccessibleRole::SLIDER:
+            return ROLE_SYSTEM_SLIDER;
+        case css::accessibility::AccessibleRole::SPIN_BOX:
+            return ROLE_SYSTEM_SPINBUTTON;
+        case css::accessibility::AccessibleRole::SPLIT_PANE:
+            return IA2_ROLE_SPLIT_PANE;
+        case css::accessibility::AccessibleRole::STATUS_BAR:
+            return ROLE_SYSTEM_STATUSBAR;
+        case css::accessibility::AccessibleRole::TABLE:
+            return ROLE_SYSTEM_TABLE;
+        case css::accessibility::AccessibleRole::TABLE_CELL:
+            return ROLE_SYSTEM_CELL;
+        case css::accessibility::AccessibleRole::TEXT:
+            return ROLE_SYSTEM_TEXT;
+        case css::accessibility::AccessibleRole::TEXT_FRAME:
+            return IA2_ROLE_TEXT_FRAME;
+        case css::accessibility::AccessibleRole::TOGGLE_BUTTON:
+            return ROLE_SYSTEM_PUSHBUTTON;
+        case css::accessibility::AccessibleRole::TOOL_BAR:
+            return ROLE_SYSTEM_TOOLBAR;
+        case css::accessibility::AccessibleRole::TOOL_TIP:
+            return ROLE_SYSTEM_TOOLTIP;
+        case css::accessibility::AccessibleRole::TREE:
+            return ROLE_SYSTEM_OUTLINE;
+        case css::accessibility::AccessibleRole::VIEW_PORT:
+            return IA2_ROLE_VIEW_PORT;
+        case css::accessibility::AccessibleRole::WINDOW:
+            return ROLE_SYSTEM_WINDOW;
+        case css::accessibility::AccessibleRole::BUTTON_DROPDOWN:
+            return ROLE_SYSTEM_BUTTONDROPDOWN;
+        case css::accessibility::AccessibleRole::BUTTON_MENU:
+            return  ROLE_SYSTEM_BUTTONMENU;
+        case css::accessibility::AccessibleRole::CAPTION:
+            return  IA2_ROLE_CAPTION;
+        case css::accessibility::AccessibleRole::CHART:
+            return  IA2_ROLE_SHAPE;
+        case css::accessibility::AccessibleRole::EDIT_BAR:
+            return  IA2_ROLE_EDITBAR;
+        case css::accessibility::AccessibleRole::FORM:
+            return  IA2_ROLE_FORM;
+        case css::accessibility::AccessibleRole::IMAGE_MAP:
+            return  IA2_ROLE_IMAGE_MAP;
+        case css::accessibility::AccessibleRole::NOTE:
+            return  IA2_ROLE_NOTE;
+        case css::accessibility::AccessibleRole::PAGE:
+            return  IA2_ROLE_PAGE;
+        case css::accessibility::AccessibleRole::RULER:
+            return  IA2_ROLE_RULER;
+        case css::accessibility::AccessibleRole::SECTION:
+            return  IA2_ROLE_SECTION;
+        case css::accessibility::AccessibleRole::TREE_ITEM:
+            return  ROLE_SYSTEM_OUTLINEITEM;
+        case css::accessibility::AccessibleRole::TREE_TABLE:
+            return  ROLE_SYSTEM_OUTLINE;
+        case css::accessibility::AccessibleRole::COMMENT:
+            return  IA2_ROLE_TEXT_FRAME;
+        case css::accessibility::AccessibleRole::COMMENT_END:
+            return  IA2_ROLE_TEXT_FRAME;
+        case css::accessibility::AccessibleRole::DOCUMENT_PRESENTATION:
+            return  ROLE_SYSTEM_DOCUMENT;
+        case css::accessibility::AccessibleRole::DOCUMENT_SPREADSHEET:
+            return  ROLE_SYSTEM_DOCUMENT;
+        case css::accessibility::AccessibleRole::DOCUMENT_TEXT:
+            return  ROLE_SYSTEM_DOCUMENT;
+        case css::accessibility::AccessibleRole::STATIC:
+            return  ROLE_SYSTEM_STATICTEXT;
+        case css::accessibility::AccessibleRole::NOTIFICATION:
+            return  ROLE_SYSTEM_ALERT;
+        default:
+            SAL_WARN("iacc2", "Unmapped role: " << nUnoRole);
+            return IA2_ROLE_UNKNOWN;
+    }
+}
+};
 
 
 /**
@@ -739,16 +837,11 @@ void AccObject::UpdateRole()
         return;
     }
 
-    XAccessibleContext* pContext  = m_xAccContextRef.get();
-    m_pIMAcc->Put_XAccRole( ROLE_SYSTEM_WINDOW  );
-    sal_Int16 iRoleIndex = pContext->getAccessibleRole();
-    if ((0 <= iRoleIndex) && (o3tl::make_unsigned(iRoleIndex) < 
SAL_N_ELEMENTS(ROLE_TABLE)))
-    {
-        short iIA2Role = ROLE_TABLE[iRoleIndex][1] ;
-        m_pIMAcc->Put_XAccRole( iIA2Role  );
-    }
-
+    const sal_Int16 nUnoRole = m_xAccContextRef->getAccessibleRole();
+    short nIA2Role = lcl_mapToIAccessible2Role(nUnoRole);
+    m_pIMAcc->Put_XAccRole(nIA2Role);
 }
+
 /**
    * update state information from uno to com
    * @param
commit 0775ae4dec529505e1d108b2806f90040721e054
Author:     Michael Weghorn <[email protected]>
AuthorDate: Fri Oct 27 14:15:43 2023 +0200
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Oct 28 05:44:57 2023 +0200

    gtk4 a11y: Map more a11y roles to gtk equivalents
    
    Most of these have a direct match in Gtk, the others
    are fairly similar.
    
    Helpful:
    https: //w3c.github.io/core-aam/#mapping_role
    
    Change-Id: I1575943dc44b6c41a54d35eaef0e8afdf64d1bc3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158566
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/vcl/unx/gtk4/a11y.cxx b/vcl/unx/gtk4/a11y.cxx
index bf149f2ac083..51c055bca186 100644
--- a/vcl/unx/gtk4/a11y.cxx
+++ b/vcl/unx/gtk4/a11y.cxx
@@ -48,6 +48,36 @@ map_accessible_role(const 
css::uno::Reference<css::accessibility::XAccessible>&
         // 
https://gitlab.gnome.org/GNOME/gtk/-/blob/main/gtk/a11y/gtkatspiutils.c
         switch (xContext->getAccessibleRole())
         {
+            case css::accessibility::AccessibleRole::ALERT:
+            case css::accessibility::AccessibleRole::NOTIFICATION:
+                eRole = GTK_ACCESSIBLE_ROLE_ALERT;
+                break;
+            case css::accessibility::AccessibleRole::CAPTION:
+                eRole = GTK_ACCESSIBLE_ROLE_CAPTION;
+                break;
+            case css::accessibility::AccessibleRole::COLUMN_HEADER:
+                eRole = GTK_ACCESSIBLE_ROLE_COLUMN_HEADER;
+                break;
+            case css::accessibility::AccessibleRole::COMBO_BOX:
+                eRole = GTK_ACCESSIBLE_ROLE_COMBO_BOX;
+                break;
+            case css::accessibility::AccessibleRole::DIALOG:
+            case css::accessibility::AccessibleRole::FILE_CHOOSER:
+                eRole = GTK_ACCESSIBLE_ROLE_DIALOG;
+                break;
+            case css::accessibility::AccessibleRole::FOOTNOTE:
+            case css::accessibility::AccessibleRole::NOTE:
+                eRole = GTK_ACCESSIBLE_ROLE_NOTE;
+                break;
+            case css::accessibility::AccessibleRole::FORM:
+                eRole = GTK_ACCESSIBLE_ROLE_FORM;
+                break;
+            case css::accessibility::AccessibleRole::HEADING:
+                eRole = GTK_ACCESSIBLE_ROLE_HEADING;
+                break;
+            case css::accessibility::AccessibleRole::HYPER_LINK:
+                eRole = GTK_ACCESSIBLE_ROLE_LINK;
+                break;
             case css::accessibility::AccessibleRole::PANEL:
                 eRole = GTK_ACCESSIBLE_ROLE_GROUP;
                 break;
@@ -61,6 +91,7 @@ map_accessible_role(const 
css::uno::Reference<css::accessibility::XAccessible>&
                 eRole = GTK_ACCESSIBLE_ROLE_STATUS;
                 break;
             case css::accessibility::AccessibleRole::MENU:
+            case css::accessibility::AccessibleRole::POPUP_MENU:
                 eRole = GTK_ACCESSIBLE_ROLE_MENU;
                 break;
             case css::accessibility::AccessibleRole::SPLIT_PANE:
@@ -70,8 +101,15 @@ map_accessible_role(const 
css::uno::Reference<css::accessibility::XAccessible>&
                 eRole = GTK_ACCESSIBLE_ROLE_TOOLBAR;
                 break;
             case css::accessibility::AccessibleRole::LABEL:
+            case css::accessibility::AccessibleRole::STATIC:
                 eRole = GTK_ACCESSIBLE_ROLE_LABEL;
                 break;
+            case css::accessibility::AccessibleRole::LIST:
+                eRole = GTK_ACCESSIBLE_ROLE_LIST;
+                break;
+            case css::accessibility::AccessibleRole::LIST_ITEM:
+                eRole = GTK_ACCESSIBLE_ROLE_LIST_ITEM;
+                break;
             case css::accessibility::AccessibleRole::MENU_ITEM:
                 eRole = GTK_ACCESSIBLE_ROLE_MENU_ITEM;
                 break;
@@ -93,6 +131,9 @@ map_accessible_role(const 
css::uno::Reference<css::accessibility::XAccessible>&
             case css::accessibility::AccessibleRole::DOCUMENT_TEXT:
                 eRole = GTK_ACCESSIBLE_ROLE_DOCUMENT;
                 break;
+            case css::accessibility::AccessibleRole::ROW_HEADER:
+                eRole = GTK_ACCESSIBLE_ROLE_ROW_HEADER;
+                break;
             case css::accessibility::AccessibleRole::RULER:
                 eRole = GTK_ACCESSIBLE_ROLE_WIDGET;
                 break;
@@ -107,9 +148,8 @@ map_accessible_role(const 
css::uno::Reference<css::accessibility::XAccessible>&
                 eRole = GTK_ACCESSIBLE_ROLE_GENERIC;
                 break;
             case css::accessibility::AccessibleRole::PUSH_BUTTON:
-                eRole = GTK_ACCESSIBLE_ROLE_BUTTON;
-                break;
             case css::accessibility::AccessibleRole::BUTTON_DROPDOWN:
+            case css::accessibility::AccessibleRole::BUTTON_MENU:
                 eRole = GTK_ACCESSIBLE_ROLE_BUTTON;
                 break;
             case css::accessibility::AccessibleRole::TOGGLE_BUTTON:
@@ -121,13 +161,45 @@ map_accessible_role(const 
css::uno::Reference<css::accessibility::XAccessible>&
             case css::accessibility::AccessibleRole::TABLE_CELL:
                 eRole = GTK_ACCESSIBLE_ROLE_CELL;
                 break;
+            case css::accessibility::AccessibleRole::PAGE_TAB:
+                eRole = GTK_ACCESSIBLE_ROLE_TAB;
+                break;
             case css::accessibility::AccessibleRole::PAGE_TAB_LIST:
                 eRole = GTK_ACCESSIBLE_ROLE_TAB_LIST;
                 break;
-            case css::accessibility::AccessibleRole::SHAPE:
-                eRole = GTK_ACCESSIBLE_ROLE_IMG;
+            case css::accessibility::AccessibleRole::PROGRESS_BAR:
+                eRole = GTK_ACCESSIBLE_ROLE_PROGRESS_BAR;
+                break;
+            case css::accessibility::AccessibleRole::RADIO_BUTTON:
+                eRole = GTK_ACCESSIBLE_ROLE_RADIO;
+                break;
+            case css::accessibility::AccessibleRole::SCROLL_BAR:
+                eRole = GTK_ACCESSIBLE_ROLE_SCROLLBAR;
+                break;
+            case css::accessibility::AccessibleRole::SLIDER:
+                eRole = GTK_ACCESSIBLE_ROLE_SLIDER;
+                break;
+            case css::accessibility::AccessibleRole::SPIN_BOX:
+                eRole = GTK_ACCESSIBLE_ROLE_SPIN_BUTTON;
+                break;
+            case css::accessibility::AccessibleRole::TEXT:
+                eRole = GTK_ACCESSIBLE_ROLE_TEXT_BOX;
+                break;
+            case css::accessibility::AccessibleRole::TOOL_TIP:
+                eRole = GTK_ACCESSIBLE_ROLE_TOOLTIP;
+                break;
+            case css::accessibility::AccessibleRole::TREE:
+                eRole = GTK_ACCESSIBLE_ROLE_TREE;
+                break;
+            case css::accessibility::AccessibleRole::TREE_ITEM:
+                eRole = GTK_ACCESSIBLE_ROLE_TREE_ITEM;
+                break;
+            case css::accessibility::AccessibleRole::TREE_TABLE:
+                eRole = GTK_ACCESSIBLE_ROLE_TREE_GRID;
                 break;
             case css::accessibility::AccessibleRole::GRAPHIC:
+            case css::accessibility::AccessibleRole::ICON:
+            case css::accessibility::AccessibleRole::SHAPE:
                 eRole = GTK_ACCESSIBLE_ROLE_IMG;
                 break;
             default:

Reply via email to