Skip to content

Calling atspi_accessible_get_parent() on the application should return the accessible desktop; not null #742

Description

@joanmarie

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions