115 lines
2.7 KiB
Diff
115 lines
2.7 KiB
Diff
From: Michael Weghorn <m.weghorn@posteo.de>
|
|
Date: Fri, 9 Aug 2024 18:30:24 +0200
|
|
Subject: a11y: Extract helper function to set GtkMessageDialog a11y name
|
|
|
|
Extract the existing logic to set an accessible name for the
|
|
`GtkMessageDialog` based on the message type from `setup_type`
|
|
to a new helper function `update_accessible_name`.
|
|
|
|
That helper function will be reused and extended in a follow-up
|
|
commit.
|
|
|
|
(cherry picked from commit 13f55cd3e664b0fa7c14944572f2b41b73d64d16)
|
|
|
|
Origin: upstream gtk-3-24 branch, after 3.24.43
|
|
---
|
|
gtk/gtkmessagedialog.c | 68 +++++++++++++++++++++++++++++---------------------
|
|
1 file changed, 40 insertions(+), 28 deletions(-)
|
|
|
|
diff --git a/gtk/gtkmessagedialog.c b/gtk/gtkmessagedialog.c
|
|
index e70c820..1de3118 100644
|
|
--- a/gtk/gtkmessagedialog.c
|
|
+++ b/gtk/gtkmessagedialog.c
|
|
@@ -366,12 +366,50 @@ setup_primary_label_font (GtkMessageDialog *dialog)
|
|
}
|
|
}
|
|
|
|
+static void
|
|
+update_accessible_name (GtkMessageDialog *dialog)
|
|
+{
|
|
+ AtkObject *atk_obj = gtk_widget_get_accessible (GTK_WIDGET (dialog));
|
|
+ if (!GTK_IS_ACCESSIBLE (atk_obj))
|
|
+ return;
|
|
+
|
|
+ const char *name = NULL;
|
|
+
|
|
+ switch (dialog->priv->message_type)
|
|
+ {
|
|
+ case GTK_MESSAGE_INFO:
|
|
+ name = _("Information");
|
|
+ break;
|
|
+
|
|
+ case GTK_MESSAGE_QUESTION:
|
|
+ name = _("Question");
|
|
+ break;
|
|
+
|
|
+ case GTK_MESSAGE_WARNING:
|
|
+ name = _("Warning");
|
|
+ break;
|
|
+
|
|
+ case GTK_MESSAGE_ERROR:
|
|
+ name = _("Error");
|
|
+ break;
|
|
+
|
|
+ case GTK_MESSAGE_OTHER:
|
|
+ break;
|
|
+
|
|
+ default:
|
|
+ g_warning ("Unknown GtkMessageType %u", dialog->priv->message_type);
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ if (name)
|
|
+ atk_object_set_name (atk_obj, name);
|
|
+}
|
|
+
|
|
static void
|
|
setup_type (GtkMessageDialog *dialog,
|
|
GtkMessageType type)
|
|
{
|
|
GtkMessageDialogPrivate *priv = dialog->priv;
|
|
- const gchar *name = NULL;
|
|
AtkObject *atk_obj;
|
|
|
|
if (priv->message_type == type)
|
|
@@ -379,38 +417,12 @@ setup_type (GtkMessageDialog *dialog,
|
|
|
|
priv->message_type = type;
|
|
|
|
- switch (type)
|
|
- {
|
|
- case GTK_MESSAGE_INFO:
|
|
- name = _("Information");
|
|
- break;
|
|
-
|
|
- case GTK_MESSAGE_QUESTION:
|
|
- name = _("Question");
|
|
- break;
|
|
-
|
|
- case GTK_MESSAGE_WARNING:
|
|
- name = _("Warning");
|
|
- break;
|
|
-
|
|
- case GTK_MESSAGE_ERROR:
|
|
- name = _("Error");
|
|
- break;
|
|
-
|
|
- case GTK_MESSAGE_OTHER:
|
|
- break;
|
|
-
|
|
- default:
|
|
- g_warning ("Unknown GtkMessageType %u", type);
|
|
- break;
|
|
- }
|
|
|
|
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (dialog));
|
|
if (GTK_IS_ACCESSIBLE (atk_obj))
|
|
{
|
|
atk_object_set_role (atk_obj, ATK_ROLE_ALERT);
|
|
- if (name)
|
|
- atk_object_set_name (atk_obj, name);
|
|
+ update_accessible_name (dialog);
|
|
}
|
|
|
|
g_object_notify (G_OBJECT (dialog), "message-type");
|