a11y: Set ATSPI_STATE_SHOWING for all widgets, not only for windows

According to the at-spi2 docs, for a widget to be considered visible,
it needs both the showing and visible states. Many applications rely on that,
for example the flat review functionality of Orca.

this fixes #5194
This commit is contained in:
Lukáš Tyrychtr 2023-03-28 15:07:03 +02:00
parent 435bc70886
commit 878b80806e

View File

@ -142,10 +142,10 @@ collect_states (GtkAtSpiContext *self,
accessible = gtk_at_context_get_accessible (ctx);
set_atspi_state (&states, ATSPI_STATE_VISIBLE);
set_atspi_state (&states, ATSPI_STATE_SHOWING);
if (ctx->accessible_role == GTK_ACCESSIBLE_ROLE_WINDOW)
{
set_atspi_state (&states, ATSPI_STATE_SHOWING);
if (gtk_accessible_get_platform_state (accessible, GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE))
set_atspi_state (&states, ATSPI_STATE_ACTIVE);
}
@ -928,6 +928,7 @@ gtk_at_spi_context_state_change (GtkATContext *ctx,
{
gtk_at_spi_root_child_changed (self->root, change, accessible);
emit_state_changed (self, "showing", gtk_boolean_accessible_value_get (value));
emit_state_changed (self, "visible", gtk_boolean_accessible_value_get (value));
}
else
{