Jump to content

Accessibility/qt-atspi: Difference between revisions

From KDE Community Wiki
Frederik (talk | contribs)
Frederik (talk | contribs)
Line 47: Line 47:
* text attributes (bold etc)
* text attributes (bold etc)
* tabs
* tabs
=== Memory Management ===
Qt's current QAccessibleInterface is a pain to deal with.
* We can only (safely?) hold on to interfaces created by navigate or queryInterface
* Interfaces that we get through notifyAccessibility are deleted by Qt behind our back, so we need to never keep those around (Frederik will try to fix that now)

Revision as of 13:12, 4 March 2011

Qt AT-SPI 2 Bridge

Info

This is about the Qt AT-SPI 2 bridge. The bridge is a Qt Accessibility plugin that exposes the internals of a Qt application to interested accessibility clients such as screenreaders.

AT-SPI on D-Bus at Linuxfoundation

The source code for the bridge can be found here: Qt AT-SPI on gitorious

Tools

With the Gnome efforts to implement AT-SPI 2 we have some really helpful tools:

Accerciser accerciser manual

Orca Orca Debugging

Tutorial on techbase

Python

Testing/Development

You need a very recent environment, most notably: pyatspi2, at-spi2-core and at-spi2-atk

Inside a Gnome session the a11y uses a dedicated d-bus. So if you want to monitor what is going on, you should use: dbus-monitor --address `xprop -root | grep AT_SPI_BUS | sed -e 's/.*= "//' | sed -e 's/"$//'`

Todo

  • Complex widgets with children? Tabs... clicking on a file in qgit (crash fix committed, but still needs proper fix)

GetApplicationBusAddress seems not defined in the xml but is actually called mgorse: That ought to be defined in the xml. It is used to try to set up a direct dbus connection between libatspi and the application. libatspi will revert to using the session bus if it returns an empty string or an error

  • don't pretend to be gail, coordinate with orca devels
  • Application::Id is read/write - implement properly
  • Test apps with >1 window
  • Make special keys for Orca work (flat review)
  • When do we need to create component?
  • why do menus not get actions?
  • DEC: for flat review, get it to work
  • scroll bars have value interface but don't update and cannot be updated
  • text attributes (bold etc)
  • tabs

Memory Management

Qt's current QAccessibleInterface is a pain to deal with.

  • We can only (safely?) hold on to interfaces created by navigate or queryInterface
  • Interfaces that we get through notifyAccessibility are deleted by Qt behind our back, so we need to never keep those around (Frederik will try to fix that now)