widget: Fix accessible hidden state
authorMatthias Clasen <mclasen@redhat.com>
Tue, 20 Jun 2023 14:40:12 +0000 (10:40 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 20 Jun 2023 14:40:12 +0000 (10:40 -0400)
Make this track the widgets' mapped state
instead of visible. Also, set hidden to FALSE
initially, since the accessible name computation
checks for hidden==FALSE.

gtk/gtkwidget.c

index 4f0b1f0be9a2191ce485c77d053b0db21cae6844..e8225cdbbf9a3c5d40265ddc3ca4d9fb5d2246e8 100644 (file)
@@ -2380,6 +2380,10 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
     }
 
   priv->at_context = create_at_context (widget);
+
+  gtk_accessible_update_state (GTK_ACCESSIBLE (widget),
+                               GTK_ACCESSIBLE_STATE_HIDDEN, TRUE,
+                               -1);
 }
 
 static void
@@ -2708,10 +2712,6 @@ gtk_widget_show (GtkWidget *widget)
       g_signal_emit (widget, widget_signals[SHOW], 0);
       g_object_notify_by_pspec (G_OBJECT (widget), widget_props[PROP_VISIBLE]);
 
-      gtk_accessible_update_state (GTK_ACCESSIBLE (widget),
-                                   GTK_ACCESSIBLE_STATE_HIDDEN, FALSE,
-                                   -1);
-
       gtk_widget_pop_verify_invariants (widget);
       g_object_unref (widget);
     }
@@ -2775,10 +2775,6 @@ gtk_widget_hide (GtkWidget *widget)
       g_signal_emit (widget, widget_signals[HIDE], 0);
       g_object_notify_by_pspec (G_OBJECT (widget), widget_props[PROP_VISIBLE]);
 
-      gtk_accessible_update_state (GTK_ACCESSIBLE (widget),
-                                   GTK_ACCESSIBLE_STATE_HIDDEN, TRUE,
-                                   -1);
-
       parent = gtk_widget_get_parent (widget);
       if (parent)
         gtk_widget_queue_resize (parent);
@@ -2851,6 +2847,10 @@ gtk_widget_map (GtkWidget *widget)
 
       gtk_widget_queue_draw (widget);
 
+      gtk_accessible_update_state (GTK_ACCESSIBLE (widget),
+                                   GTK_ACCESSIBLE_STATE_HIDDEN, FALSE,
+                                   -1);
+
       gtk_widget_pop_verify_invariants (widget);
     }
 }
@@ -2880,6 +2880,10 @@ gtk_widget_unmap (GtkWidget *widget)
 
       update_cursor_on_state_change (widget);
 
+      gtk_accessible_update_state (GTK_ACCESSIBLE (widget),
+                                   GTK_ACCESSIBLE_STATE_HIDDEN, TRUE,
+                                   -1);
+
       gtk_widget_pop_verify_invariants (widget);
       g_object_unref (widget);
     }