diff --git a/0001-dialog-Properly-unparent-the-child-when-backed-by-a-.patch b/0001-dialog-Properly-unparent-the-child-when-backed-by-a-.patch new file mode 100644 index 0000000000000000000000000000000000000000..f46fd27d53b23bf3965c95a46615b0fd38668a40 --- /dev/null +++ b/0001-dialog-Properly-unparent-the-child-when-backed-by-a-.patch @@ -0,0 +1,31 @@ +From aa7ad9e1850e93346eaf2160564fe811ed12e8dd Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 6 Dec 2024 17:53:25 +0400 +Subject: [PATCH 01/33] dialog: Properly unparent the child when backed by a + window + +This regressed in a recent fix. + + +(cherry picked from commit 16199bcb92cb5968822c27a16f84b6f7d57290e3) +--- + src/adw-dialog.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/adw-dialog.c b/src/adw-dialog.c +index 77673f4b..9609e400 100644 +--- a/src/adw-dialog.c ++++ b/src/adw-dialog.c +@@ -881,7 +881,8 @@ adw_dialog_dispose (GObject *object) + priv->floating_sheet = NULL; + priv->child_breakpoint_bin = NULL; + priv->child = NULL; +- } else if (priv->window) { ++ } else if (priv->child_breakpoint_bin && ++ gtk_widget_get_parent (priv->child_breakpoint_bin) == GTK_WIDGET (self)) { + /* It's an window-backed dialog */ + g_clear_pointer (&priv->child_breakpoint_bin, gtk_widget_unparent); + priv->child = NULL; +-- +2.47.1 + diff --git a/0002-dialog-Handle-close-before-and-right-after-present.patch b/0002-dialog-Handle-close-before-and-right-after-present.patch new file mode 100644 index 0000000000000000000000000000000000000000..d84f2f89b829dedd33a731870e0b1006f359cf93 --- /dev/null +++ b/0002-dialog-Handle-close-before-and-right-after-present.patch @@ -0,0 +1,118 @@ +From e711e7cd11ecdce824da8a29f8b9c51388bd307e Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 6 Dec 2024 18:27:33 +0400 +Subject: [PATCH 02/33] dialog: Handle close() before and right after present() + +Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/970 + + +(cherry picked from commit 9bc2b37232d19ac7e6d3bf88076b49f07b1ab91a) +--- + src/adw-bottom-sheet.c | 13 ++++++++++++- + src/adw-dialog.c | 11 +++++++++++ + src/adw-floating-sheet.c | 14 +++++++++++++- + 3 files changed, 36 insertions(+), 2 deletions(-) + +diff --git a/src/adw-bottom-sheet.c b/src/adw-bottom-sheet.c +index d5876ac2..a9011eb0 100644 +--- a/src/adw-bottom-sheet.c ++++ b/src/adw-bottom-sheet.c +@@ -137,6 +137,8 @@ struct _AdwBottomSheet + gboolean can_open; + gboolean can_close; + ++ gboolean has_been_open; ++ + AdwSwipeTracker *swipe_tracker; + gboolean swipe_detected; + gboolean swipe_active; +@@ -1550,8 +1552,17 @@ adw_bottom_sheet_set_open (AdwBottomSheet *self, + + open = !!open; + +- if (self->open == open) ++ if (self->open == open) { ++ if (!self->has_been_open && !open) { ++ if (self->closing_callback) ++ self->closing_callback (self, self->user_data); ++ ++ if (self->closed_callback) ++ self->closed_callback (self, self->user_data); ++ } ++ + return; ++ } + + self->open = open; + +diff --git a/src/adw-dialog.c b/src/adw-dialog.c +index 9609e400..c045a944 100644 +--- a/src/adw-dialog.c ++++ b/src/adw-dialog.c +@@ -185,6 +185,12 @@ map_tick_cb (AdwDialog *self) + { + AdwDialogPrivate *priv = adw_dialog_get_instance_private (self); + ++ if (priv->force_closing) { ++ priv->tick_cb_id = 0; ++ priv->ticks = 0; ++ return G_SOURCE_REMOVE; ++ } ++ + priv->ticks++; + + /* If we're showing a bottom sheet, it has changed after the initial map, +@@ -1877,6 +1883,11 @@ adw_dialog_close (AdwDialog *self) + + priv = adw_dialog_get_instance_private (self); + ++ if (!gtk_widget_get_parent (GTK_WIDGET (self))) { ++ g_critical ("Trying to close %s %p that's not presented", G_OBJECT_TYPE_NAME (self), self); ++ return FALSE; ++ } ++ + if (!priv->can_close) { + g_signal_emit (self, signals[SIGNAL_CLOSE_ATTEMPT], 0); + return FALSE; +diff --git a/src/adw-floating-sheet.c b/src/adw-floating-sheet.c +index 341fa442..399fc392 100644 +--- a/src/adw-floating-sheet.c ++++ b/src/adw-floating-sheet.c +@@ -45,6 +45,8 @@ struct _AdwFloatingSheet + AdwAnimation *open_animation; + double progress; + ++ gboolean has_been_open; ++ + GFunc closing_callback; + GFunc closed_callback; + gpointer user_data; +@@ -423,14 +425,24 @@ adw_floating_sheet_set_open (AdwFloatingSheet *self, + + open = !!open; + +- if (self->open == open) ++ if (self->open == open) { ++ if (!self->has_been_open && !open) { ++ if (self->closing_callback) ++ self->closing_callback (self, self->user_data); ++ ++ if (self->closed_callback) ++ self->closed_callback (self, self->user_data); ++ } ++ + return; ++ } + + self->open = open; + + if (open) { + gtk_widget_set_child_visible (self->dimming, TRUE); + gtk_widget_set_child_visible (self->sheet_bin, TRUE); ++ self->has_been_open = true; + } + + gtk_widget_set_can_target (self->dimming, open); +-- +2.47.1 + diff --git a/0003-bottom-sheet-Fix-more-criticals-on-dispose.patch b/0003-bottom-sheet-Fix-more-criticals-on-dispose.patch new file mode 100644 index 0000000000000000000000000000000000000000..100ebb0a7f485aee81b6451e5e7252780058765f --- /dev/null +++ b/0003-bottom-sheet-Fix-more-criticals-on-dispose.patch @@ -0,0 +1,35 @@ +From fb22237d565c6ab8bf1434cc93ac04f8d1fc69d0 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 6 Dec 2024 19:51:08 +0400 +Subject: [PATCH 03/33] bottom-sheet: Fix more criticals on dispose + +I can't reproduce those, but makes sense. + +Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/969 + + +(cherry picked from commit 6e493edae9b9507c252b954442152d2e84fb7f82) +--- + src/adw-bottom-sheet.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/adw-bottom-sheet.c b/src/adw-bottom-sheet.c +index a9011eb0..900ca7f9 100644 +--- a/src/adw-bottom-sheet.c ++++ b/src/adw-bottom-sheet.c +@@ -600,11 +600,11 @@ adw_bottom_sheet_dispose (GObject *object) + g_clear_weak_pointer (&self->last_content_focus); + g_clear_weak_pointer (&self->last_sheet_focus); + ++ g_clear_object (&self->swipe_tracker); + g_clear_pointer (&self->content_bin, gtk_widget_unparent); + g_clear_pointer (&self->dimming, gtk_widget_unparent); + g_clear_pointer (&self->sheet_bin, gtk_widget_unparent); + g_clear_object (&self->open_animation); +- g_clear_object (&self->swipe_tracker); + self->content = NULL; + self->sheet = NULL; + self->sheet_stack = NULL; +-- +2.47.1 + diff --git a/0007-clamp-Fix-multi-child-support.patch b/0007-clamp-Fix-multi-child-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..5541401f4675a4e6ebb021d5209b050873c63b31 --- /dev/null +++ b/0007-clamp-Fix-multi-child-support.patch @@ -0,0 +1,29 @@ +From 8c56332fdc1edfd39ffbbc5c85452f2f4d10b1f6 Mon Sep 17 00:00:00 2001 +From: Sergey Bugaev +Date: Sun, 15 Dec 2024 22:00:29 +0300 +Subject: [PATCH 07/33] clamp: Fix multi-child support + +Signed-off-by: Sergey Bugaev + + +(cherry picked from commit 3d4fe3e2a2e3b03f2e3c171c95b342faee10714c) +--- + src/adw-clamp-layout.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/adw-clamp-layout.c b/src/adw-clamp-layout.c +index 2b36c69f..bc8d2b76 100644 +--- a/src/adw-clamp-layout.c ++++ b/src/adw-clamp-layout.c +@@ -304,7 +304,7 @@ adw_clamp_layout_allocate (GtkLayoutManager *manager, + gtk_widget_remove_css_class (child, "medium"); + gtk_widget_remove_css_class (child, "large"); + +- return; ++ continue; + } + + if (self->orientation == GTK_ORIENTATION_HORIZONTAL) { +-- +2.47.1 + diff --git a/0008-bottom-sheet-Fix-a-crash-when-closing-twice.patch b/0008-bottom-sheet-Fix-a-crash-when-closing-twice.patch new file mode 100644 index 0000000000000000000000000000000000000000..fed5bad59b38fd73e269540a9534e6837decb8d8 --- /dev/null +++ b/0008-bottom-sheet-Fix-a-crash-when-closing-twice.patch @@ -0,0 +1,25 @@ +From c0fb07855ccc619954b05fc25f1c503dd2d60915 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Mon, 16 Dec 2024 23:02:19 +0400 +Subject: [PATCH 08/33] bottom-sheet: Fix a crash when closing twice + +(cherry picked from commit ee6336d7247c008d110f46d9caa5baf30b1a638b) +--- + src/adw-bottom-sheet.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/adw-bottom-sheet.c b/src/adw-bottom-sheet.c +index 900ca7f9..e2c9ff0c 100644 +--- a/src/adw-bottom-sheet.c ++++ b/src/adw-bottom-sheet.c +@@ -1569,6 +1569,7 @@ adw_bottom_sheet_set_open (AdwBottomSheet *self, + if (open) { + gtk_widget_set_child_visible (self->dimming, self->modal); + gtk_widget_set_child_visible (self->sheet_bin, TRUE); ++ self->has_been_open = true; + } + + gtk_widget_set_can_target (self->dimming, open); +-- +2.47.1 + diff --git a/0009-header-bar-Ignore-split-views-outside-sheets.patch b/0009-header-bar-Ignore-split-views-outside-sheets.patch new file mode 100644 index 0000000000000000000000000000000000000000..613dec13b05f02b36a8e386226fae8a7615ab0f6 --- /dev/null +++ b/0009-header-bar-Ignore-split-views-outside-sheets.patch @@ -0,0 +1,30 @@ +From 8edf7b912425a8f2c5fa79d1630233547d74ebea Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Mon, 16 Dec 2024 23:17:36 +0400 +Subject: [PATCH 09/33] header-bar: Ignore split views outside sheets + +Otherwise we risk missing the close button if, say, it's on the left and +the sheet is in the right pane - like in libadwaita demo. + + +(cherry picked from commit c7107e10384eea4b48b7cd543cf90b9c45e63596) +--- + src/adw-header-bar.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/adw-header-bar.c b/src/adw-header-bar.c +index 65b8b8f9..40609dd5 100644 +--- a/src/adw-header-bar.c ++++ b/src/adw-header-bar.c +@@ -535,7 +535,7 @@ adw_header_bar_root (GtkWidget *widget) + GtkWidget *split_view = NULL; + gboolean is_sidebar = FALSE; + +- if (GTK_IS_NATIVE (parent)) ++ if (GTK_IS_NATIVE (parent) || parent == self->sheet) + break; + + if (ADW_IS_NAVIGATION_SPLIT_VIEW (parent)) { +-- +2.47.1 + diff --git a/0010-combo-row-Fix-property-notification.patch b/0010-combo-row-Fix-property-notification.patch new file mode 100644 index 0000000000000000000000000000000000000000..98240096cd70b5e9302b75d5419e211bad21f209 --- /dev/null +++ b/0010-combo-row-Fix-property-notification.patch @@ -0,0 +1,31 @@ +From 9a75a713c91c479986dc282e7067067e9bf34782 Mon Sep 17 00:00:00 2001 +From: Adrien Plazas +Date: Tue, 17 Dec 2024 16:42:47 +0100 +Subject: [PATCH 10/33] combo-row: Fix property notification + +The wrong property was notified when setting `enable-search`. + +Signed-off-by: Adrien Plazas + + +(cherry picked from commit d25d0cacf293b3706024163a45e2f3ad88d4f097) +--- + src/adw-combo-row.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/adw-combo-row.c b/src/adw-combo-row.c +index 01bc50e1..b18ce110 100644 +--- a/src/adw-combo-row.c ++++ b/src/adw-combo-row.c +@@ -1243,7 +1243,7 @@ adw_combo_row_set_enable_search (AdwComboRow *self, + gtk_editable_set_text (GTK_EDITABLE (priv->search_entry), ""); + gtk_widget_set_visible (GTK_WIDGET (priv->search_entry), enable_search); + +- g_object_notify_by_pspec (G_OBJECT (self), props[PROP_USE_SUBTITLE]); ++ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENABLE_SEARCH]); + } + + /** +-- +2.47.1 + diff --git a/0012-action-row-Set-accessible-role-presentation.patch b/0012-action-row-Set-accessible-role-presentation.patch new file mode 100644 index 0000000000000000000000000000000000000000..1fc9f10a1d2f0b1294f22db5ac5b221c96a5a7cc --- /dev/null +++ b/0012-action-row-Set-accessible-role-presentation.patch @@ -0,0 +1,28 @@ +From 067e1a5e4e31ecb6358acbddc436e2bc40dde87e Mon Sep 17 00:00:00 2001 +From: Maximiliano Sandoval +Date: Tue, 24 Dec 2024 13:09:12 +0100 +Subject: [PATCH 12/33] action-row: Set accessible-role=presentation + +On the prefix image. + + +(cherry picked from commit a99fb1fb2f8c7bb15774bd8978a16ea0aaa636fd) +--- + src/adw-action-row.ui | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/adw-action-row.ui b/src/adw-action-row.ui +index 71bb635b..5ef97c3c 100644 +--- a/src/adw-action-row.ui ++++ b/src/adw-action-row.ui +@@ -30,6 +30,7 @@ + + + center ++ presentation + +-- +2.47.1 + diff --git a/0013-length-unit-Also-fall-back-if-gtk-xft-dpi-is-default.patch b/0013-length-unit-Also-fall-back-if-gtk-xft-dpi-is-default.patch new file mode 100644 index 0000000000000000000000000000000000000000..4a243adced1722599174dde9a72e228a10d44540 --- /dev/null +++ b/0013-length-unit-Also-fall-back-if-gtk-xft-dpi-is-default.patch @@ -0,0 +1,32 @@ +From a712d6b4ef7ac4aaa7d38c87940b75d03906e05c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?= +Date: Fri, 27 Dec 2024 21:43:37 +0100 +Subject: [PATCH 13/33] length-unit: Also fall back if gtk-xft-dpi is default + value + +The check introduced in a7738a4d2 only uses the fallback value if +gtk-xft-dpi is zero, but by default (if a backend doesn't define it) it +is -1. + + +(cherry picked from commit 9759d3fd81129608dd78116001928f2aed974ead) +--- + src/adw-length-unit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/adw-length-unit.c b/src/adw-length-unit.c +index 136e720c..0c1268b2 100644 +--- a/src/adw-length-unit.c ++++ b/src/adw-length-unit.c +@@ -36,7 +36,7 @@ get_dpi (GtkSettings *settings) + + g_object_get (settings, "gtk-xft-dpi", &xft_dpi, NULL); + +- if (xft_dpi == 0) ++ if (xft_dpi <= 0) + xft_dpi = 96 * PANGO_SCALE; + + return xft_dpi / PANGO_SCALE; +-- +2.47.1 + diff --git a/0014-Release-1.6.3.patch b/0014-Release-1.6.3.patch new file mode 100644 index 0000000000000000000000000000000000000000..e427e7bcd5d3e330882a31388635460ea3e24de7 --- /dev/null +++ b/0014-Release-1.6.3.patch @@ -0,0 +1,65 @@ +From 9745c673667ddd39e5d80e2c79f5cbfa7819f5a3 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 10 Jan 2025 02:16:39 +0400 +Subject: [PATCH 14/33] Release 1.6.3 + +--- + NEWS | 24 ++++++++++++++++++++++++ + meson.build | 4 ++-- + 2 files changed, 26 insertions(+), 2 deletions(-) + +diff --git a/NEWS b/NEWS +index 65a006e6..c6212200 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,27 @@ ++============= ++Version 1.6.3 ++============= ++ ++- Build ++ - Drop pre-built docs and styles ++- AdwActionRow ++ - Set accessible role to presentation for the icon ++- AdwBottomSheet ++ - Fix more criticals in dispose ++- AdwButtonRow ++ - Set accessible role to presentation for icons ++- AdwClampLayout ++ - Fix layout with multiple children ++- AdwComboRow ++ - Fix a property noficiation ++- AdwDialog ++ - Fix accessible role critical when using window-backed dialogs ++ - Handle close() before and right after present() ++- AdwHeaderBar ++ - Ignore split views outside sheets ++- AdwLengthUnit ++ - Fix pt and sp unit values when gtk-xft-dpi = -1 ++ + ============= + Version 1.6.2 + ============= +diff --git a/meson.build b/meson.build +index c727df7b..054ca570 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('libadwaita', 'c', +- version: '1.6.2', ++ version: '1.6.3', + license: 'LGPL-2.1-or-later', + meson_version: '>= 0.59.0', + default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], +@@ -29,7 +29,7 @@ package_api_name = '@0@-@1@'.format(meson.project_name(), apiversion) + # to 0. When bumping the second version, set the third one to zero. + # + # A lot easier than libtool, right? +-libversion = '0.6.2' ++libversion = '0.6.3' + # The so major version of the library + soversion = 0 + +-- +2.47.1 + diff --git a/0016-tab-box-grid-Fix-scrolling-to-newly-appearing-tabs.patch b/0016-tab-box-grid-Fix-scrolling-to-newly-appearing-tabs.patch new file mode 100644 index 0000000000000000000000000000000000000000..d3e14289d4f5e8478b820c66ea056c6433c7a034 --- /dev/null +++ b/0016-tab-box-grid-Fix-scrolling-to-newly-appearing-tabs.patch @@ -0,0 +1,81 @@ +From 5789a82ebca690d49cda7683737be975baa80572 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 17 Jan 2025 20:09:17 +0400 +Subject: [PATCH 16/33] tab-box/grid: Fix scrolling to newly appearing tabs + +Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/964 + + +(cherry picked from commit fcb732ab9d804389b3eb6ed2e2d46584b3c02cbc) +--- + src/adw-tab-box.c | 18 +++++++++++++++--- + src/adw-tab-grid.c | 15 ++++++++++++--- + 2 files changed, 27 insertions(+), 6 deletions(-) + +diff --git a/src/adw-tab-box.c b/src/adw-tab-box.c +index 129f81a3..e0111fba 100644 +--- a/src/adw-tab-box.c ++++ b/src/adw-tab-box.c +@@ -942,6 +942,9 @@ scroll_to_tab_full (AdwTabBox *self, + if (info->appear_animation) + tab_width = info->final_width; + ++ if (tab_width == 0) ++ tab_width = predict_tab_width (self, info, FALSE); ++ + value = gtk_adjustment_get_value (self->adjustment); + page_size = gtk_adjustment_get_page_size (self->adjustment); + +@@ -1904,10 +1907,19 @@ page_attached_cb (AdwTabBox *self, + + adw_animation_play (info->appear_animation); + +- if (page == adw_tab_view_get_selected_page (self->view)) ++ if (page == adw_tab_view_get_selected_page (self->view)) { + adw_tab_box_select_page (self, page); +- else +- scroll_to_tab_full (self, info, -1, OPEN_ANIMATION_DURATION, TRUE); ++ } else { ++ int pos = -1; ++ ++ if (l && l->next && l->next->data) { ++ TabInfo *next_info = l->next->data; ++ ++ pos = next_info->final_pos; ++ } ++ ++ scroll_to_tab_full (self, info, pos, OPEN_ANIMATION_DURATION, TRUE); ++ } + + update_separators (self); + } +diff --git a/src/adw-tab-grid.c b/src/adw-tab-grid.c +index 1cc88e37..35b0c018 100644 +--- a/src/adw-tab-grid.c ++++ b/src/adw-tab-grid.c +@@ -1918,10 +1918,19 @@ page_attached_cb (AdwTabGrid *self, + + calculate_tab_layout (self); + +- if (page == adw_tab_view_get_selected_page (self->view)) ++ if (page == adw_tab_view_get_selected_page (self->view)) { + adw_tab_grid_select_page (self, page); +- else +- scroll_to_tab_full (self, info, -1, OPEN_ANIMATION_DURATION, TRUE); ++ } else { ++ int pos = -1; ++ ++ if (l && l->next && l->next->data) { ++ TabInfo *next_info = l->next->data; ++ ++ pos = next_info->final_y; ++ ++ scroll_to_tab_full (self, info, pos, OPEN_ANIMATION_DURATION, TRUE); ++ } ++ } + } + + /* Closing */ +-- +2.47.1 + diff --git a/0017-dialog-Fix-closed-emission-with-window-backed-dialog.patch b/0017-dialog-Fix-closed-emission-with-window-backed-dialog.patch new file mode 100644 index 0000000000000000000000000000000000000000..f4e34090fa21809faac2e32e23f6271371cc4565 --- /dev/null +++ b/0017-dialog-Fix-closed-emission-with-window-backed-dialog.patch @@ -0,0 +1,37 @@ +From 67c8c552f7a5895f7a92e876d3f3c3022ef02a39 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Mon, 20 Jan 2025 17:17:07 +0400 +Subject: [PATCH 17/33] dialog: Fix :closed emission with window-backed dialogs + +Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/990 + + +(cherry picked from commit 2be3ee551fa4d8addb3a6819e52aaf24ba726d3f) +--- + src/adw-dialog.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/adw-dialog.c b/src/adw-dialog.c +index c045a944..0bc3f2a9 100644 +--- a/src/adw-dialog.c ++++ b/src/adw-dialog.c +@@ -1894,8 +1894,15 @@ adw_dialog_close (AdwDialog *self) + } + + if (priv->window) { +- gtk_window_close (GTK_WINDOW (priv->window)); ++ GtkWidget *window = priv->window; + priv->window = NULL; ++ ++ if (priv->closing_callback) ++ priv->closing_callback (self, priv->user_data); ++ ++ g_signal_emit (self, signals[SIGNAL_CLOSED], 0); ++ ++ gtk_window_close (GTK_WINDOW (window)); + } else { + adw_dialog_force_close (self); + } +-- +2.47.1 + diff --git a/0018-combo-row-Set-width-chars-1-for-the-item-labels.patch b/0018-combo-row-Set-width-chars-1-for-the-item-labels.patch new file mode 100644 index 0000000000000000000000000000000000000000..2f3bd9d04df5c48986c281d466ac4bf86cf08022 --- /dev/null +++ b/0018-combo-row-Set-width-chars-1-for-the-item-labels.patch @@ -0,0 +1,30 @@ +From 397d096c17d7945c9553e3c0c50ad4741009c2c6 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Mon, 20 Jan 2025 18:20:25 +0400 +Subject: [PATCH 18/33] combo-row: Set width-chars=1 for the item labels + +Otherwise it gets clipped with really narrow characters, like 1, l or i. + +Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/720 + + +(cherry picked from commit a26417fbb65719d58d8d608d9f7227dcedf36f68) +--- + src/adw-combo-row.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/adw-combo-row.c b/src/adw-combo-row.c +index b18ce110..2ab16023 100644 +--- a/src/adw-combo-row.c ++++ b/src/adw-combo-row.c +@@ -291,6 +291,7 @@ setup_item (GtkSignalListItemFactory *factory, + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); + gtk_label_set_max_width_chars (GTK_LABEL (label), 20); ++ gtk_label_set_width_chars (GTK_LABEL (label), 1); + gtk_widget_set_valign (label, GTK_ALIGN_CENTER); + gtk_box_append (GTK_BOX (box), label); + +-- +2.47.1 + diff --git a/0019-tab-box-grid-Fix-a-copypaste-error.patch b/0019-tab-box-grid-Fix-a-copypaste-error.patch new file mode 100644 index 0000000000000000000000000000000000000000..d32b00cd76cf50ccffba281634acd4658d5cc53e --- /dev/null +++ b/0019-tab-box-grid-Fix-a-copypaste-error.patch @@ -0,0 +1,43 @@ +From cebbe2a6653062be1ff14371b896689a4d61c235 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Mon, 20 Jan 2025 19:09:15 +0400 +Subject: [PATCH 19/33] tab-box/grid: Fix a copypaste error + +Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/955 + + +(cherry picked from commit f7fb601a54ec0d9924fc8e64b6c59f8c0110fcf9) +--- + src/adw-tab-box.c | 2 +- + src/adw-tab-grid.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/adw-tab-box.c b/src/adw-tab-box.c +index e0111fba..43fe29a1 100644 +--- a/src/adw-tab-box.c ++++ b/src/adw-tab-box.c +@@ -1948,7 +1948,7 @@ close_animation_done_cb (TabInfo *info) + self->reordered_tab = NULL; + + if (self->middle_clicked_tab == info) +- self->pressed_tab = NULL; ++ self->middle_clicked_tab = NULL; + + remove_and_free_tab_info (info); + +diff --git a/src/adw-tab-grid.c b/src/adw-tab-grid.c +index 35b0c018..c4394e7d 100644 +--- a/src/adw-tab-grid.c ++++ b/src/adw-tab-grid.c +@@ -1957,7 +1957,7 @@ close_animation_done_cb (TabInfo *info) + self->reordered_tab = NULL; + + if (self->middle_clicked_tab == info) +- self->pressed_tab = NULL; ++ self->middle_clicked_tab = NULL; + + remove_and_free_tab_info (info); + +-- +2.47.1 + diff --git a/0021-breakpoint-Make-sure-to_string-is-locale-agnostic.patch b/0021-breakpoint-Make-sure-to_string-is-locale-agnostic.patch new file mode 100644 index 0000000000000000000000000000000000000000..21b7ba9cd74f08f61d1e49d92b676111c38abf2a --- /dev/null +++ b/0021-breakpoint-Make-sure-to_string-is-locale-agnostic.patch @@ -0,0 +1,39 @@ +From 5f1ae485c96fac46796ae9caf3b5a9cdb540d363 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 31 Jan 2025 16:49:05 +0000 +Subject: [PATCH 21/33] breakpoint: Make sure to_string() is locale-agnostic + +(cherry picked from commit a9c23bf272d7d84b12e022f7d77acdab74821e9e) + +Co-authored-by: Alice Mikhaylenko +--- + src/adw-breakpoint.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/adw-breakpoint.c b/src/adw-breakpoint.c +index eb2710ea..1d640335 100644 +--- a/src/adw-breakpoint.c ++++ b/src/adw-breakpoint.c +@@ -849,6 +849,8 @@ adw_breakpoint_condition_parse (const char *str) + char * + adw_breakpoint_condition_to_string (AdwBreakpointCondition *self) + { ++ char buf[G_ASCII_DTOSTR_BUF_SIZE]; ++ + g_return_val_if_fail (self != NULL, NULL); + + /* Example: "max-width: 400px" */ +@@ -886,7 +888,9 @@ adw_breakpoint_condition_to_string (AdwBreakpointCondition *self) + g_assert_not_reached (); + } + +- return g_strdup_printf ("%s: %g%s", type, self->data.length.value, unit); ++ g_ascii_dtostr (buf, sizeof (buf), self->data.length.value); ++ ++ return g_strdup_printf ("%s: %s%s", type, buf, unit); + } + + /* Example: "max-aspect-ratio: 4/3" */ +-- +2.47.1 + diff --git a/0022-dialog-always-clear-priv-last_focus-weak-pointer.patch b/0022-dialog-always-clear-priv-last_focus-weak-pointer.patch new file mode 100644 index 0000000000000000000000000000000000000000..eb883e0f21755b48ecac9546aebeda40ef658872 --- /dev/null +++ b/0022-dialog-always-clear-priv-last_focus-weak-pointer.patch @@ -0,0 +1,34 @@ +From 9ceabdab80144a74ed82ac82dfd071967f274ade Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 31 Jan 2025 17:11:24 +0000 +Subject: [PATCH 22/33] dialog: always clear priv->last_focus weak pointer + +Currently we're relying on the last-focused widget to never outlive the +AdwDialog. In fairness, this would be unusual, but it's always possible +and the penalty for being wrong is memory corruption, and that is a very +harsh penalty. + + +(cherry picked from commit 406c76d12d8b4737d4e41e007ed77aebb77a1ac7) + +Co-authored-by: Michael Catanzaro +--- + src/adw-dialog.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/adw-dialog.c b/src/adw-dialog.c +index 0bc3f2a9..7cd2a454 100644 +--- a/src/adw-dialog.c ++++ b/src/adw-dialog.c +@@ -870,6 +870,8 @@ adw_dialog_dispose (GObject *object) + priv->focus_widget = NULL; + } + ++ g_clear_weak_pointer (&priv->last_focus); ++ + if (priv->default_widget) { + g_signal_handlers_disconnect_by_func (priv->default_widget, + unset_default_widget, self); +-- +2.47.1 + diff --git a/0023-dialog-keep-a-weak-pointer-on-focus_widget.patch b/0023-dialog-keep-a-weak-pointer-on-focus_widget.patch new file mode 100644 index 0000000000000000000000000000000000000000..666fa13579559d25c87aa2a21423508e112bf06c --- /dev/null +++ b/0023-dialog-keep-a-weak-pointer-on-focus_widget.patch @@ -0,0 +1,48 @@ +From 042176c44611f0a8584e23d5298211a2a521629b Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 31 Jan 2025 17:11:31 +0000 +Subject: [PATCH 23/33] dialog: keep a weak pointer on focus_widget + +The act of unfocusing the widget may cause it to be destroyed. + +See: https://gitlab.gnome.org/GNOME/libadwaita/-/merge_requests/1386#note_2324067 + + +(cherry picked from commit 40b9e3c9703d4e515145778400bdfe59dc7c4a62) + +Co-authored-by: Michael Catanzaro +--- + src/adw-dialog.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/adw-dialog.c b/src/adw-dialog.c +index 7cd2a454..d9f79c72 100644 +--- a/src/adw-dialog.c ++++ b/src/adw-dialog.c +@@ -312,11 +312,14 @@ set_focus (AdwDialog *self, + focus_widget_notify_visible_cb, self); + g_signal_handlers_disconnect_by_func (priv->focus_widget, + focus_widget_notify_parent_cb, self); ++ g_clear_weak_pointer (&priv->focus_widget); + } + + priv->focus_widget = focus; + + if (priv->focus_widget) { ++ g_object_add_weak_pointer (G_OBJECT (priv->focus_widget), (gpointer *) &priv->focus_widget); ++ + g_signal_connect_swapped (priv->focus_widget, "hide", + G_CALLBACK (unset_focus_widget), self); + g_signal_connect_swapped (priv->focus_widget, "notify::visible", +@@ -867,7 +870,7 @@ adw_dialog_dispose (GObject *object) + focus_widget_notify_visible_cb, self); + g_signal_handlers_disconnect_by_func (priv->focus_widget, + focus_widget_notify_parent_cb, self); +- priv->focus_widget = NULL; ++ g_clear_weak_pointer (&priv->focus_widget); + } + + g_clear_weak_pointer (&priv->last_focus); +-- +2.47.1 + diff --git a/0024-Release-1.6.4.patch b/0024-Release-1.6.4.patch new file mode 100644 index 0000000000000000000000000000000000000000..e7f6367f90485729d46f16ea5ddf57ac87a18ed4 --- /dev/null +++ b/0024-Release-1.6.4.patch @@ -0,0 +1,60 @@ +From 927f58620015a8f7153ef3b9454e4d04e4e5d8f9 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 31 Jan 2025 20:57:17 +0400 +Subject: [PATCH 24/33] Release 1.6.4 + +--- + NEWS | 19 +++++++++++++++++++ + meson.build | 4 ++-- + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/NEWS b/NEWS +index c6212200..55e8b493 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,22 @@ ++============= ++Version 1.6.4 ++============= ++ ++- AdwBreakpoint ++ - Fix to_string() with locales using comma as decimal separator ++- AdwComboRow ++ - Fix very short strings not being displayed ++- AdwDialog ++ - Fix ::closed emission with window-backed dialogs ++ - Fix a focus-related crash ++- AdwPreferencesDialog ++ - Document navigation.pop action ++- AdwTabBox, AdwTabGrid ++ - Fix scrolling to newly appearing tabs ++ - Fix a copy-paste error ++- Translation updates ++ - Italian ++ + ============= + Version 1.6.3 + ============= +diff --git a/meson.build b/meson.build +index 054ca570..9f38a5a9 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('libadwaita', 'c', +- version: '1.6.3', ++ version: '1.6.4', + license: 'LGPL-2.1-or-later', + meson_version: '>= 0.59.0', + default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], +@@ -29,7 +29,7 @@ package_api_name = '@0@-@1@'.format(meson.project_name(), apiversion) + # to 0. When bumping the second version, set the third one to zero. + # + # A lot easier than libtool, right? +-libversion = '0.6.3' ++libversion = '0.6.4' + # The so major version of the library + soversion = 0 + +-- +2.47.1 + diff --git a/0025-dialog-notify-for-current-breakpoint-passed-through-.patch b/0025-dialog-notify-for-current-breakpoint-passed-through-.patch new file mode 100644 index 0000000000000000000000000000000000000000..3b95e89eeb645360d42b5a5e392162d22662afb6 --- /dev/null +++ b/0025-dialog-notify-for-current-breakpoint-passed-through-.patch @@ -0,0 +1,57 @@ +From c9833e4e33c2257ac94c041ff73c1b4c678cbde2 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Wed, 12 Mar 2025 20:57:48 +0000 +Subject: [PATCH 25/33] dialog: notify for current breakpoint passed through + from child breakpoint bin +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is a virtual property that needs manual notification +as done with passed through current breakpoint properties +for Adw.Window and Adw.ApplicationWindow. + +This allows to use signals as well as anything that +depends on signals such as GBindings. + +Signed-off-by: Markus Göllnitz + + +(cherry picked from commit ff3a1f660f776f7eba07f22b53cb52d4a9813655) + +Co-authored-by: Markus Göllnitz +--- + src/adw-dialog.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/adw-dialog.c b/src/adw-dialog.c +index d9f79c72..fd539bb0 100644 +--- a/src/adw-dialog.c ++++ b/src/adw-dialog.c +@@ -180,6 +180,12 @@ enum { + + static guint signals[SIGNAL_LAST_SIGNAL]; + ++static void ++child_breakpoint_bin_notify_current_breakpoint_cb (AdwDialog *self) ++{ ++ g_object_notify_by_pspec (G_OBJECT (self), props[PROP_CURRENT_BREAKPOINT]); ++} ++ + static gboolean + map_tick_cb (AdwDialog *self) + { +@@ -1280,6 +1286,10 @@ adw_dialog_init (AdwDialog *self) + g_object_bind_property (self, "height-request", + priv->child_breakpoint_bin, "height-request", + G_BINDING_DEFAULT); ++ g_signal_connect_swapped (priv->child_breakpoint_bin, ++ "notify::current-breakpoint", ++ G_CALLBACK (child_breakpoint_bin_notify_current_breakpoint_cb), ++ self); + } + + static void +-- +2.47.1 + diff --git a/0026-preferences-dialog-window-Fix-the-search-filter-stac.patch b/0026-preferences-dialog-window-Fix-the-search-filter-stac.patch new file mode 100644 index 0000000000000000000000000000000000000000..e9623854106b2b048caabe3ae62f4ddde91ad25f --- /dev/null +++ b/0026-preferences-dialog-window-Fix-the-search-filter-stac.patch @@ -0,0 +1,46 @@ +From cab1b5afefb7a84a110bc4160fc1b957d8138cae Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Wed, 12 Mar 2025 21:29:49 +0000 +Subject: [PATCH 26/33] preferences-dialog/window: Fix the search filter stack + page type + +Oops. I'm happy nothing exploded when we were doing this since 1.0. + + +(cherry picked from commit 684323b896a0c5aa140983d410f8bb29f5d2ea98) + +Co-authored-by: Alice Mikhaylenko +--- + src/adw-preferences-dialog.c | 2 +- + src/adw-preferences-window.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/adw-preferences-dialog.c b/src/adw-preferences-dialog.c +index 59c5d469..cf5220dd 100644 +--- a/src/adw-preferences-dialog.c ++++ b/src/adw-preferences-dialog.c +@@ -643,7 +643,7 @@ adw_preferences_dialog_init (AdwPreferencesDialog *self) + gtk_widget_init_template (GTK_WIDGET (self)); + + priv->filter = GTK_FILTER (gtk_custom_filter_new ((GtkCustomFilterFunc) filter_search_results, self, NULL)); +- expr = gtk_property_expression_new (GTK_TYPE_STACK_PAGE, NULL, "visible"); ++ expr = gtk_property_expression_new (ADW_TYPE_VIEW_STACK_PAGE, NULL, "visible"); + + model = G_LIST_MODEL (adw_view_stack_get_pages (priv->pages_stack)); + model = G_LIST_MODEL (gtk_filter_list_model_new (model, GTK_FILTER (gtk_bool_filter_new (expr)))); +diff --git a/src/adw-preferences-window.c b/src/adw-preferences-window.c +index 88d9d6f0..112d441b 100644 +--- a/src/adw-preferences-window.c ++++ b/src/adw-preferences-window.c +@@ -718,7 +718,7 @@ adw_preferences_window_init (AdwPreferencesWindow *self) + gtk_widget_init_template (GTK_WIDGET (self)); + + priv->filter = GTK_FILTER (gtk_custom_filter_new ((GtkCustomFilterFunc) filter_search_results, self, NULL)); +- expr = gtk_property_expression_new (GTK_TYPE_STACK_PAGE, NULL, "visible"); ++ expr = gtk_property_expression_new (ADW_TYPE_VIEW_STACK_PAGE, NULL, "visible"); + + model = G_LIST_MODEL (adw_view_stack_get_pages (priv->pages_stack)); + model = G_LIST_MODEL (gtk_filter_list_model_new (model, GTK_FILTER (gtk_bool_filter_new (expr)))); +-- +2.47.1 + diff --git a/0027-Release-1.6.5.patch b/0027-Release-1.6.5.patch new file mode 100644 index 0000000000000000000000000000000000000000..7a5fa49d409713f15c4805c43def2a760e1adfeb --- /dev/null +++ b/0027-Release-1.6.5.patch @@ -0,0 +1,50 @@ +From 33abcd86745a51230a65b5a160d62d7a2cbdea3c Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Sat, 15 Mar 2025 00:09:17 +0400 +Subject: [PATCH 27/33] Release 1.6.5 + +--- + NEWS | 9 +++++++++ + meson.build | 4 ++-- + 2 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/NEWS b/NEWS +index 55e8b493..7ef28de6 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,12 @@ ++============= ++Version 1.6.5 ++============= ++ ++- AdwDialog ++ - Fix :current-breakpoint notifications ++- AdwPreferencesDialog/Window ++ - Fix the search filter expression ++ + ============= + Version 1.6.4 + ============= +diff --git a/meson.build b/meson.build +index 9f38a5a9..724312ac 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('libadwaita', 'c', +- version: '1.6.4', ++ version: '1.6.5', + license: 'LGPL-2.1-or-later', + meson_version: '>= 0.59.0', + default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], +@@ -29,7 +29,7 @@ package_api_name = '@0@-@1@'.format(meson.project_name(), apiversion) + # to 0. When bumping the second version, set the third one to zero. + # + # A lot easier than libtool, right? +-libversion = '0.6.4' ++libversion = '0.6.5' + # The so major version of the library + soversion = 0 + +-- +2.47.1 + diff --git a/0028-meson-Don-t-install-internal-static-library.patch b/0028-meson-Don-t-install-internal-static-library.patch new file mode 100644 index 0000000000000000000000000000000000000000..6757b034074e399649af2a20f622c772f2956352 --- /dev/null +++ b/0028-meson-Don-t-install-internal-static-library.patch @@ -0,0 +1,38 @@ +From b4e07684b02db371ea348b1b90f56391c01a1d8c Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Sat, 15 Mar 2025 14:00:37 +0000 +Subject: [PATCH 28/33] meson: Don't install internal static library + +It's only used for tests. Now that it's always static there should never +be any need to install it, even for installed tests, which AFAICT +libadwaita doesn't even have. + + +(cherry picked from commit c4b2760bc8bb95a2039dfad97ad27f592ed05c47) + +Co-authored-by: Jan Alexander Steffens (heftig) + +(cherry picked from commit 6467d119dacb8441531a6dfece003a62c8175f60) + +Co-authored-by: Alice Mikhaylenko +--- + src/meson.build | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/meson.build b/src/meson.build +index a27f14f0..f3205008 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -425,9 +425,7 @@ if get_option('tests') + c_args: libadwaita_c_args, + dependencies: libadwaita_deps, + include_directories: [ root_inc, src_inc ], +- install: true, + link_args: libadwaita_link_args, +- install_dir: adwaita_libdir, + ) + + libadwaita_internal_dep = declare_dependency( +-- +2.47.1 + diff --git a/0029-shadow-helper-Avoid-needlessly-reassigning-CSS-class.patch b/0029-shadow-helper-Avoid-needlessly-reassigning-CSS-class.patch new file mode 100644 index 0000000000000000000000000000000000000000..32b83abad702766322063b28990beec7f8825c7e --- /dev/null +++ b/0029-shadow-helper-Avoid-needlessly-reassigning-CSS-class.patch @@ -0,0 +1,49 @@ +From e368a3f22e11144f7928dd7f23d80cf4e2e8d681 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Sat, 15 Mar 2025 14:04:24 +0000 +Subject: [PATCH 29/33] shadow-helper: Avoid needlessly reassigning CSS classes + +Signed-off-by: Sergey Bugaev + + +(cherry picked from commit ff083435bbf8a2f4ca6fc8ebcbee8d26717ba942) + +Co-authored-by: Sergey Bugaev + +(cherry picked from commit 7b57894b81331ccff302a400e677761afca84ffd) + +Co-authored-by: Alice Mikhaylenko +--- + src/adw-shadow-helper.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/adw-shadow-helper.c b/src/adw-shadow-helper.c +index 6f65ccea..7b7ec6ea 100644 +--- a/src/adw-shadow-helper.c ++++ b/src/adw-shadow-helper.c +@@ -20,6 +20,9 @@ struct _AdwShadowHelper + GtkWidget *shadow; + GtkWidget *border; + GtkWidget *outline; ++ ++ GtkPanDirection last_direction; ++ gboolean last_direction_valid; + }; + + G_DEFINE_FINAL_TYPE (AdwShadowHelper, adw_shadow_helper, G_TYPE_OBJECT); +@@ -163,6 +166,12 @@ set_style_classes (AdwShadowHelper *self, + { + const char *classes[2]; + ++ /* Avoid needlessly reassigning the CSS classes. */ ++ if (self->last_direction_valid && self->last_direction == direction) ++ return; ++ self->last_direction_valid = TRUE; ++ self->last_direction = direction; ++ + switch (direction) { + case GTK_PAN_DIRECTION_LEFT: + classes[0] = "left"; +-- +2.47.1 + diff --git a/0030-toast-overlay-The-role-is-GROUP-not-TAB_GROUP.patch b/0030-toast-overlay-The-role-is-GROUP-not-TAB_GROUP.patch new file mode 100644 index 0000000000000000000000000000000000000000..785b8b2edf474d043e5973dd6ed0841af283aa14 --- /dev/null +++ b/0030-toast-overlay-The-role-is-GROUP-not-TAB_GROUP.patch @@ -0,0 +1,32 @@ +From 9730d31a8c323f88359f412004fb4d8e593b7f11 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Sat, 22 Mar 2025 19:18:55 +0000 +Subject: [PATCH 30/33] toast-overlay: The role is GROUP, not TAB_GROUP + +(cherry picked from commit 0cbccc35c7076419dfce56d198c21917f2cdc890) + +Co-authored-by: Zander Brown + +(cherry picked from commit 09074ad64a97a39a57178216903f4d7076b28e20) + +Co-authored-by: Alice Mikhaylenko +--- + src/adw-toast-overlay.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/adw-toast-overlay.c b/src/adw-toast-overlay.c +index f75dfe4e..cea43c79 100644 +--- a/src/adw-toast-overlay.c ++++ b/src/adw-toast-overlay.c +@@ -63,7 +63,7 @@ + * + * ## Accessibility + * +- * `AdwToastOverlay` uses the `GTK_ACCESSIBLE_ROLE_TAB_GROUP` role. ++ * `AdwToastOverlay` uses the [enum@Gtk.AccessibleRole.GROUP] role. + */ + + typedef struct { +-- +2.47.1 + diff --git a/0031-docs-clarify-translator-credits-for-multiple-contrib.patch b/0031-docs-clarify-translator-credits-for-multiple-contrib.patch new file mode 100644 index 0000000000000000000000000000000000000000..c879210b649aec241e92a7d383d2758df135f97e --- /dev/null +++ b/0031-docs-clarify-translator-credits-for-multiple-contrib.patch @@ -0,0 +1,49 @@ +From 3df7564fe26c41a1f89bc6a618e9f28881a12687 Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 11 Apr 2025 13:05:27 +0000 +Subject: [PATCH 31/33] docs: clarify translator credits for multiple + contributors + +(cherry picked from commit 938d1e83a7f405219cf1cc4f3da15d8a946c347e) + +Co-authored-by: zefr0x + +(cherry picked from commit 02769a080856e7e94e280060c7128d10204b6829) + +Co-authored-by: Alice Mikhaylenko +--- + src/adw-about-dialog.c | 3 ++- + src/adw-about-window.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/adw-about-dialog.c b/src/adw-about-dialog.c +index 3ccd53a2..bf31277c 100644 +--- a/src/adw-about-dialog.c ++++ b/src/adw-about-dialog.c +@@ -3046,7 +3046,8 @@ adw_about_dialog_get_translator_credits (AdwAboutDialog *self) + * should be marked as translatable. + * + * The string may contain email addresses and URLs, see the introduction for +- * more details. ++ * more details. When there is more than one translator, they must be ++ * separated by a newline in the same string. + * + * See also: + * +diff --git a/src/adw-about-window.c b/src/adw-about-window.c +index 2c17e129..9d0a5058 100644 +--- a/src/adw-about-window.c ++++ b/src/adw-about-window.c +@@ -3103,7 +3103,8 @@ adw_about_window_get_translator_credits (AdwAboutWindow *self) + * should be marked as translatable. + * + * The string may contain email addresses and URLs, see the introduction for +- * more details. ++ * more details. When there is more than one translator, they must be ++ * separated by a newline in the same string. + * + * See also: + * +-- +2.47.1 + diff --git a/0032-Release-1.6.6.patch b/0032-Release-1.6.6.patch new file mode 100644 index 0000000000000000000000000000000000000000..b120f365e3700406ceabd997819067a7d0fc2e79 --- /dev/null +++ b/0032-Release-1.6.6.patch @@ -0,0 +1,53 @@ +From 8ff0e50141022c9960724f3c2ab9d270dd8daa1d Mon Sep 17 00:00:00 2001 +From: Alice Mikhaylenko +Date: Fri, 11 Apr 2025 17:10:51 +0400 +Subject: [PATCH 32/33] Release 1.6.6 + +--- + NEWS | 12 ++++++++++++ + meson.build | 4 ++-- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/NEWS b/NEWS +index 7ef28de6..d4870266 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,3 +1,15 @@ ++============= ++Version 1.6.6 ++============= ++ ++- Build ++ - Don't install internal static library ++- Avoid needlessly reassigning CSS classes for swipe shadows ++- AdwAboutDialog/Window ++ - Clarify :translator-credits docs ++- AdwToastOverlay ++ - Fix accessible role in documentation ++ + ============= + Version 1.6.5 + ============= +diff --git a/meson.build b/meson.build +index 724312ac..ee60c6e7 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('libadwaita', 'c', +- version: '1.6.5', ++ version: '1.6.6', + license: 'LGPL-2.1-or-later', + meson_version: '>= 0.59.0', + default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], +@@ -29,7 +29,7 @@ package_api_name = '@0@-@1@'.format(meson.project_name(), apiversion) + # to 0. When bumping the second version, set the third one to zero. + # + # A lot easier than libtool, right? +-libversion = '0.6.5' ++libversion = '0.6.6' + # The so major version of the library + soversion = 0 + +-- +2.47.1 + diff --git a/0033-Update-Portuguese-translation.patch b/0033-Update-Portuguese-translation.patch new file mode 100644 index 0000000000000000000000000000000000000000..0a5d93daecce8d329c9ee8fb7a30491289f1794f --- /dev/null +++ b/0033-Update-Portuguese-translation.patch @@ -0,0 +1,256 @@ +From 8a2ba8f75f212de705b213ecc244acf2a6ee899a Mon Sep 17 00:00:00 2001 +From: Hugo Carvalho +Date: Fri, 18 Apr 2025 21:58:25 +0000 +Subject: [PATCH 33/33] Update Portuguese translation + +--- + po/pt.po | 86 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 43 insertions(+), 43 deletions(-) + +diff --git a/po/pt.po b/po/pt.po +index b52d9a77..2afa0cb7 100644 +--- a/po/pt.po ++++ b/po/pt.po +@@ -2,15 +2,15 @@ + # Copyright (C) 2020 libhandy's COPYRIGHT HOLDER + # This file is distributed under the same license as the libhandy package. + # Juliano de Souza Camargo , 2020. +-# Hugo Carvalho , 2020, 2021, 2022, 2023, 2024. ++# Hugo Carvalho , 2020, 2021, 2022, 2023, 2024, 2025. + # João Carvalhinho , 2024. + # + msgid "" + msgstr "" + "Project-Id-Version: libhandy master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/libadwaita/issues\n" +-"POT-Creation-Date: 2024-08-29 14:34+0000\n" +-"PO-Revision-Date: 2024-08-30 17:41+0100\n" ++"POT-Creation-Date: 2025-04-11 13:06+0000\n" ++"PO-Revision-Date: 2025-04-18 22:56+0100\n" + "Last-Translator: Hugo Carvalho \n" + "Language-Team: Portuguese \n" + "Language: pt\n" +@@ -18,7 +18,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: Poedit 3.4.4\n" ++"X-Generator: Poedit 3.5\n" + + #: src/adw-about-dialog.c:207 src/adw-about-window.c:207 + msgid "GNU General Public License, version 2 or later" +@@ -88,70 +88,70 @@ msgstr "Licença Pública Mozilla 2.0" + msgid "BSD Zero-Clause License" + msgstr "Licença BSD Zero-Cláusulas" + +-#: src/adw-about-dialog.c:560 src/adw-about-window.c:559 ++#: src/adw-about-dialog.c:571 src/adw-about-window.c:570 + msgid "Code by" + msgstr "Código por" + +-#: src/adw-about-dialog.c:561 src/adw-about-window.c:560 ++#: src/adw-about-dialog.c:572 src/adw-about-window.c:571 + msgid "Design by" + msgstr "Design por" + +-#: src/adw-about-dialog.c:562 src/adw-about-window.c:561 ++#: src/adw-about-dialog.c:573 src/adw-about-window.c:572 + msgid "Artwork by" + msgstr "Arte gráfica por" + +-#: src/adw-about-dialog.c:563 src/adw-about-window.c:562 ++#: src/adw-about-dialog.c:574 src/adw-about-window.c:573 + msgid "Documentation by" + msgstr "Documentação por" + +-#: src/adw-about-dialog.c:564 src/adw-about-window.c:563 ++#: src/adw-about-dialog.c:575 src/adw-about-window.c:574 + msgid "Translated by" + msgstr "Traduzido por" + + #. Translators: this is the license preamble; the string at the end + #. * contains the name of the license as link text. + #. +-#: src/adw-about-dialog.c:593 src/adw-about-window.c:592 ++#: src/adw-about-dialog.c:604 src/adw-about-window.c:603 + #, c-format + msgid "" + "This application comes with absolutely no warranty. See the %s for details." + msgstr "" + "Esta aplicação vem sem absolutamente nenhuma garantia. Clique em %s para ver os detalhes." ++"href=\"%s\">%s para ver os detalhes." + +-#: src/adw-about-dialog.c:671 src/adw-about-window.c:670 ++#: src/adw-about-dialog.c:682 src/adw-about-window.c:681 + msgid "This Application" + msgstr "Esta aplicação" + +-#: src/adw-about-dialog.c:973 src/adw-about-window.c:972 ++#: src/adw-about-dialog.c:984 src/adw-about-window.c:983 + #, c-format + msgid "Version %s" + msgstr "Versão %s" + +-#: src/adw-about-dialog.c:999 src/adw-about-window.c:998 ++#: src/adw-about-dialog.c:1010 src/adw-about-window.c:1009 + msgid "Unable to parse release notes:" + msgstr "Não foi possível analisar as notas de lançamento:" + +-#: src/adw-about-dialog.c:1005 src/adw-about-window.c:1004 ++#: src/adw-about-dialog.c:1016 src/adw-about-window.c:1015 + #, c-format + msgid "Line: %d, character: %d" + msgstr "Linha: %d, carácter: %d" + +-#: src/adw-about-dialog.c:1291 src/adw-about-window.c:1290 ++#: src/adw-about-dialog.c:1302 src/adw-about-window.c:1301 + msgid "Copied to clipboard" + msgstr "Copiado para a área de transferência" + +-#: src/adw-about-dialog.c:1318 src/adw-about-window.c:1318 ++#: src/adw-about-dialog.c:1329 src/adw-about-window.c:1329 + msgid "Unable to save debugging information" + msgstr "Não foi possível guardar a informação de depuração" + +-#: src/adw-about-dialog.c:1323 src/adw-about-window.c:1323 ++#: src/adw-about-dialog.c:1334 src/adw-about-window.c:1334 + #: src/adw-sheet-controls.c:127 + msgid "Close" + msgstr "Fechar" + +-#: src/adw-about-dialog.c:1340 src/adw-about-window.c:1339 ++#: src/adw-about-dialog.c:1351 src/adw-about-window.c:1350 + msgid "Save debugging information" + msgstr "Guardar informação de depuração" + +@@ -159,56 +159,56 @@ msgstr "Guardar informação de depuração" + msgid "About" + msgstr "Acerca" + +-#: src/adw-about-dialog.ui:89 src/adw-about-window.ui:92 ++#: src/adw-about-dialog.ui:88 src/adw-about-window.ui:91 + msgid "_What’s New" + msgstr "_Novidades" + +-#: src/adw-about-dialog.ui:105 src/adw-about-window.ui:108 ++#: src/adw-about-dialog.ui:104 src/adw-about-window.ui:107 + msgid "_Details" + msgstr "_Detalhes" + +-#: src/adw-about-dialog.ui:121 src/adw-about-dialog.ui:341 +-#: src/adw-about-window.ui:124 src/adw-about-window.ui:344 ++#: src/adw-about-dialog.ui:120 src/adw-about-dialog.ui:340 ++#: src/adw-about-window.ui:123 src/adw-about-window.ui:343 + msgid "_Website" + msgstr "_Página web" + +-#: src/adw-about-dialog.ui:145 src/adw-about-window.ui:148 ++#: src/adw-about-dialog.ui:144 src/adw-about-window.ui:147 + msgid "_Support Questions" + msgstr "Perguntas de _suporte" + +-#: src/adw-about-dialog.ui:162 src/adw-about-window.ui:165 ++#: src/adw-about-dialog.ui:161 src/adw-about-window.ui:164 + msgid "_Report an Issue" + msgstr "_Reportar um problema" + +-#: src/adw-about-dialog.ui:178 src/adw-about-window.ui:181 ++#: src/adw-about-dialog.ui:177 src/adw-about-window.ui:180 + msgid "_Troubleshooting" + msgstr "Resolução de _problemas" + +-#: src/adw-about-dialog.ui:198 src/adw-about-window.ui:201 ++#: src/adw-about-dialog.ui:197 src/adw-about-window.ui:200 + msgid "_Credits" + msgstr "_Créditos" + +-#: src/adw-about-dialog.ui:214 src/adw-about-window.ui:217 ++#: src/adw-about-dialog.ui:213 src/adw-about-window.ui:216 + msgid "_Legal" + msgstr "Aviso _legal" + +-#: src/adw-about-dialog.ui:230 src/adw-about-window.ui:233 ++#: src/adw-about-dialog.ui:229 src/adw-about-window.ui:232 + msgid "_Acknowledgements" + msgstr "_Agradecimentos" + +-#: src/adw-about-dialog.ui:260 src/adw-about-window.ui:263 ++#: src/adw-about-dialog.ui:259 src/adw-about-window.ui:262 + msgid "What’s New" + msgstr "Novidades" + +-#: src/adw-about-dialog.ui:303 src/adw-about-window.ui:306 ++#: src/adw-about-dialog.ui:302 src/adw-about-window.ui:305 + msgid "Details" + msgstr "Detalhes" + +-#: src/adw-about-dialog.ui:369 src/adw-about-window.ui:372 ++#: src/adw-about-dialog.ui:368 src/adw-about-window.ui:371 + msgid "Troubleshooting" + msgstr "Resolução de problemas" + +-#: src/adw-about-dialog.ui:392 src/adw-about-window.ui:395 ++#: src/adw-about-dialog.ui:391 src/adw-about-window.ui:394 + msgid "" + "To assist in troubleshooting, you can view your debugging information. " + "Providing this information to the application developers can help diagnose " +@@ -219,36 +219,36 @@ msgstr "" + "pode ajudar a diagnosticar quaisquer problemas que encontre ao reportar um " + "problema." + +-#: src/adw-about-dialog.ui:403 src/adw-about-window.ui:406 ++#: src/adw-about-dialog.ui:402 src/adw-about-window.ui:405 + msgid "_Debugging Information" + msgstr "Informação de _depuração" + +-#: src/adw-about-dialog.ui:430 src/adw-about-window.ui:433 ++#: src/adw-about-dialog.ui:429 src/adw-about-window.ui:432 + msgid "Debugging Information" + msgstr "Informação de depuração" + +-#: src/adw-about-dialog.ui:475 src/adw-about-window.ui:478 ++#: src/adw-about-dialog.ui:474 src/adw-about-window.ui:477 + msgid "_Copy Text" + msgstr "_Copiar texto" + +-#: src/adw-about-dialog.ui:483 src/adw-about-window.ui:486 ++#: src/adw-about-dialog.ui:482 src/adw-about-window.ui:485 + msgid "_Save As…" + msgstr "_Guardar como…" + +-#: src/adw-about-dialog.ui:496 src/adw-about-window.ui:499 ++#: src/adw-about-dialog.ui:495 src/adw-about-window.ui:498 + msgid "Credits" + msgstr "Créditos" + +-#: src/adw-about-dialog.ui:527 src/adw-about-window.ui:530 ++#: src/adw-about-dialog.ui:526 src/adw-about-window.ui:529 + msgid "Legal" + msgstr "Aviso legal" + +-#: src/adw-about-dialog.ui:559 src/adw-about-window.ui:562 ++#: src/adw-about-dialog.ui:558 src/adw-about-window.ui:561 + msgid "Acknowledgements" + msgstr "Agradecimentos" + +-#: src/adw-back-button.c:330 src/adw-back-button.c:428 +-#: src/adw-back-button.c:538 ++#: src/adw-back-button.c:311 src/adw-back-button.c:409 ++#: src/adw-back-button.c:519 + msgid "Back" + msgstr "Recuar" + +@@ -371,7 +371,7 @@ msgstr "O Caps Lock está ligado" + msgid "_Show Password" + msgstr "_Mostrar palavra-passe" + +-#: src/adw-preferences-dialog.c:256 src/adw-preferences-window.c:261 ++#: src/adw-preferences-dialog.c:262 src/adw-preferences-window.c:261 + msgid "Untitled page" + msgstr "Página sem título" + +-- +2.47.1 + diff --git a/libadwaita-1.6.1.tar.xz b/libadwaita-1.6.2.tar.xz similarity index 39% rename from libadwaita-1.6.1.tar.xz rename to libadwaita-1.6.2.tar.xz index 1de88ffa1d134aca745177483b45ecdcd91ecee1..4a6f873824e43964611a0d68ea92be90d8b28ced 100644 Binary files a/libadwaita-1.6.1.tar.xz and b/libadwaita-1.6.2.tar.xz differ diff --git a/libadwaita.spec b/libadwaita.spec index 67bb390df36a0db58ff9e62c06319a747a7051ae..820234e1a96c0cf0fa34b4db647c757643a44f49 100644 --- a/libadwaita.spec +++ b/libadwaita.spec @@ -1,14 +1,41 @@ -%define anolis_release 1 +%define anolis_release 1 %global apiver %%(echo %{version} | cut -d '.' -f 1) Name: libadwaita -Version: 1.6.1 +Version: 1.6.6 Release: %{anolis_release}%{?dist} Summary: Building blocks for modern GNOME applications License: LGPL-2.1-or-later AND MIT URL: https://gitlab.gnome.org/GNOME/libadwaita -Source0: https://download.gnome.org/sources/%{name}/1.6/%{name}-%{version}.tar.xz +Source0: https://download.gnome.org/sources/libadwaita/1.6/libadwaita-1.6.2.tar.xz +Patch1: 0013-length-unit-Also-fall-back-if-gtk-xft-dpi-is-default.patch +Patch2: 0030-toast-overlay-The-role-is-GROUP-not-TAB_GROUP.patch +Patch3: 0001-dialog-Properly-unparent-the-child-when-backed-by-a-.patch +Patch4: 0007-clamp-Fix-multi-child-support.patch +Patch5: 0029-shadow-helper-Avoid-needlessly-reassigning-CSS-class.patch +Patch6: 0031-docs-clarify-translator-credits-for-multiple-contrib.patch +Patch7: 0002-dialog-Handle-close-before-and-right-after-present.patch +Patch8: 0014-Release-1.6.3.patch +Patch9: 0003-bottom-sheet-Fix-more-criticals-on-dispose.patch +Patch10: 0033-Update-Portuguese-translation.patch +Patch11: 0012-action-row-Set-accessible-role-presentation.patch +Patch12: 0032-Release-1.6.6.patch +Patch13: 0021-breakpoint-Make-sure-to_string-is-locale-agnostic.patch +Patch14: 0028-meson-Don-t-install-internal-static-library.patch +Patch15: 0024-Release-1.6.4.patch +Patch16: 0008-bottom-sheet-Fix-a-crash-when-closing-twice.patch +Patch17: 0016-tab-box-grid-Fix-scrolling-to-newly-appearing-tabs.patch +Patch18: 0019-tab-box-grid-Fix-a-copypaste-error.patch +Patch19: 0010-combo-row-Fix-property-notification.patch +Patch20: 0017-dialog-Fix-closed-emission-with-window-backed-dialog.patch +Patch21: 0009-header-bar-Ignore-split-views-outside-sheets.patch +Patch22: 0022-dialog-always-clear-priv-last_focus-weak-pointer.patch +Patch23: 0026-preferences-dialog-window-Fix-the-search-filter-stac.patch +Patch24: 0025-dialog-notify-for-current-breakpoint-passed-through-.patch +Patch25: 0018-combo-row-Set-width-chars-1-for-the-item-labels.patch +Patch26: 0027-Release-1.6.5.patch +Patch27: 0023-dialog-keep-a-weak-pointer-on-focus_widget.patch BuildRequires: intltool gcc gi-docgen meson >= 0.59.0 sassc vala BuildRequires: libappstream-glib @@ -20,6 +47,10 @@ BuildRequires: pkgconfig(gio-2.0) >= 2.76 BuildRequires: pkgconfig(glib-2.0) >= 2.76 BuildRequires: pkgconfig(gobject-introspection-1.0) BuildRequires: pkgconfig(gtk4) >= 4.15.2 +BuildRequires: desktop-file-utils +BuildRequires: gettext +BuildRequires: pkgconfig(appstream) +BuildRequires: pkgconfig(glib-2.0) >= 2.76.0 %description Building blocks for modern GNOME applications. @@ -117,6 +148,34 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.xml %changelog +* Thu Sep 18 2025 wenyuzifang - 1.6.6-1 +- Updated to version 1.6.6 to fix xxxxxx +- Ensure correct DPI fallback for accurate UI scaling on displays with undefined or default DPI settings. +- Fix accessibility semantics by correctly using GROUP role instead of TAB_GROUP for toast overlay containers. +- Fix improper unparenting to prevent memory leaks and ensure safe widget disposal. +- Fix incorrect layout behavior by ensuring all children are processed in clamp layout. +- Ensure reliable dialog closure by handling premature close calls and triggering proper callbacks for consistent behavior. +- Apply patch to fix critical bugs, improve accessibility, and ensure stable, reliable UI behavior across all components. +- Fix object disposal order to prevent critical warnings and crashes during cleanup. +- Fix HTML syntax in translation, update metadata, and ensure localization accuracy for Portuguese users. +- Improve accessibility by marking prefix icons as presentational to prevent screen readers from announcing decorative images. +- Apply patch to ensure cleaner builds, improved accessibility docs, and optimized CSS handling. +- Ensure consistent CSS-like breakpoint syntax by using dot decimal separators regardless of system locale. +- Prevent installing internal static libraries to avoid system clutter and maintain build cleanliness. +- Apply patch to fix critical bugs in UI rendering, focus handling, and locale compatibility, ensuring stability and correctness. +- Fix crash when closing bottom sheet twice by ensuring proper state tracking. +- Ensure newly added tabs are always scrolled into view correctly and remain visible after opening. +- Fix a copy-paste error to prevent use-after-free by correctly clearing the middle-clicked tab reference. +- Ensure correct property notification to maintain UI consistency and reliable bindings. +- Fix signal emission order and prevent state inconsistencies when closing window-backed dialogs. +- Preserve close buttons in sheets by ignoring irrelevant outer split views during layout detection. +- Prevent memory corruption by safely clearing weak pointers during dialog disposal. +- Fix type safety by using the correct page type to prevent potential crashes and ensure future compatibility. +- Ensure breakpoint change notifications work reliably for bindings and signals in responsive dialog layouts. +- Prevent clipping of narrow characters in combo row labels by ensuring minimum label width. +- Apply patch to fix critical notification and search filtering bugs in dialog and preferences components. +- Prevent crashes by ensuring safe widget reference handling with weak pointers. + * Tue Mar 25 2025 Xiaoping Liu - 1.6.1-1 - update to 1.6.1 from 1.4.2 - add new file internal.so