diff --git a/demos/gtk-demo/entry_completion.c b/demos/gtk-demo/entry_completion.c index 614571f0cf..5a9860efdd 100644 --- a/demos/gtk-demo/entry_completion.c +++ b/demos/gtk-demo/entry_completion.c @@ -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 (); diff --git a/demos/gtk-demo/entry_undo.c b/demos/gtk-demo/entry_undo.c index 48ee0e8b32..63de4bd9fa 100644 --- a/demos/gtk-demo/entry_undo.c +++ b/demos/gtk-demo/entry_undo.c @@ -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)) diff --git a/demos/gtk-demo/errorstates.c b/demos/gtk-demo/errorstates.c index c3a9bbc041..bdd765ee97 100644 --- a/demos/gtk-demo/errorstates.c +++ b/demos/gtk-demo/errorstates.c @@ -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 * diff --git a/demos/gtk-demo/pickers.c b/demos/gtk-demo/pickers.c index 309362cc9d..4c99bf8141 100644 --- a/demos/gtk-demo/pickers.c +++ b/demos/gtk-demo/pickers.c @@ -249,7 +249,7 @@ do_pickers (GtkWidget *do_widget) } if (!gtk_widget_get_visible (window)) - gtk_widget_set_visible (window, TRUE); + gtk_window_present (GTK_WINDOW (window)); else gtk_window_destroy (GTK_WINDOW (window)); diff --git a/gtk/gtkcolordialogbutton.c b/gtk/gtkcolordialogbutton.c index 10f527febf..dce03690d1 100644 --- a/gtk/gtkcolordialogbutton.c +++ b/gtk/gtkcolordialogbutton.c @@ -141,6 +141,8 @@ gtk_color_dialog_button_init (GtkColorDialogButton *self) GTK_PHASE_CAPTURE); gtk_widget_add_controller (self->button, GTK_EVENT_CONTROLLER (source)); gtk_widget_add_css_class (self->button, "color"); + + gtk_color_dialog_button_set_rgba (self, &(GdkRGBA) { 0.75, 0.25, 0.25, 1.0 }); } static void diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 761a10ccff..67281c2f36 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -1396,6 +1396,10 @@ gtk_entry_init (GtkEntry *entry) GTK_EVENT_CONTROLLER (catchall)); priv->editing_canceled = FALSE; + + gtk_accessible_update_property (GTK_ACCESSIBLE (entry), + GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE, + -1); } static void diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index a90b2c480b..d8741e8481 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -4951,6 +4951,10 @@ gtk_label_set_selectable (GtkLabel *self, gtk_label_ensure_select_info (self); self->select_info->selectable = TRUE; gtk_label_update_cursor (self); + + gtk_accessible_update_property (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE, + -1); } else { @@ -4962,7 +4966,10 @@ gtk_label_set_selectable (GtkLabel *self, self->select_info->selectable = FALSE; gtk_label_clear_select_info (self); } + + gtk_accessible_reset_property (GTK_ACCESSIBLE (self), GTK_ACCESSIBLE_PROPERTY_HAS_POPUP); } + if (setting != old_setting) { g_object_freeze_notify (G_OBJECT (self)); @@ -5744,6 +5751,10 @@ gtk_label_do_popup (GtkLabel *self, gtk_popover_set_has_arrow (GTK_POPOVER (self->popup_menu), FALSE); gtk_widget_set_halign (self->popup_menu, GTK_ALIGN_START); + gtk_accessible_update_property (GTK_ACCESSIBLE (self->popup_menu), + GTK_ACCESSIBLE_PROPERTY_LABEL, _("Context menu"), + -1); + g_object_unref (model); } diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c index e88e2d14fe..eaf1df82ab 100644 --- a/gtk/gtkpasswordentry.c +++ b/gtk/gtkpasswordentry.c @@ -229,6 +229,10 @@ gtk_password_entry_init (GtkPasswordEntry *entry) /* Transfer ownership to the GtkText widget */ g_object_unref (buffer); + + gtk_accessible_update_property (GTK_ACCESSIBLE (entry), + GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE, + -1); } static void diff --git a/gtk/gtksearchentry.c b/gtk/gtksearchentry.c index faf85d6803..6191d1f01e 100644 --- a/gtk/gtksearchentry.c +++ b/gtk/gtksearchentry.c @@ -771,6 +771,10 @@ gtk_search_entry_init (GtkSearchEntry *entry) GTK_EVENT_CONTROLLER (catchall)); gtk_widget_add_css_class (GTK_WIDGET (entry), I_("search")); + + gtk_accessible_update_property (GTK_ACCESSIBLE (entry), + GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE, + -1); } /** diff --git a/gtk/gtktext.c b/gtk/gtktext.c index e4605a6970..2a74fb3d92 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -2712,6 +2712,10 @@ gtk_text_do_popup (GtkText *self, gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE); gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_START); + gtk_accessible_update_property (GTK_ACCESSIBLE (priv->popup_menu), + GTK_ACCESSIBLE_PROPERTY_LABEL, _("Context menu"), + -1); + g_object_unref (model); } diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 18aa13c99f..b0a68f8504 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -2024,6 +2024,7 @@ gtk_text_view_init (GtkTextView *text_view) gtk_accessible_update_property (GTK_ACCESSIBLE (widget), GTK_ACCESSIBLE_PROPERTY_MULTI_LINE, TRUE, + GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE, -1); } @@ -9089,6 +9090,10 @@ gtk_text_view_do_popup (GtkTextView *text_view, gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE); gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_START); + gtk_accessible_update_property (GTK_ACCESSIBLE (priv->popup_menu), + GTK_ACCESSIBLE_PROPERTY_LABEL, _("Context menu"), + -1); + g_object_unref (model); } diff --git a/gtk/inspector/a11y.c b/gtk/inspector/a11y.c index e06e767bea..98c496fba1 100644 --- a/gtk/inspector/a11y.c +++ b/gtk/inspector/a11y.c @@ -404,6 +404,8 @@ setup_cell_cb (GtkSignalListItemFactory *factory, label = gtk_label_new (NULL); gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); + gtk_label_set_width_chars (GTK_LABEL (label), 50); gtk_widget_set_margin_start (label, 6); gtk_widget_set_margin_end (label, 6); gtk_list_item_set_child (list_item, label); @@ -486,6 +488,7 @@ gtk_inspector_a11y_set_object (GtkInspectorA11y *sl, context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (sl->object)); if (context != NULL) { + gtk_at_context_realize (context); g_signal_connect_swapped (context, "state-change", G_CALLBACK (refresh_all), sl); g_object_unref (context); } diff --git a/gtk/inspector/a11y.ui b/gtk/inspector/a11y.ui index fad8470f31..dd35af307a 100644 --- a/gtk/inspector/a11y.ui +++ b/gtk/inspector/a11y.ui @@ -55,6 +55,8 @@ 1 end baseline + end + 50 1 1 @@ -81,6 +83,8 @@ 1 end baseline + end + 50 2 1 @@ -133,6 +137,8 @@ 1 end baseline + end + 50 4 1