[g-a-devel] Wayland Migration: Getting the Z-Order of Top-Level Windows



Hi all.

One of the things we need to sort out as part of the Wayland migration is how to get the z-order of accessible windows. The primary reason Assistive Technologies have a need for this is to be able to get the accessible object at a given point in an environment in which there might be multiple accessible objects at that point in different windows/layers. (ATs care about the topmost object in the stack.)

The way we have been handling this situation up to now is via libwnck's wnck_screen_get_windows_stacked(). In our brave new Wayland world, we'll lose this solution. That's the bad news. The good news is that we have existing accessibility API in place that we feel ATK implementors could use to expose this information [1]:

    gint atk_component_get_mdi_zorder (AtkComponent *component);

    Gets the zorder of the component. The value G_MININT
    will be returned if the layer of the component is not
    ATK_LAYER_MDI or ATK_LAYER_WINDOW.

The question is: Where (by whom) should this be implemented? We have some initial thoughts on this:

1. Application toolkits should implement atk_component_get_mdi_zorder() for non-top-level windows. This is because the existing API [1] expects a return value that is relative to other components in the same container. Then AT-SPI2 would pass the z-order along to ATs through atspi_component_get_mdi_z_order(). [2]

2. For top-level windows, it becomes a bit trickier. During the Montreal Summit, Matthias suggested we could potentially get the information we've been getting from libwnck in X by adding new API to Mutter/Wayland. But upon further reflection we concluded that would not be sufficient. At least in the case of Orca and its users, we cannot assume Mutter (or X, or Wayland): Orca is being used in Unity, XFCE, and LXDE in addition to GNOME Shell.

For this reason, we think the best way forward is for the toolkits to also implement atk_component_get_mdi_zorder() for top-level windows, as the toolkits know which environment (X, Wayland) they are in. In order for this to work, that new API on Mutter/Wayland would need to be available to those toolkits. But as we didn't get into too much detail during the Summit, we are not sure if that is possible. Is it? Other thoughts?

Best regards,
--Piñeiro and Joanie

p.s. Tuesday and Wednesday are travel days for us. Apologies in advance for any "delayed" responses.

[1] https://developer.gnome.org/atk/unstable/AtkComponent.html#atk-component-get-mdi-zorder [2] https://developer.gnome.org/libatspi/2.10/libatspi-atspi-component.html#atspi-component-get-mdi-z-order


--
Alejandro Piñeiro Iglesias (apinheiro igalia com)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]