gtk-demo: Misc a11y fixes
authorMatthias Clasen <mclasen@redhat.com>
Sat, 17 Jun 2023 16:19:05 +0000 (12:19 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 17 Jun 2023 20:50:36 +0000 (16:50 -0400)
Add some missing labels.

demos/gtk-demo/entry_completion.c
demos/gtk-demo/entry_undo.c
demos/gtk-demo/errorstates.c

index 614571f0cf304d795cdb5c271fe2ad8c59ec04b5..5a9860efdd5919ea479415466d1fe8ac86a40cf8 100644 (file)
@@ -95,6 +95,13 @@ do_entry_completion (GtkWidget *do_widget)
       entry = gtk_entry_new ();
       gtk_box_append (GTK_BOX (vbox), entry);
 
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (entry),
+                                      GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, NULL,
+                                      -1);
+      gtk_accessible_update_property (GTK_ACCESSIBLE (entry),
+                                      GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE, GTK_ACCESSIBLE_AUTOCOMPLETE_LIST,
+                                      -1);
+
       /* Create the completion object */
       completion = gtk_entry_completion_new ();
 
index 48ee0e8b3254bb40e4ea242125c7e8bbf487b790..63de4bd9fae3effe3d43cffe66c9535a8e458e0e 100644 (file)
@@ -43,6 +43,10 @@ do_entry_undo (GtkWidget *do_widget)
       entry = gtk_entry_new ();
       gtk_editable_set_enable_undo (GTK_EDITABLE (entry), TRUE);
       gtk_box_append (GTK_BOX (vbox), entry);
+
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (entry),
+                                      GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, NULL,
+                                      -1);
     }
 
   if (!gtk_widget_get_visible (window))
index c3a9bbc041c5340cf228bfbbdec36d53fea8efc6..bdd765ee971b5e87a2ba097ecd18043fbd46de0d 100644 (file)
@@ -22,11 +22,15 @@ validate_more_details (GtkEntry   *entry,
     {
       gtk_widget_set_tooltip_text (GTK_WIDGET (entry), "Must have details first");
       gtk_widget_add_css_class (GTK_WIDGET (entry), "error");
+      gtk_accessible_update_state (GTK_ACCESSIBLE (entry),
+                                   GTK_ACCESSIBLE_STATE_INVALID, GTK_ACCESSIBLE_INVALID_TRUE,
+                                   -1);
     }
   else
     {
       gtk_widget_set_tooltip_text (GTK_WIDGET (entry), "");
       gtk_widget_remove_css_class (GTK_WIDGET (entry), "error");
+      gtk_accessible_reset_state (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_STATE_INVALID);
     }
 }
 
@@ -44,10 +48,18 @@ mode_switch_state_set (GtkSwitch *sw,
     {
       gtk_widget_set_visible (label, FALSE);
       gtk_switch_set_state (sw, state);
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (sw), GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE);
+      gtk_accessible_reset_state (GTK_ACCESSIBLE (sw), GTK_ACCESSIBLE_STATE_INVALID);
     }
   else
     {
       gtk_widget_set_visible (label, TRUE);
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (sw),
+                                      GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE, label,
+                                      -1);
+      gtk_accessible_update_state (GTK_ACCESSIBLE (sw),
+                                   GTK_ACCESSIBLE_STATE_INVALID, GTK_ACCESSIBLE_INVALID_TRUE,
+                                   -1);
     }
 
   return TRUE;
@@ -73,6 +85,9 @@ level_scale_value_changed (GtkRange *range,
     {
       gtk_switch_set_state (GTK_SWITCH (sw), FALSE);
     }
+
+  gtk_accessible_reset_relation (GTK_ACCESSIBLE (sw), GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE);
+  gtk_accessible_reset_state (GTK_ACCESSIBLE (sw), GTK_ACCESSIBLE_STATE_INVALID);
 }
 
 GtkWidget *