Missing state-changed:checked events for toggling state of one-click search engine in Nightly
Categories
(Firefox :: Disability Access, defect, P3)
Tracking
()
People
(Reporter: jdiggs, Unassigned, Mentored)
References
(Blocks 3 open bugs)
Details
(Whiteboard: [lang=c++])
Attachments
(1 file)
(deleted),
text/x-python
|
Details |
Steps to reproduce:
- Launch Nightly and navigate to about:preferences#search
- Move focus to the list of one-click search engines (the list where you can toggle a given engine with the space bar)
- Launch the attached pyatspi accessible-event listener
- Use space to toggle the checkbox for a given search engine
- Up/Down Arrow to a different search engine
- Use space to toggle the checkbox for that newly selected search engine
Expected results: Events would be printed out by the listener for two different occurrences:
- When the selected item changes
- When the checkbox appears/disappears
Actual results: Events are only printed out by the listener when the selected item changes.
Note that the table cell which displays the checkmark exposes state checkable in the accessible state set, and if the checkmark is present the cell also has state checked in its state set. Thus the only thing which appears missing is emitting the state change events to let Orca know when that checked state has been toggled.
Comment 1•5 years ago
|
||
The things which actually get focus in that table are the rows. The checkable cells are children of those rows, but aren't themselves focusable. Will Orca report a state change on the cell even though the row is what has focus?
Reporter | ||
Comment 2•5 years ago
|
||
It might not do so yet, but if you make this change and it doesn't, I can update Orca to handle this particular case.
Comment 3•5 years ago
|
||
Implementation note: This is going to be a bit tricky to fix. The Accessibles for XUL tree rows and cells don't correspond to actual Elements. Instead, they're all backed by the tree Element and they use the nsITreeView interface to query for cell values, etc. So, we can't just watch for events from an Element.
I think we're going to need to fire a custom event on the tree Element when the value changes, including the row and column numbers as properties on the event. A11y can catch this and fire the event on the appropriate cell Accessible. I think we could fire this here:
https://searchfox.org/mozilla-central/rev/29cce9a2684ef64c4f1f996087da8b7545d31f65/toolkit/content/widgets/tree.js#62
See RootAccessible::HandleTreeRowCountChangedEvent for an example of getting properties out of an event:
https://searchfox.org/mozilla-central/rev/29cce9a2684ef64c4f1f996087da8b7545d31f65/accessible/generic/RootAccessible.cpp#635
Updated•5 years ago
|
Updated•2 years ago
|
Description
•