From efeff41501225d910977b352c25da246ba5f3a40 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 17 Jun 2023 12:18:34 -0400 Subject: [PATCH] a11y: Set has-popup consistently Set the has-popup property when a widget has a context menu. --- gtk/gtkentry.c | 4 ++++ gtk/gtklabel.c | 11 +++++++++++ gtk/gtkpasswordentry.c | 4 ++++ gtk/gtksearchentry.c | 4 ++++ gtk/gtktext.c | 4 ++++ gtk/gtktextview.c | 5 +++++ 6 files changed, 32 insertions(+) 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); } -- 2.30.2