Package: dpkg-dev Version: 1.22.11 Severity: normal gtk+3.0_3.24.43-3 contains a patch in the `git format-patch` dialect of DEP-3 format, whose long description contains a diff illustrating how to test the change (patch attached for reference).
The author of this patch clearly meant for the machine-readable part of the patch to apply changes to gtk/gtkmessagedialog.c only. `git apply` and `git am` have this behaviour. However, patch(1) and therefore dpkg-source looks for anything in the patch text that looks vaguely diff-like, even if it's indented (!), and applies it. The result is that in the uploaded gtk+3.0_3.24.43-3 package, both gtk/gtkmessagedialog.c and demos/gtk-demo/dialog.c have been edited (reported as #1081179). I think the same thing could equally well happen with the more-Debian-specific dialect of DEP-3 where the long human-readable message is in an indented deb822-style "Description", although I don't have a reproducer for that. However, the old dpatch framework would not have been susceptible to this, because it prepended "#" to all the non-diff content. Ideally, I think dpkg-source would (configure patch(1) to) refuse to apply diffs that are indented in this way - applying them seems like a violation of the principle of least astonishment. Or, if that's considered to be too much of a compatibility break, I think it would be useful for dpkg-source to issue a warning on such diffs. patch(1) does output "(Patch is indented 4 spaces.)" when I apply that diff, but it seems that dpkg-source suppresses that output. I could even imagine this becoming a security issue, if the long description of a patch contains instructions for changes to be made during testing that are not suitable for production (for example if the long description describes how to stub out authentication in order to test something). smcv
From: Michael Weghorn <m.wegh...@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