According to this issue filed against Orca, some (all?) AccessKit applications are not returning the accessible desktop when atspi_accessible_get_parent() is called on the application object. They should be.
The AT-SPI desktop claims running applications as its children. When a parent says an accessible object is its child, that child needs to report that parent as its parent.
The reason this was only just now discovered is that last month I (Orca maintainer) made a change in Orca designed to improve performance. For every accessible event, Orca has to check if the application is known to AT-SPI. That was motivated by two things: Receiving events for applications right before they were quit/terminated, and some weird Gecko issues. Until last month, the way Orca used to do this was to iterate through all of the children of the AT-SPI desktop to see if the application in question was there. This increases the perceived lagginess in Orca responding to events. Therefore, last month I changed the check to see if the parent of the app was the desktop. This is way more performant. But it breaks in cases where the application fails to report the accessible desktop as its parent.
Some "whitelisting" has since been added based on the reported toolkit with the failure. This whitelisting is meant to be temporary, and removed when the toolkit implementing AT-SPI has fixed the failure. Unfortunately, it seems that AccessKit isn't reporting a toolkit, so that temporary whitelisting isn't possible.
I really, really do not want to add a global, non-performant fallback for this. And applications that do not require this fallback have their accessible events processed much more quickly and seem less laggy. So if AccessKit could return the accessible desktop when get_parent() is called on the application, it would make things better for all our users.
Thanks in advance!
According to this issue filed against Orca, some (all?) AccessKit applications are not returning the accessible desktop when
atspi_accessible_get_parent()is called on the application object. They should be.The AT-SPI desktop claims running applications as its children. When a parent says an accessible object is its child, that child needs to report that parent as its parent.
The reason this was only just now discovered is that last month I (Orca maintainer) made a change in Orca designed to improve performance. For every accessible event, Orca has to check if the application is known to AT-SPI. That was motivated by two things: Receiving events for applications right before they were quit/terminated, and some weird Gecko issues. Until last month, the way Orca used to do this was to iterate through all of the children of the AT-SPI desktop to see if the application in question was there. This increases the perceived lagginess in Orca responding to events. Therefore, last month I changed the check to see if the parent of the app was the desktop. This is way more performant. But it breaks in cases where the application fails to report the accessible desktop as its parent.
Some "whitelisting" has since been added based on the reported toolkit with the failure. This whitelisting is meant to be temporary, and removed when the toolkit implementing AT-SPI has fixed the failure. Unfortunately, it seems that AccessKit isn't reporting a toolkit, so that temporary whitelisting isn't possible.
I really, really do not want to add a global, non-performant fallback for this. And applications that do not require this fallback have their accessible events processed much more quickly and seem less laggy. So if AccessKit could return the accessible desktop when
get_parent()is called on the application, it would make things better for all our users.Thanks in advance!