Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-104793

a11y: AT-SPI TableCell interface not supported/exposed

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P3: Somewhat important
    • 6.5.0 Beta1
    • 6.4.0 Beta1
    • None
    • Debian testing with qtbase self-compiled from the dev branch as of commit 8bf9769d545234b1c654f82a77761c2e5f780f33 and LibreOffice built from its master branch as of commit e4066a41406b1ddd454901b4fa718cf9be2746c4
    • Linux/X11
    • 5145d3899d (qt/qtbase/dev) 5145d3899d (qt/tqtc-qtbase/dev)

    Description

      Currently, Qt does not support the AT-SPI TableCell interface for objects implementing QAccessibleTableCellInterface, even if QAccessibleTableCellInterface already has everything it would need to support the methods of the AT-SPI interface. I ran into this while improving support for the Qt 6 based LibreOffice UI, so the following demo uses that.

      Steps to reproduce:

      1) start LibreOffice Calc (current master as of commit e4066a41406b1ddd454901b4fa718cf9be2746c4, compiled with the `--enable-qt6` switch) with so-called the "qt6" VCL plugin (i.e. Qt 6 integration) on Linux

          SAL_USE_VCLPLUGIN=qt6 ./instdir/program/soffice.bin --calc

      2) start "Accerciser" (tool for analysis of accessibility objects)
      3) navigate to a Calc cell in Accerciser's a11y tree, e.g. D1
      4) use Accerciser's IPython console to list the currently implemented AT-SPI interfaces and try to retrieve the table cell interface, which currently fails (commands and output at the bottom)

      Actual result:

      The list of interfaces does not contain the AT-SPI TableCell interface, even though this is a table cell and LibreOffice implements the `QAccessibleTableCellInterface` for the underlying a11y object.

      Expected result:

      The list of interfaces should contain the AT-SPI TableCell interface, and it should be possible to call methods on that interface.

       

      In [3]: acc.get_interfaces()
      Out[4]: ['Accessible', 'Action', 'Component', 'Text', 'Value']
      In [4]: acc.queryTableCell()
      ---------------------------------------------------------------------------
      NotImplementedError Traceback (most recent call last)
      /usr/lib/python3/dist-packages/pyatspi/_init_.py in <module>
      ----> 1 acc.queryTableCell()/usr/lib/python3/dist-packages/pyatspi/Accessibility.py in <lambda>
      {{ 151 Atspi.Accessible.querySelection = lambda x: Selection(getInterface(Atspi.Accessible.get_selection_iface, x))}}
      {{ 152 Atspi.Accessible.queryTable = lambda x: Table(getInterface(Atspi.Accessible.get_table_iface, x))}}
      --> 153 Atspi.Accessible.queryTableCell = lambda x: TableCell(getInterface(Atspi.Accessible.get_table_cell, x))
      {{ 154 Atspi.Accessible.queryText = lambda x: Text(getInterface(Atspi.Accessible.get_text_iface, x))}}
      {{ 155 Atspi.Accessible.queryValue = lambda x: Value(getInterface(Atspi.Accessible.get_value_iface, x))}}/usr/lib/python3/dist-packages/pyatspi/Accessibility.py in getInterface(func, obj)
      {{ 66 if ret:}}
      {{ 67 return ret}}
      ---> 68 raise NotImplementedError
      {{ 69 }}
      {{ 70 def getEventType(event):}}{{NotImplementedError: }}
      In [5]:

       

       

       

      Attachments

        For Gerrit Dashboard: QTBUG-104793
        # Subject Branch Project Status CR V

        Activity

          People

            smd Jan Arve
            michaelweghorn Michael Weghorn
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes