Accessibility/qt-atspi: Difference between revisions
(→Todo) |
(Old content) |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Note|This page has old content. See page history.}} | |||
= Qt AT-SPI 2 Bridge = | = Qt AT-SPI 2 Bridge = | ||
Line 30: | Line 32: | ||
== Todo == | == Todo == | ||
* Complex widgets with children? Tabs... clicking on a file in qgit (crash fix committed, but still needs proper fix) | * 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 | 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 | 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 | |||
* fix action for menus inside qt | |||
* scroll bars have value interface but don't update and cannot be updated, value interface in general | |||
* text attributes (bold etc) | |||
* tabs | |||
=== Widgets === | |||
* Combobox | |||
* List | |||
* Tree | |||
* Table | |||
* Spinner | |||
* Scrollbar | |||
=== KDE Widgets === | |||
{| border="1" | |||
|'''Widget''' | |||
|'''Status''' | |||
|- | |||
|ExampleWidget1 | |||
|Ready. | |||
|- | |||
|ExampleWidget2 | |||
|Mostly done, still needs fooBar() call. | |||
|- | |||
|KCharSelect | |||
|Unknown | |||
|- | |||
|KColorButton | |||
|Unknown | |||
|- | |||
|KColorCombo | |||
|Unknown | |||
|- | |||
|KComboBox | |||
|Unknown | |||
|- | |||
|KCModule | |||
|Unknown | |||
|- | |||
|KDateWidget | |||
|Unknown | |||
|- | |||
|KDatePicker | |||
|Unknown | |||
|- | |||
|KDialog | |||
|Unknown | |||
|- | |||
|KEditListBox | |||
|Unknown | |||
|- | |||
|KFontComboBox | |||
|Unknown | |||
|- | |||
|KFontChooser | |||
|Unknown | |||
|- | |||
|KFontRequester | |||
|Unknown | |||
|- | |||
|KGradientSelector | |||
|Unknown | |||
|- | |||
|KHistoryComboBox | |||
|Unknown | |||
|- | |||
|KHueSaturationSelector | |||
|Unknown | |||
|- | |||
|KHtmlView | |||
|Unknown | |||
|- | |||
|KLed | |||
|Unknown | |||
|- | |||
|KListWidget | |||
|Unknown | |||
|- | |||
|KLineEdit | |||
|Unknown | |||
|- | |||
|KPushButton | |||
|Unknown | |||
|- | |||
|KRestrictedLine | |||
|Unknown | |||
|- | |||
|KIntSpinBox | |||
|Unknown | |||
|- | |||
|KRuler | |||
|Unknown | |||
|- | |||
|KSqueezedTextLabel | |||
|Unknown | |||
|- | |||
|KTextBrowser | |||
|Unknown | |||
|- | |||
|KTextEdit | |||
|Unknown | |||
|- | |||
|KURLLabel | |||
|Unknown | |||
|- | |||
|KURLComboRequester | |||
|Unknown | |||
|- | |||
|KURLRequester | |||
|Unknown | |||
|- | |||
|KIntNumInput | |||
|Unknown | |||
|- | |||
|KDoubleNumInput | |||
|Unknown | |||
|- | |||
|KDateTimeWidget | |||
|Unknown | |||
|- | |||
|KDateTable | |||
|Unknown | |||
|} | |||
=== 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) |
Latest revision as of 04:24, 17 December 2022
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
- fix action for menus inside qt
- scroll bars have value interface but don't update and cannot be updated, value interface in general
- text attributes (bold etc)
- tabs
Widgets
- Combobox
- List
- Tree
- Table
- Spinner
- Scrollbar
KDE Widgets
Widget | Status |
ExampleWidget1 | Ready. |
ExampleWidget2 | Mostly done, still needs fooBar() call. |
KCharSelect | Unknown |
KColorButton | Unknown |
KColorCombo | Unknown |
KComboBox | Unknown |
KCModule | Unknown |
KDateWidget | Unknown |
KDatePicker | Unknown |
KDialog | Unknown |
KEditListBox | Unknown |
KFontComboBox | Unknown |
KFontChooser | Unknown |
KFontRequester | Unknown |
KGradientSelector | Unknown |
KHistoryComboBox | Unknown |
KHueSaturationSelector | Unknown |
KHtmlView | Unknown |
KLed | Unknown |
KListWidget | Unknown |
KLineEdit | Unknown |
KPushButton | Unknown |
KRestrictedLine | Unknown |
KIntSpinBox | Unknown |
KRuler | Unknown |
KSqueezedTextLabel | Unknown |
KTextBrowser | Unknown |
KTextEdit | Unknown |
KURLLabel | Unknown |
KURLComboRequester | Unknown |
KURLRequester | Unknown |
KIntNumInput | Unknown |
KDoubleNumInput | Unknown |
KDateTimeWidget | Unknown |
KDateTable | Unknown |
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)