gtk3/debian/patches/a11y-Extract-helper-function-to-set-GtkMessageDialog-a11y.patch
2024-08-20 16:28:24 -04:00

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");