66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Michael Weghorn <m.weghorn@posteo.de>
 | |
| Date: Fri, 9 Aug 2024 18:37:11 +0200
 | |
| Subject: a11y: Use non-empty message dialog title as a11y name
 | |
| 
 | |
| If a `GtkMessageDialog` has a non-empty title set, use
 | |
| that for the accessible name instead of a generic name
 | |
| indicating the type of the message dialog, as the
 | |
| window title is generally more informative, if set.
 | |
| It also better matches the information presented
 | |
| visually on screen (in the window title, task switchers,...)
 | |
| and is in line with the handling for non-message-dialog
 | |
| windows.
 | |
| 
 | |
| This can easily be tested with the "Dialogs and
 | |
| Message Boxes" sample from gtk3-demo when setting
 | |
| a title for the message dialog in there like this:
 | |
| 
 | |
| >   diff --git a/demos/gtk-demo/dialog.c b/demos/gtk-demo/dialog.c
 | |
| >   index 0eb1c62397..53fb7f8b0e 100644
 | |
| >   --- a/demos/gtk-demo/dialog.c
 | |
| >   +++ b/demos/gtk-demo/dialog.c
 | |
| >   @@ -25,6 +25,8 @@ message_dialog_clicked (GtkButton *button,
 | |
| >                                       "number of times:");
 | |
| >      gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
 | |
| >                                                "%d", i);
 | |
| >   +  gtk_window_set_title (GTK_WINDOW (dialog), "Some informative title");
 | |
| >   +
 | |
| >      gtk_dialog_run (GTK_DIALOG (dialog));
 | |
| >      gtk_widget_destroy (dialog);
 | |
| >      i++;
 | |
| 
 | |
| (cherry picked from commit 939737c3e72c2deaa0094f35838038df92f2a724)
 | |
| 
 | |
| Origin: upstream gtk-3-24 branch, after 3.24.43
 | |
| ---
 | |
|  gtk/gtkmessagedialog.c | 9 ++++++++-
 | |
|  1 file changed, 8 insertions(+), 1 deletion(-)
 | |
| 
 | |
| diff --git a/gtk/gtkmessagedialog.c b/gtk/gtkmessagedialog.c
 | |
| index 1de3118..ee35b26 100644
 | |
| --- a/gtk/gtkmessagedialog.c
 | |
| +++ b/gtk/gtkmessagedialog.c
 | |
| @@ -373,7 +373,12 @@ update_accessible_name (GtkMessageDialog *dialog)
 | |
|    if (!GTK_IS_ACCESSIBLE (atk_obj))
 | |
|      return;
 | |
|  
 | |
| -  const char *name = NULL;
 | |
| +  const char *name = gtk_window_get_title (GTK_WINDOW (dialog));
 | |
| +  if (name && name[0])
 | |
| +  {
 | |
| +    atk_object_set_name (atk_obj, name);
 | |
| +    return;
 | |
| +  }
 | |
|  
 | |
|    switch (dialog->priv->message_type)
 | |
|    {
 | |
| @@ -438,6 +443,8 @@ update_title (GObject    *dialog,
 | |
|    title = gtk_window_get_title (GTK_WINDOW (dialog));
 | |
|    gtk_label_set_label (GTK_LABEL (label), title);
 | |
|    gtk_widget_set_visible (label, title && title[0]);
 | |
| +
 | |
| +  update_accessible_name (GTK_MESSAGE_DIALOG (dialog));
 | |
|  }
 | |
|  
 | |
|  static void
 | 
