GNOME Bugzilla – Bug 616582
Objects which issue object:active-descendant-changed should have STATE_MANAGES_DESCENDANTS
Last modified: 2021-05-17 15:39:37 UTC
Steps to reproduce: 1. Launch SwingSet2's Tree Demo and Accerciser 2. Arrow Up and Down in the Tree Demo while monitoring object:active-descendant-changed events using Accerciser 3. Examine the state of the Tree to see if its state set includes STATE_MANAGES_DESCENDANTS Expected results: If the tree issues object:active-descendant-changed events, its state set would include STATE_MANAGES_DESCENDANTS Actual results: The tree does issue object:active-descendant-changed events, but its state set lacks STATE_MANAGES_DESCENDANTS Impact: Orca processes the event. It also processes the object:state-changed:selected event that results. Because we cannot count on events always coming in the "right"/same order from an app, we decide if an object:state-changed:selected event should be processed or ignored based upon whether or not STATE_MANAGES_DESCENDANTS is present. The fact that it's missing is causing Orca to speak way too much and incorrectly set the locusOfFocus.
[Resetting QA Contact to newly introduced "at-spi-maint@gnome.bugs". Reason: So far it was impossible to watch changes in at-spi bug reports without following all the specific persons (Li Yuan, Bill Haneman, Jeff Wai, ...) and also their activity outside of at-spi reports. IMPORTANT: Anyone interested in following all bug activity (including all maintainers) must watch the "at-spi-maint@gnome.bugs" dummy user by adding it to the 'Users to watch' list under Preferences->Email preferences. This is also the default procedure nowadays in GNOME when setting up new products.]
[Mass-resetting default assignee, see bug 705890. Please reclaim this bug report by setting the assignee to yourself if you still plan to work on this. Thanks!]
[Moving at-spi/java-atk-wrapper bugs to separate product. See bug 740075]
(In reply to Joanmarie Diggs (IRC: joanie) from comment #0) > Steps to reproduce: > > 1. Launch SwingSet2's Tree Demo and Accerciser > > 2. Arrow Up and Down in the Tree Demo while monitoring > object:active-descendant-changed events using Accerciser > > 3. Examine the state of the Tree to see if its state set includes > STATE_MANAGES_DESCENDANTS > > Expected results: If the tree issues object:active-descendant-changed > events, its state set would include STATE_MANAGES_DESCENDANTS > > Actual results: The tree does issue object:active-descendant-changed events, > but its state set lacks STATE_MANAGES_DESCENDANTS > > Impact: Orca processes the event. It also processes the > object:state-changed:selected event that results. Because we cannot count on > events always coming in the "right"/same order from an app, we decide if an > object:state-changed:selected event should be processed or ignored based > upon whether or not STATE_MANAGES_DESCENDANTS is present. The fact that it's > missing is causing Orca to speak way too much and incorrectly set the > locusOfFocus. This is still a problem. The JAAPI widgets which trigger this do not have this state in their stateset. I have been working on a “fix” and what I have come up with so far solves the problem but in such a way I don’t think is right, it currently: adds manages descendants to the java stateset emits a state change:: manages descendants (don't think it should need to do this?) emits object:active-descendant-changed [number of descendants] That allows me to see the widget has the state but the emit_signal handler in AtkWrapper reports jaw_impl as null and from comparing the output to the gtk3-demo I think that's not right. It seems like it would be best to figure out a way of going about this which doesn’t rely on emitting a state_change::manages_descendants after adding the state to the state set and I expect that doing this should also address the problem (which I think) that presents in the emit_signal handler. However, I am not sure how to best go about that yet and also wondering whether there is an important reason why the JAAPI widget changes which trigger the emission of this property signal emitted, don’t already have this in their state-set, since I would have expected them to have that (JAAPI does have that state so it would be possible, just that those widgets don’t seem to have it by default) Anyway, thanks a lot for reporting this and explaining the problem. It seems like an important one to solve and I am glad progress has been made in that now, at least! I had hoped to get something in (- and the menu bug will update that in a second) before releasing, but since it’s already a few days overdue, I think it’s best to seek feedback from you (and probably cc Pete to check with him about the JAAPI end) to make sure this is done right and that the this release isn’t too hack! I’ll upload the output from some java prints in a big and a modified python script for testing is on github.[1] Thanks again! [1] https://github.com/thisMagpie/tools/blob/master/bin/print_toolkit_events.py
Here's the gtk3-demo output mentioned earlier. I just spotted some changes have been made to the test script which weren't pushed yet so I'll do that presently. [gtk3-demo] ~ [table cell] ==> [object:state-changed:active:0 0] [gtk3-demo] ~ [table cell] ==> [object:state-changed:focused:0 0] [gtk3-demo] ~ [table cell] ==> [object:state-changed:selected:0 0] contains pyatspi.STATE_MANAGES_DESCENDANTS [gtk3-demo] ~ [tree table] ==> [object:selection-changed:0 0] [gtk3-demo] ~ [table cell] ==> [object:state-changed:selected:1 0] contains pyatspi.STATE_MANAGES_DESCENDANTS [gtk3-demo] ~ [tree table] ==> [object:selection-changed:0 0] [gtk3-demo] ~ [frame] ==> [object:property-change:accessible-name:0 0] [gtk3-demo] ~ [table cell] ==> [object:state-changed:active:1 0] [gtk3-demo] ~ [table cell] ==> [object:state-changed:focused:1 0] contains pyatspi.STATE_MANAGES_DESCENDANTS [gtk3-demo] ~ [tree table] ==> [object:active-descendant-changed:41 0] [gtk3-demo] ~ [frame] ==> [window:deactivate:0 0] contains pyatspi.STATE_MANAGES_DESCENDANTS [gtk3-demo] ~ [tree table] ==> [object:state-changed:focused:0 0] [gtk3-demo] ~ [frame] ==> [object:state-changed:active:0 0]
-- GitLab Migration Automatic Message -- This bug has been migrated to GNOME's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/java-atk-wrapper/-/issues/9.