Wayland Migration: Getting the Z-Order of Top-Level Windows

Piñeiro <[email protected]> Tue, 15 Oct 2013 14:58:32 +0100
Newsgroups gmane.comp.gnome.accessibility.devel
Message-ID <[email protected]>
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 ([email protected])
_______________________________________________
gnome-accessibility-devel mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel