Accessibility/qt-atspi: Difference between revisions
Line 41: | Line 41: | ||
* When do we need to create component? | * When do we need to create component? | ||
* why do menus not get actions? | * why do menus not get actions? | ||
* scroll bars have value interface but don't update and cannot be updated | * scroll bars have value interface but don't update and cannot be updated | ||
* text attributes (bold etc) | * text attributes (bold etc) |
Revision as of 15:16, 24 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
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
- Test apps with >1 window
- When do we need to create component?
- why do menus not get actions?
- 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)