Skip to content

GtkPlug/Socket: add accessibility support

Samuel Thibault requested to merge sthibaul/gtk:socketplug into gtk-3-24

When a plug is embedded in a socket, we need to also plug the at-spi tree, so that screen readers can find the at-spi content of the plugged widgets.

This change does this plugging automatically: on the plug widget, an additional _XEMBED_AT_SPI_PATH property is set to provide the at-spi path (just like we have _XEMBED_INFO for other X11 information), and when embedding it, the socket reads it, and makes it as its only child.

Since GtkPlugAccessible can not inherit both from AtkPlug (a child of AtkObject) and from GtkContainerAccessible (a child of AtkObject), we actually make GtkPlugAccessible a child of an AtkPlug, and that's what will be embedded (in at-spi terms) into an AtkSocket.

Similarly, GtkSocketAccessible can not inherit both from AtkSocket and GtkContainerAccessible, so we make it a parent of the AtkSocket that embeds the AtkPlug.

This change depends on atk 2.35.1 which implements the at-spi technical details.

Merge request reports