From 3841a1cd86af7bd8df019ee920283cd561c87c0a Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 1 Apr 2024 13:27:59 +0000 Subject: [PATCH] import CS libadwaita-1.4.2-2.el9 --- .gitignore | 2 +- .libadwaita.metadata | 2 +- ...1-downgrade-glib-requirement-to-2_68.patch | 1716 +++++++++++++++++ SPECS/libadwaita.spec | 74 +- 4 files changed, 1769 insertions(+), 25 deletions(-) create mode 100644 SOURCES/0001-downgrade-glib-requirement-to-2_68.patch diff --git a/.gitignore b/.gitignore index a106aac..4db1540 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libadwaita-1.0.0.alpha.3.tar.gz +SOURCES/libadwaita-1.4.2.tar.xz diff --git a/.libadwaita.metadata b/.libadwaita.metadata index 513b04a..9a78a35 100644 --- a/.libadwaita.metadata +++ b/.libadwaita.metadata @@ -1 +1 @@ -a0f5d16e2a9cceca823be05493588ab07e04a376 SOURCES/libadwaita-1.0.0.alpha.3.tar.gz +f86b180c06137d96f3d10866b5b3fe8bef872951 SOURCES/libadwaita-1.4.2.tar.xz diff --git a/SOURCES/0001-downgrade-glib-requirement-to-2_68.patch b/SOURCES/0001-downgrade-glib-requirement-to-2_68.patch new file mode 100644 index 0000000..3768dfa --- /dev/null +++ b/SOURCES/0001-downgrade-glib-requirement-to-2_68.patch @@ -0,0 +1,1716 @@ +diff --git a/demo/adw-demo-debug-info.c b/demo/adw-demo-debug-info.c +index a7f0c1a..d67db89 100644 +--- a/demo/adw-demo-debug-info.c ++++ b/demo/adw-demo-debug-info.c +@@ -166,5 +166,5 @@ adw_demo_generate_debug_info (void) + g_string_append_printf (string, "- ADW_DISABLE_PORTAL: %s\n", adw_disable_portal); + } + +- return g_string_free_and_steal (string); ++ return g_string_free (string, FALSE); + } +diff --git a/demo/adw-demo-preferences-window.c b/demo/adw-demo-preferences-window.c +index 5212804..f9b2b80 100644 +--- a/demo/adw-demo-preferences-window.c ++++ b/demo/adw-demo-preferences-window.c +@@ -8,7 +8,7 @@ struct _AdwDemoPreferencesWindow + AdwNavigationPage *subpage2; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPreferencesWindow, adw_demo_preferences_window, ADW_TYPE_PREFERENCES_WINDOW) ++G_DEFINE_TYPE (AdwDemoPreferencesWindow, adw_demo_preferences_window, ADW_TYPE_PREFERENCES_WINDOW) + + AdwDemoPreferencesWindow * + adw_demo_preferences_window_new (void) +diff --git a/demo/adw-demo-window.c b/demo/adw-demo-window.c +index 195a47a..65d9bcd 100644 +--- a/demo/adw-demo-window.c ++++ b/demo/adw-demo-window.c +@@ -30,7 +30,7 @@ struct _AdwDemoWindow + AdwDemoPageToasts *toasts_page; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoWindow, adw_demo_window, ADW_TYPE_APPLICATION_WINDOW) ++G_DEFINE_TYPE (AdwDemoWindow, adw_demo_window, ADW_TYPE_APPLICATION_WINDOW) + + static char * + get_color_scheme_icon_name (gpointer user_data, +diff --git a/demo/pages/about/adw-demo-page-about.c b/demo/pages/about/adw-demo-page-about.c +index f26d194..1dab4fd 100644 +--- a/demo/pages/about/adw-demo-page-about.c ++++ b/demo/pages/about/adw-demo-page-about.c +@@ -7,7 +7,7 @@ struct _AdwDemoPageAbout + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageAbout, adw_demo_page_about, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageAbout, adw_demo_page_about, ADW_TYPE_BIN) + + static void + demo_run_cb (AdwDemoPageAbout *self) +diff --git a/demo/pages/animations/adw-demo-page-animations.c b/demo/pages/animations/adw-demo-page-animations.c +index 3f548c1..3b8f9be 100644 +--- a/demo/pages/animations/adw-demo-page-animations.c ++++ b/demo/pages/animations/adw-demo-page-animations.c +@@ -2,6 +2,8 @@ + + #include + ++#include "../../../src/adw-macros-private.h" ++ + struct _AdwDemoPageAnimations + { + AdwBin parent_instance; +@@ -33,7 +35,7 @@ enum { + + static GParamSpec *props[LAST_PROP]; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageAnimations, adw_demo_page_animations, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageAnimations, adw_demo_page_animations, ADW_TYPE_BIN) + + static AdwAnimation * + get_current_animation (AdwDemoPageAnimations *self) +diff --git a/demo/pages/avatar/adw-demo-page-avatar.c b/demo/pages/avatar/adw-demo-page-avatar.c +index 2bc9da3..2104361 100644 +--- a/demo/pages/avatar/adw-demo-page-avatar.c ++++ b/demo/pages/avatar/adw-demo-page-avatar.c +@@ -12,7 +12,7 @@ struct _AdwDemoPageAvatar + GtkListBox *contacts; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageAvatar, adw_demo_page_avatar, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageAvatar, adw_demo_page_avatar, ADW_TYPE_BIN) + + static char * + create_random_name (void) +diff --git a/demo/pages/buttons/adw-demo-page-buttons.c b/demo/pages/buttons/adw-demo-page-buttons.c +index 2a205cc..f586871 100644 +--- a/demo/pages/buttons/adw-demo-page-buttons.c ++++ b/demo/pages/buttons/adw-demo-page-buttons.c +@@ -7,7 +7,7 @@ struct _AdwDemoPageButtons + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageButtons, adw_demo_page_buttons, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageButtons, adw_demo_page_buttons, ADW_TYPE_BIN) + + static void + adw_demo_page_buttons_class_init (AdwDemoPageButtonsClass *klass) +diff --git a/demo/pages/carousel/adw-demo-page-carousel.c b/demo/pages/carousel/adw-demo-page-carousel.c +index 621f3e1..1c0bf10 100644 +--- a/demo/pages/carousel/adw-demo-page-carousel.c ++++ b/demo/pages/carousel/adw-demo-page-carousel.c +@@ -13,7 +13,7 @@ struct _AdwDemoPageCarousel + AdwComboRow *indicators_row; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageCarousel, adw_demo_page_carousel, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageCarousel, adw_demo_page_carousel, ADW_TYPE_BIN) + + static char * + get_orientation_name (AdwEnumListItem *item, +diff --git a/demo/pages/clamp/adw-demo-page-clamp.c b/demo/pages/clamp/adw-demo-page-clamp.c +index 1a5fe94..7d9802b 100644 +--- a/demo/pages/clamp/adw-demo-page-clamp.c ++++ b/demo/pages/clamp/adw-demo-page-clamp.c +@@ -7,7 +7,7 @@ struct _AdwDemoPageClamp + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageClamp, adw_demo_page_clamp, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageClamp, adw_demo_page_clamp, ADW_TYPE_BIN) + + static void + adw_demo_page_clamp_class_init (AdwDemoPageClampClass *klass) +diff --git a/demo/pages/dialogs/adw-demo-page-dialogs.c b/demo/pages/dialogs/adw-demo-page-dialogs.c +index 37b7936..0bcae9d 100644 +--- a/demo/pages/dialogs/adw-demo-page-dialogs.c ++++ b/demo/pages/dialogs/adw-demo-page-dialogs.c +@@ -9,7 +9,7 @@ struct _AdwDemoPageDialogs + AdwToast *last_toast; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageDialogs, adw_demo_page_dialogs, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageDialogs, adw_demo_page_dialogs, ADW_TYPE_BIN) + + enum { + SIGNAL_ADD_TOAST, +diff --git a/demo/pages/lists/adw-demo-page-lists.c b/demo/pages/lists/adw-demo-page-lists.c +index 1b3f9ce..b3a782f 100644 +--- a/demo/pages/lists/adw-demo-page-lists.c ++++ b/demo/pages/lists/adw-demo-page-lists.c +@@ -14,7 +14,7 @@ enum { + + static guint signals[SIGNAL_LAST_SIGNAL]; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageLists, adw_demo_page_lists, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageLists, adw_demo_page_lists, ADW_TYPE_BIN) + + static void + entry_apply_cb (AdwDemoPageLists *self) +diff --git a/demo/pages/navigation-view/adw-demo-page-navigation-view.c b/demo/pages/navigation-view/adw-demo-page-navigation-view.c +index 3624622..db0a6c9 100644 +--- a/demo/pages/navigation-view/adw-demo-page-navigation-view.c ++++ b/demo/pages/navigation-view/adw-demo-page-navigation-view.c +@@ -9,7 +9,7 @@ struct _AdwDemoPageNavigationView + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageNavigationView, adw_demo_page_navigation_view, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageNavigationView, adw_demo_page_navigation_view, ADW_TYPE_BIN) + + static void + demo_run_cb (AdwDemoPageNavigationView *self) +diff --git a/demo/pages/navigation-view/adw-navigation-view-demo-window.c b/demo/pages/navigation-view/adw-navigation-view-demo-window.c +index 389efb3..a06328f 100644 +--- a/demo/pages/navigation-view/adw-navigation-view-demo-window.c ++++ b/demo/pages/navigation-view/adw-navigation-view-demo-window.c +@@ -7,7 +7,7 @@ struct _AdwNavigationViewDemoWindow + AdwWindow parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwNavigationViewDemoWindow, adw_navigation_view_demo_window, ADW_TYPE_WINDOW) ++G_DEFINE_TYPE (AdwNavigationViewDemoWindow, adw_navigation_view_demo_window, ADW_TYPE_WINDOW) + + static void + adw_navigation_view_demo_window_class_init (AdwNavigationViewDemoWindowClass *klass) +diff --git a/demo/pages/split-views/adw-demo-page-split-views.c b/demo/pages/split-views/adw-demo-page-split-views.c +index 260a47e..2ed90ca 100644 +--- a/demo/pages/split-views/adw-demo-page-split-views.c ++++ b/demo/pages/split-views/adw-demo-page-split-views.c +@@ -10,7 +10,7 @@ struct _AdwDemoPageSplitViews + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageSplitViews, adw_demo_page_split_views, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageSplitViews, adw_demo_page_split_views, ADW_TYPE_BIN) + + static void + demo_run_navigation_cb (AdwDemoPageSplitViews *self) +diff --git a/demo/pages/split-views/adw-navigation-split-view-demo-window.c b/demo/pages/split-views/adw-navigation-split-view-demo-window.c +index 7a982f8..c530e7d 100644 +--- a/demo/pages/split-views/adw-navigation-split-view-demo-window.c ++++ b/demo/pages/split-views/adw-navigation-split-view-demo-window.c +@@ -7,7 +7,7 @@ struct _AdwNavigationSplitViewDemoWindow + AdwWindow parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwNavigationSplitViewDemoWindow, adw_navigation_split_view_demo_window, ADW_TYPE_WINDOW) ++G_DEFINE_TYPE (AdwNavigationSplitViewDemoWindow, adw_navigation_split_view_demo_window, ADW_TYPE_WINDOW) + + static void + adw_navigation_split_view_demo_window_class_init (AdwNavigationSplitViewDemoWindowClass *klass) +diff --git a/demo/pages/split-views/adw-overlay-split-view-demo-window.c b/demo/pages/split-views/adw-overlay-split-view-demo-window.c +index 1ecd04c..6020713 100644 +--- a/demo/pages/split-views/adw-overlay-split-view-demo-window.c ++++ b/demo/pages/split-views/adw-overlay-split-view-demo-window.c +@@ -10,7 +10,7 @@ struct _AdwOverlaySplitViewDemoWindow + GtkToggleButton *start_button; + }; + +-G_DEFINE_FINAL_TYPE (AdwOverlaySplitViewDemoWindow, adw_overlay_split_view_demo_window, ADW_TYPE_WINDOW) ++G_DEFINE_TYPE (AdwOverlaySplitViewDemoWindow, adw_overlay_split_view_demo_window, ADW_TYPE_WINDOW) + + static void + start_button_notify_active_cb (AdwOverlaySplitViewDemoWindow *self) +diff --git a/demo/pages/styles/adw-demo-page-styles.c b/demo/pages/styles/adw-demo-page-styles.c +index 0e516cc..cb21ff0 100644 +--- a/demo/pages/styles/adw-demo-page-styles.c ++++ b/demo/pages/styles/adw-demo-page-styles.c +@@ -9,7 +9,7 @@ struct _AdwDemoPageStyles + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageStyles, adw_demo_page_styles, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageStyles, adw_demo_page_styles, ADW_TYPE_BIN) + + static void + demo_run_cb (AdwDemoPageStyles *self) +diff --git a/demo/pages/styles/adw-style-demo-window.c b/demo/pages/styles/adw-style-demo-window.c +index 77bc8ad..fd7fda1 100644 +--- a/demo/pages/styles/adw-style-demo-window.c ++++ b/demo/pages/styles/adw-style-demo-window.c +@@ -13,7 +13,7 @@ struct _AdwStyleDemoWindow + AdwNavigationSplitView *split_view; + }; + +-G_DEFINE_FINAL_TYPE (AdwStyleDemoWindow, adw_style_demo_window, ADW_TYPE_WINDOW) ++G_DEFINE_TYPE (AdwStyleDemoWindow, adw_style_demo_window, ADW_TYPE_WINDOW) + + enum { + PROP_0, +diff --git a/demo/pages/tab-view/adw-demo-page-tab-view.c b/demo/pages/tab-view/adw-demo-page-tab-view.c +index 7333f54..7778f75 100644 +--- a/demo/pages/tab-view/adw-demo-page-tab-view.c ++++ b/demo/pages/tab-view/adw-demo-page-tab-view.c +@@ -9,7 +9,7 @@ struct _AdwDemoPageTabView + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageTabView, adw_demo_page_tab_view, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageTabView, adw_demo_page_tab_view, ADW_TYPE_BIN) + + static void + demo_run_cb (AdwDemoPageTabView *self) +diff --git a/demo/pages/tab-view/adw-tab-view-demo-page.c b/demo/pages/tab-view/adw-tab-view-demo-page.c +index 00da483..1244d20 100644 +--- a/demo/pages/tab-view/adw-tab-view-demo-page.c ++++ b/demo/pages/tab-view/adw-tab-view-demo-page.c +@@ -13,7 +13,7 @@ struct _AdwTabViewDemoPage + GIcon *last_icon; + }; + +-G_DEFINE_FINAL_TYPE (AdwTabViewDemoPage, adw_tab_view_demo_page, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwTabViewDemoPage, adw_tab_view_demo_page, ADW_TYPE_BIN) + + #define N_COLORS 8 + +diff --git a/demo/pages/tab-view/adw-tab-view-demo-window.c b/demo/pages/tab-view/adw-tab-view-demo-window.c +index b9224a8..55d9306 100644 +--- a/demo/pages/tab-view/adw-tab-view-demo-window.c ++++ b/demo/pages/tab-view/adw-tab-view-demo-window.c +@@ -17,7 +17,7 @@ struct _AdwTabViewDemoWindow + gboolean in_dispose; + }; + +-G_DEFINE_FINAL_TYPE (AdwTabViewDemoWindow, adw_tab_view_demo_window, ADW_TYPE_WINDOW) ++G_DEFINE_TYPE (AdwTabViewDemoWindow, adw_tab_view_demo_window, ADW_TYPE_WINDOW) + + static void + window_new (GSimpleAction *action, +diff --git a/demo/pages/toasts/adw-demo-page-toasts.c b/demo/pages/toasts/adw-demo-page-toasts.c +index 441c24d..39826bc 100644 +--- a/demo/pages/toasts/adw-demo-page-toasts.c ++++ b/demo/pages/toasts/adw-demo-page-toasts.c +@@ -17,7 +17,7 @@ enum { + + static guint signals[SIGNAL_LAST_SIGNAL]; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageToasts, adw_demo_page_toasts, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageToasts, adw_demo_page_toasts, ADW_TYPE_BIN) + + static void + add_toast (AdwDemoPageToasts *self, +diff --git a/demo/pages/view-switcher/adw-demo-page-view-switcher.c b/demo/pages/view-switcher/adw-demo-page-view-switcher.c +index ba38a54..1e15e8e 100644 +--- a/demo/pages/view-switcher/adw-demo-page-view-switcher.c ++++ b/demo/pages/view-switcher/adw-demo-page-view-switcher.c +@@ -9,7 +9,7 @@ struct _AdwDemoPageViewSwitcher + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageViewSwitcher, adw_demo_page_view_switcher, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageViewSwitcher, adw_demo_page_view_switcher, ADW_TYPE_BIN) + + static void + demo_run_cb (AdwDemoPageViewSwitcher *self) +diff --git a/demo/pages/view-switcher/adw-view-switcher-demo-window.c b/demo/pages/view-switcher/adw-view-switcher-demo-window.c +index e35788d..55d8e91 100644 +--- a/demo/pages/view-switcher/adw-view-switcher-demo-window.c ++++ b/demo/pages/view-switcher/adw-view-switcher-demo-window.c +@@ -7,7 +7,7 @@ struct _AdwViewSwitcherDemoWindow + AdwWindow parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwViewSwitcherDemoWindow, adw_view_switcher_demo_window, ADW_TYPE_WINDOW) ++G_DEFINE_TYPE (AdwViewSwitcherDemoWindow, adw_view_switcher_demo_window, ADW_TYPE_WINDOW) + + static void + adw_view_switcher_demo_window_class_init (AdwViewSwitcherDemoWindowClass *klass) +diff --git a/demo/pages/welcome/adw-demo-page-welcome.c b/demo/pages/welcome/adw-demo-page-welcome.c +index e0683e5..91d7433 100644 +--- a/demo/pages/welcome/adw-demo-page-welcome.c ++++ b/demo/pages/welcome/adw-demo-page-welcome.c +@@ -7,7 +7,7 @@ struct _AdwDemoPageWelcome + AdwBin parent_instance; + }; + +-G_DEFINE_FINAL_TYPE (AdwDemoPageWelcome, adw_demo_page_welcome, ADW_TYPE_BIN) ++G_DEFINE_TYPE (AdwDemoPageWelcome, adw_demo_page_welcome, ADW_TYPE_BIN) + + static void + adw_demo_page_welcome_class_init (AdwDemoPageWelcomeClass *klass) +diff --git a/src/adw-about-window.c b/src/adw-about-window.c +index b2ab763..d8fc82d 100644 +--- a/src/adw-about-window.c ++++ b/src/adw-about-window.c +@@ -12,6 +12,7 @@ + + #include "adw-action-row.h" + #include "adw-header-bar.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-message-dialog.h" + #include "adw-navigation-view.h" +diff --git a/src/adw-animation-target.c b/src/adw-animation-target.c +index b30bcdd..19d2e2e 100644 +--- a/src/adw-animation-target.c ++++ b/src/adw-animation-target.c +@@ -8,6 +8,8 @@ + + #include "adw-animation-target-private.h" + ++#include "adw-macros-private.h" ++ + /** + * AdwAnimationTarget: + * +diff --git a/src/adw-avatar.c b/src/adw-avatar.c +index ee2bd51..f0aecb8 100644 +--- a/src/adw-avatar.c ++++ b/src/adw-avatar.c +@@ -15,6 +15,7 @@ + + #include "adw-avatar.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + + #define NUMBER_OF_COLORS 14 + +diff --git a/src/adw-back-button.c b/src/adw-back-button.c +index 055dd10..0bbf48a 100644 +--- a/src/adw-back-button.c ++++ b/src/adw-back-button.c +@@ -12,6 +12,7 @@ + #include "adw-back-button-private.h" + + #include "adw-bin.h" ++#include "adw-macros-private.h" + #include "adw-navigation-view-private.h" + #include "adw-widget-utils-private.h" + +@@ -305,7 +306,7 @@ pop_to_page_cb (AdwBackButton *self, + g_slist_free_full (pop_data.pop_before, g_free); + } + +-static void ++static gboolean + clear_menu (AdwBackButton *self) + { + g_clear_pointer (&self->navigation_menu, gtk_widget_unparent); +@@ -316,6 +317,7 @@ clear_menu (AdwBackButton *self) + } + + self->clear_menu_id = 0; ++ return G_SOURCE_REMOVE; + } + + static void +@@ -325,7 +327,7 @@ navigation_menu_closed_cb (AdwBackButton *self) + + gtk_widget_unset_state_flags (button, GTK_STATE_FLAG_CHECKED); + +- self->clear_menu_id = g_idle_add_once ((GSourceOnceFunc) clear_menu, self); ++ self->clear_menu_id = g_idle_add ((GSourceFunc) clear_menu, self); + } + + static void +diff --git a/src/adw-banner.c b/src/adw-banner.c +index 7cd6e07..570e3de 100644 +--- a/src/adw-banner.c ++++ b/src/adw-banner.c +@@ -9,6 +9,7 @@ + #include "adw-banner.h" + + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-widget-utils-private.h" + +diff --git a/src/adw-breakpoint.c b/src/adw-breakpoint.c +index e00dcd5..8fc4a7c 100644 +--- a/src/adw-breakpoint.c ++++ b/src/adw-breakpoint.c +@@ -12,6 +12,7 @@ + + #include "adw-gtkbuilder-utils-private.h" + #include "adw-length-unit.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + + #include +diff --git a/src/adw-button-content.c b/src/adw-button-content.c +index 485dc14..b57b533 100644 +--- a/src/adw-button-content.c ++++ b/src/adw-button-content.c +@@ -9,6 +9,7 @@ + #include "config.h" + #include "adw-button-content.h" + ++#include "adw-macros-private.h" + #include "adw-split-button.h" + + /** +diff --git a/src/adw-carousel-indicator-dots.c b/src/adw-carousel-indicator-dots.c +index 3b07ae9..06d3da0 100644 +--- a/src/adw-carousel-indicator-dots.c ++++ b/src/adw-carousel-indicator-dots.c +@@ -9,6 +9,7 @@ + #include "adw-carousel-indicator-dots.h" + + #include "adw-animation-util.h" ++#include "adw-macros-private.h" + #include "adw-swipeable.h" + #include "adw-timed-animation.h" + +diff --git a/src/adw-carousel-indicator-lines.c b/src/adw-carousel-indicator-lines.c +index 423e654..3804de3 100644 +--- a/src/adw-carousel-indicator-lines.c ++++ b/src/adw-carousel-indicator-lines.c +@@ -8,6 +8,7 @@ + + #include "adw-carousel-indicator-lines.h" + ++#include "adw-macros-private.h" + #include "adw-swipeable.h" + #include "adw-timed-animation.h" + +diff --git a/src/adw-carousel.c b/src/adw-carousel.c +index a80ff38..d725e30 100644 +--- a/src/adw-carousel.c ++++ b/src/adw-carousel.c +@@ -9,6 +9,7 @@ + #include "adw-carousel.h" + + #include "adw-animation-util.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-navigation-direction.h" + #include "adw-spring-animation.h" +@@ -465,10 +466,11 @@ update_orientation (AdwCarousel *self) + set_orientable_style_classes (GTK_ORIENTABLE (self)); + } + +-static void ++static gboolean + scroll_timeout_cb (AdwCarousel *self) + { + self->can_scroll = TRUE; ++ return G_SOURCE_REMOVE; + } + + static gboolean +@@ -534,9 +536,9 @@ scroll_cb (AdwCarousel *self, + + self->can_scroll = FALSE; + self->scroll_timeout_id = +- g_timeout_add_once (SCROLL_TIMEOUT_DURATION, +- (GSourceOnceFunc) scroll_timeout_cb, +- self); ++ g_timeout_add (SCROLL_TIMEOUT_DURATION, ++ (GSourceFunc) scroll_timeout_cb, ++ self); + + return GDK_EVENT_STOP; + } +@@ -1432,7 +1434,7 @@ adw_carousel_scroll_to (AdwCarousel *self, + data->widget = g_object_ref (widget); + data->animate = animate; + +- g_idle_add_once ((GSourceOnceFunc) scroll_to_idle_cb, data); ++ g_idle_add ((GSourceFunc) scroll_to_idle_cb, data); + return; + } + +diff --git a/src/adw-clamp-layout.c b/src/adw-clamp-layout.c +index 12594e5..709b6ec 100644 +--- a/src/adw-clamp-layout.c ++++ b/src/adw-clamp-layout.c +@@ -13,6 +13,7 @@ + #include "adw-easing.h" + #include "adw-enums.h" + #include "adw-length-unit.h" ++#include "adw-macros-private.h" + + /** + * AdwClampLayout: +diff --git a/src/adw-clamp-scrollable.c b/src/adw-clamp-scrollable.c +index e40de93..ee18ae0 100644 +--- a/src/adw-clamp-scrollable.c ++++ b/src/adw-clamp-scrollable.c +@@ -10,6 +10,7 @@ + #include "adw-clamp-layout.h" + #include "adw-enums.h" + #include "adw-length-unit.h" ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +diff --git a/src/adw-clamp.c b/src/adw-clamp.c +index 5ed5c54..64cacf4 100644 +--- a/src/adw-clamp.c ++++ b/src/adw-clamp.c +@@ -10,6 +10,7 @@ + #include "adw-clamp-layout.h" + #include "adw-enums.h" + #include "adw-length-unit.h" ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +diff --git a/src/adw-enum-list-model.c b/src/adw-enum-list-model.c +index f6018b4..2d920b0 100644 +--- a/src/adw-enum-list-model.c ++++ b/src/adw-enum-list-model.c +@@ -8,6 +8,8 @@ + + #include "adw-enum-list-model.h" + ++#include "adw-macros-private.h" ++ + #include + #include + +diff --git a/src/adw-fading-label.c b/src/adw-fading-label.c +index 8b34fd3..415cfd1 100644 +--- a/src/adw-fading-label.c ++++ b/src/adw-fading-label.c +@@ -11,6 +11,7 @@ + + #include + #include "adw-bidi-private.h" ++#include "adw-macros-private.h" + + #define FADE_WIDTH 18.0f + +diff --git a/src/adw-flap.c b/src/adw-flap.c +index 3a1f6d7..cb8291d 100644 +--- a/src/adw-flap.c ++++ b/src/adw-flap.c +@@ -12,6 +12,7 @@ + + #include "adw-animation-util.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-shadow-helper-private.h" + #include "adw-spring-animation.h" + #include "adw-swipeable.h" +diff --git a/src/adw-gizmo.c b/src/adw-gizmo.c +index 217071e..df1695e 100644 +--- a/src/adw-gizmo.c ++++ b/src/adw-gizmo.c +@@ -9,6 +9,7 @@ + + #include "adw-gizmo-private.h" + ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + struct _AdwGizmo +diff --git a/src/adw-header-bar.c b/src/adw-header-bar.c +index 052ce75..336963e 100644 +--- a/src/adw-header-bar.c ++++ b/src/adw-header-bar.c +@@ -27,6 +27,7 @@ + #include "adw-bin.h" + #include "adw-enums.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-navigation-split-view.h" + #include "adw-navigation-view.h" + #include "adw-overlay-split-view.h" +diff --git a/src/adw-indicator-bin.c b/src/adw-indicator-bin.c +index 24b290d..5c0686c 100644 +--- a/src/adw-indicator-bin.c ++++ b/src/adw-indicator-bin.c +@@ -10,6 +10,7 @@ + #include "adw-indicator-bin-private.h" + + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +diff --git a/src/adw-inspector-page.c b/src/adw-inspector-page.c +index fa28678..9708735 100644 +--- a/src/adw-inspector-page.c ++++ b/src/adw-inspector-page.c +@@ -12,6 +12,7 @@ + #include "adw-inspector-page-private.h" + + #include ++#include "adw-macros-private.h" + #include "adw-settings-private.h" + + struct _AdwInspectorPage +diff --git a/src/adw-leaflet.c b/src/adw-leaflet.c +index 17767eb..fb7047c 100644 +--- a/src/adw-leaflet.c ++++ b/src/adw-leaflet.c +@@ -10,6 +10,7 @@ + #include "adw-animation-util.h" + #include "adw-enums-private.h" + #include "adw-fold-threshold-policy.h" ++#include "adw-macros-private.h" + #include "adw-leaflet.h" + #include "adw-shadow-helper-private.h" + #include "adw-spring-animation.h" +diff --git a/src/adw-macros-private.h b/src/adw-macros-private.h +new file mode 100644 +index 0000000..a7b6638 +--- /dev/null ++++ b/src/adw-macros-private.h +@@ -0,0 +1,28 @@ ++/* ++ * Copyright (C) 2021 Purism SPC ++ * ++ * SPDX-License-Identifier: LGPL-2.1-or-later ++ */ ++ ++#pragma once ++ ++#if !defined(_ADWAITA_INSIDE) && !defined(ADWAITA_COMPILATION) ++#error "Only can be included directly." ++#endif ++ ++#include ++ ++G_BEGIN_DECLS ++ ++#if !GLIB_CHECK_VERSION(2, 70, 0) ++#define G_DEFINE_FINAL_TYPE G_DEFINE_TYPE ++#define G_DEFINE_FINAL_TYPE_WITH_CODE G_DEFINE_TYPE_WITH_CODE ++#endif ++ ++#if !GLIB_CHECK_VERSION(2, 76, 0) ++gboolean adw_g_set_str (char **str_pointer, const char *new_str); ++#define g_set_str adw_g_set_str ++#define g_string_free_and_steal(x) g_string_free ((x), FALSE) ++#endif ++ ++G_END_DECLS +diff --git a/src/adw-main.c b/src/adw-main.c +index e6e3493..385d24c 100644 +--- a/src/adw-main.c ++++ b/src/adw-main.c +@@ -8,6 +8,7 @@ + #include "adw-main-private.h" + + #include "adw-inspector-page-private.h" ++#include "adw-macros-private.h" + #include "adw-style-manager-private.h" + #include + #include +@@ -88,3 +89,20 @@ adw_is_granite_present (void) + + return present; + } ++ ++#if !GLIB_CHECK_VERSION(2, 76, 0) ++gboolean adw_g_set_str (char **str_pointer, const char *new_str) ++{ ++ char *copy; ++ ++ if (*str_pointer == new_str || ++ (*str_pointer && new_str && strcmp (*str_pointer, new_str) == 0)) ++ return FALSE; ++ ++ copy = g_strdup (new_str); ++ g_free (*str_pointer); ++ *str_pointer = copy; ++ ++ return TRUE; ++} ++#endif +diff --git a/src/adw-message-dialog.c b/src/adw-message-dialog.c +index 52420e3..c0b3a0d 100644 +--- a/src/adw-message-dialog.c ++++ b/src/adw-message-dialog.c +@@ -12,6 +12,7 @@ + #include "adw-gizmo-private.h" + #include "adw-gtkbuilder-utils-private.h" + #include "adw-marshalers.h" ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +@@ -268,7 +269,7 @@ parent_size_cb (AdwMessageDialog *self) + gtk_widget_queue_resize (GTK_WIDGET (self)); + } + +-static void ++static gboolean + parent_state_idle_cb (AdwMessageDialog *self) + { + AdwMessageDialogPrivate *priv = adw_message_dialog_get_instance_private (self); +@@ -276,6 +277,7 @@ parent_state_idle_cb (AdwMessageDialog *self) + parent_size_cb (self); + + priv->parent_state_idle_id = 0; ++ return G_SOURCE_REMOVE; + } + + static void +@@ -286,7 +288,7 @@ parent_state_cb (AdwMessageDialog *self) + g_clear_handle_id (&priv->parent_state_idle_id, g_source_remove); + + priv->parent_state_idle_id = +- g_idle_add_once ((GSourceOnceFunc) parent_state_idle_cb, self); ++ g_idle_add ((GSourceFunc) parent_state_idle_cb, self); + } + + static void +diff --git a/src/adw-navigation-split-view.c b/src/adw-navigation-split-view.c +index d69dd28..1a024c5 100644 +--- a/src/adw-navigation-split-view.c ++++ b/src/adw-navigation-split-view.c +@@ -14,6 +14,7 @@ + #include "adw-bin.h" + #include "adw-enums.h" + #include "adw-length-unit.h" ++#include "adw-macros-private.h" + #include "adw-navigation-view-private.h" + #include "adw-widget-utils-private.h" + +@@ -353,10 +354,11 @@ update_navigation_stack (AdwNavigationSplitView *self) + stack, i); + } + +-static void ++static gboolean + changing_page_done_cb (AdwNavigationSplitView *self) + { + self->changing_page = FALSE; ++ return G_SOURCE_REMOVE; + } + + static gboolean +@@ -1221,7 +1223,7 @@ adw_navigation_split_view_set_show_content (AdwNavigationSplitView *self, + } + + self->changing_page = TRUE; +- g_idle_add_once ((GSourceOnceFunc) changing_page_done_cb, self); ++ g_idle_add ((GSourceFunc) changing_page_done_cb, self); + + if (show_content) + adw_navigation_view_push (ADW_NAVIGATION_VIEW (self->navigation_view), +diff --git a/src/adw-navigation-view.c b/src/adw-navigation-view.c +index 457a6f9..3923ee8 100644 +--- a/src/adw-navigation-view.c ++++ b/src/adw-navigation-view.c +@@ -11,6 +11,7 @@ + + #include "adw-gizmo-private.h" + #include "adw-marshalers.h" ++#include "adw-macros-private.h" + #include "adw-shadow-helper-private.h" + #include "adw-spring-animation.h" + #include "adw-swipeable.h" +diff --git a/src/adw-overlay-split-view.c b/src/adw-overlay-split-view.c +index a02c1b4..696f29c 100644 +--- a/src/adw-overlay-split-view.c ++++ b/src/adw-overlay-split-view.c +@@ -14,6 +14,7 @@ + #include "adw-bin.h" + #include "adw-gizmo-private.h" + #include "adw-length-unit.h" ++#include "adw-macros-private.h" + #include "adw-shadow-helper-private.h" + #include "adw-spring-animation.h" + #include "adw-swipeable.h" +diff --git a/src/adw-password-entry-row.c b/src/adw-password-entry-row.c +index 941e927..f9296ba 100644 +--- a/src/adw-password-entry-row.c ++++ b/src/adw-password-entry-row.c +@@ -11,6 +11,7 @@ + #include "adw-password-entry-row.h" + + #include "adw-entry-row-private.h" ++#include "adw-macros-private.h" + + /** + * AdwPasswordEntryRow: +diff --git a/src/adw-preferences-page.c b/src/adw-preferences-page.c +index eab6e2f..eeba731 100644 +--- a/src/adw-preferences-page.c ++++ b/src/adw-preferences-page.c +@@ -8,6 +8,7 @@ + + #include "adw-preferences-page-private.h" + ++#include "adw-macros-private.h" + #include "adw-preferences-group-private.h" + #include "adw-widget-utils-private.h" + +diff --git a/src/adw-preferences-row.c b/src/adw-preferences-row.c +index 2252cce..b90d30d 100644 +--- a/src/adw-preferences-row.c ++++ b/src/adw-preferences-row.c +@@ -6,6 +6,8 @@ + + #include "config.h" + ++#include "adw-macros-private.h" ++ + #include "adw-preferences-row.h" + + /** +diff --git a/src/adw-settings-impl-gsettings.c b/src/adw-settings-impl-gsettings.c +index 1a2cee3..ce511c0 100644 +--- a/src/adw-settings-impl-gsettings.c ++++ b/src/adw-settings-impl-gsettings.c +@@ -8,6 +8,7 @@ + + #include "config.h" + ++#include "adw-macros-private.h" + #include "adw-settings-impl-private.h" + + #include +diff --git a/src/adw-settings-impl-legacy.c b/src/adw-settings-impl-legacy.c +index 87519a9..9e5f511 100644 +--- a/src/adw-settings-impl-legacy.c ++++ b/src/adw-settings-impl-legacy.c +@@ -8,6 +8,7 @@ + + #include "config.h" + ++#include "adw-macros-private.h" + #include "adw-settings-impl-private.h" + + #include +diff --git a/src/adw-settings-impl-portal.c b/src/adw-settings-impl-portal.c +index 9f9fbf7..11ed40c 100644 +--- a/src/adw-settings-impl-portal.c ++++ b/src/adw-settings-impl-portal.c +@@ -8,6 +8,7 @@ + + #include "config.h" + ++#include "adw-macros-private.h" + #include "adw-settings-impl-private.h" + + #include +diff --git a/src/adw-settings-impl-win32.c b/src/adw-settings-impl-win32.c +index 484e3f8..14d4ad6 100644 +--- a/src/adw-settings-impl-win32.c ++++ b/src/adw-settings-impl-win32.c +@@ -174,11 +174,12 @@ color_values_changed (AdwSettingsImplWin32 *self) + return S_OK; + } + +-static void ++static gboolean + color_values_changed_idle (gpointer settings) + { + color_values_changed (settings); + g_object_unref (settings); ++ return G_SOURCE_REMOVE; + } + + static HRESULT STDMETHODCALLTYPE +@@ -192,7 +193,7 @@ ColorValuesChanged_Invoke (__FITypedEventHandler_2_Windows__CUI__CViewManagement + settings = g_weak_ref_get (&handler->settings); + if (settings != NULL) { + /* Event handler is invoked from another thread */ +- g_idle_add_once (color_values_changed_idle, settings); ++ g_idle_add (color_values_changed_idle, settings); + } + return S_OK; + } +diff --git a/src/adw-settings.c b/src/adw-settings.c +index cf0e81c..07b7e8e 100644 +--- a/src/adw-settings.c ++++ b/src/adw-settings.c +@@ -9,6 +9,7 @@ + #include "config.h" + + #include "adw-settings-private.h" ++#include "adw-macros-private.h" + + #include "adw-settings-impl-private.h" + +diff --git a/src/adw-shadow-helper.c b/src/adw-shadow-helper.c +index 6f65cce..09ec203 100644 +--- a/src/adw-shadow-helper.c ++++ b/src/adw-shadow-helper.c +@@ -6,9 +6,9 @@ + + #include "config.h" + +-#include "adw-shadow-helper-private.h" +- + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" ++#include "adw-shadow-helper-private.h" + + struct _AdwShadowHelper + { +diff --git a/src/adw-spin-row.c b/src/adw-spin-row.c +index 5a0c5ae..b21c207 100644 +--- a/src/adw-spin-row.c ++++ b/src/adw-spin-row.c +@@ -9,6 +9,7 @@ + #include "adw-spin-row.h" + + #include "adw-action-row-private.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-widget-utils-private.h" + +diff --git a/src/adw-split-button.c b/src/adw-split-button.c +index 9298b1b..1b77f37 100644 +--- a/src/adw-split-button.c ++++ b/src/adw-split-button.c +@@ -9,6 +9,7 @@ + + #include "adw-split-button.h" + ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-widget-utils-private.h" + +diff --git a/src/adw-spring-animation.c b/src/adw-spring-animation.c +index b623d2e..e4d6bae 100644 +--- a/src/adw-spring-animation.c ++++ b/src/adw-spring-animation.c +@@ -11,6 +11,7 @@ + + #include "adw-animation-private.h" + #include "adw-animation-util.h" ++#include "adw-macros-private.h" + + #define DELTA 0.001 + #define MAX_ITERATIONS 20000 +diff --git a/src/adw-squeezer.c b/src/adw-squeezer.c +index deea987..68ac6b9 100644 +--- a/src/adw-squeezer.c ++++ b/src/adw-squeezer.c +@@ -20,6 +20,7 @@ + + #include "adw-animation-util.h" + #include "adw-easing.h" ++#include "adw-macros-private.h" + #include "adw-timed-animation.h" + #include "adw-widget-utils-private.h" + +diff --git a/src/adw-status-page.c b/src/adw-status-page.c +index 4b86221..c155893 100644 +--- a/src/adw-status-page.c ++++ b/src/adw-status-page.c +@@ -8,6 +8,7 @@ + + #include "adw-status-page.h" + ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +diff --git a/src/adw-style-manager.c b/src/adw-style-manager.c +index d27ebda..49faa66 100644 +--- a/src/adw-style-manager.c ++++ b/src/adw-style-manager.c +@@ -10,6 +10,7 @@ + + #include "adw-style-manager-private.h" + ++#include "adw-macros-private.h" + #include "adw-main-private.h" + #include "adw-settings-private.h" + #include +@@ -117,13 +118,14 @@ register_display (GdkDisplayManager *display_manager, + NULL); + } + +-static void ++static gboolean + enable_animations_cb (AdwStyleManager *self) + { + gtk_style_context_remove_provider_for_display (self->display, + GTK_STYLE_PROVIDER (self->animations_provider)); + + self->animation_timeout_id = 0; ++ return G_SOURCE_REMOVE; + } + + static void +@@ -170,9 +172,9 @@ update_stylesheet (AdwStyleManager *self) + } + + self->animation_timeout_id = +- g_timeout_add_once (SWITCH_DURATION, +- (GSourceOnceFunc) enable_animations_cb, +- self); ++ g_timeout_add (SWITCH_DURATION, ++ (GSourceFunc) enable_animations_cb, ++ self); + } + + static gboolean +diff --git a/src/adw-swipe-tracker.c b/src/adw-swipe-tracker.c +index 93079b2..f6f7abf 100644 +--- a/src/adw-swipe-tracker.c ++++ b/src/adw-swipe-tracker.c +@@ -8,6 +8,7 @@ + + #include "adw-swipe-tracker-private.h" + ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-navigation-direction.h" + +diff --git a/src/adw-switch-row.c b/src/adw-switch-row.c +index e8f650a..2b9132c 100644 +--- a/src/adw-switch-row.c ++++ b/src/adw-switch-row.c +@@ -6,6 +6,8 @@ + + #include "config.h" + ++#include "adw-macros-private.h" ++ + #include "adw-switch-row.h" + + /** +diff --git a/src/adw-tab-bar.c b/src/adw-tab-bar.c +index 5464dae..6d4facc 100644 +--- a/src/adw-tab-bar.c ++++ b/src/adw-tab-bar.c +@@ -11,6 +11,7 @@ + #include "adw-tab-bar-private.h" + + #include "adw-bin.h" ++#include "adw-macros-private.h" + #include "adw-tab-box-private.h" + #include "adw-widget-utils-private.h" + +diff --git a/src/adw-tab-box.c b/src/adw-tab-box.c +index db7997d..086a16c 100644 +--- a/src/adw-tab-box.c ++++ b/src/adw-tab-box.c +@@ -13,6 +13,7 @@ + #include "adw-animation-util.h" + #include "adw-easing.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-tab-private.h" + #include "adw-tab-bar-private.h" +@@ -834,12 +835,13 @@ get_scroll_animation_value (AdwTabBox *self) + return round (adw_lerp (self->scroll_animation_from, to, value)); + } + +-static void ++static gboolean + drop_switch_timeout_cb (AdwTabBox *self) + { + self->drop_switch_timeout_id = 0; + adw_tab_view_set_selected_page (self->view, + self->drop_target_tab->page); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -856,9 +858,9 @@ set_drop_target_tab (AdwTabBox *self, + + if (self->drop_target_tab) { + self->drop_switch_timeout_id = +- g_timeout_add_once (DROP_SWITCH_TIMEOUT, +- (GSourceOnceFunc) drop_switch_timeout_cb, +- self); ++ g_timeout_add (DROP_SWITCH_TIMEOUT, ++ (GSourceFunc) drop_switch_timeout_cb, ++ self); + } + } + +@@ -2298,11 +2300,12 @@ remove_animation_done_cb (TabInfo *info) + update_separators (self); + } + +-static void ++static gboolean + remove_placeholder_scroll_cb (AdwTabBox *self) + { + animate_scroll_relative (self, -self->placeholder_scroll_offset, CLOSE_ANIMATION_DURATION); + self->placeholder_scroll_offset = 0; ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2320,7 +2323,7 @@ remove_placeholder (AdwTabBox *self) + if (info->appear_animation) + adw_animation_skip (info->appear_animation); + +- g_idle_add_once ((GSourceOnceFunc) remove_placeholder_scroll_cb, self); ++ g_idle_add ((GSourceFunc) remove_placeholder_scroll_cb, self); + + target = adw_callback_animation_target_new ((AdwAnimationTargetFunc) + appear_animation_value_cb, +@@ -2735,11 +2738,12 @@ view_drag_drop_cb (AdwTabBox *self, + + /* DND autoscrolling */ + +-static void ++static gboolean + reset_drop_target_tab_cb (AdwTabBox *self) + { + self->reset_drop_target_tab_id = 0; + set_drop_target_tab (self, NULL); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2757,7 +2761,7 @@ drag_leave_cb (AdwTabBox *self, + + if (!self->reset_drop_target_tab_id) + self->reset_drop_target_tab_id = +- g_idle_add_once ((GSourceOnceFunc) reset_drop_target_tab_cb, self); ++ g_idle_add ((GSourceFunc) reset_drop_target_tab_cb, self); + + end_autoscroll (self); + } +@@ -2796,10 +2800,11 @@ drag_enter_motion_cb (AdwTabBox *self, + + /* Context menu */ + +-static void ++static gboolean + reset_setup_menu_cb (AdwTabBox *self) + { + g_signal_emit_by_name (self->view, "setup-menu", NULL); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2811,7 +2816,7 @@ touch_menu_notify_visible_cb (AdwTabBox *self) + self->hovering = FALSE; + update_hover (self); + +- g_idle_add_once ((GSourceOnceFunc) reset_setup_menu_cb, self); ++ g_idle_add ((GSourceFunc) reset_setup_menu_cb, self); + } + + static void +diff --git a/src/adw-tab-button.c b/src/adw-tab-button.c +index de54074..ecba9af 100644 +--- a/src/adw-tab-button.c ++++ b/src/adw-tab-button.c +@@ -13,6 +13,7 @@ + #include "adw-tab-button.h" + + #include "adw-indicator-bin-private.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + + /* Copied from GtkInspector code */ +diff --git a/src/adw-tab-grid.c b/src/adw-tab-grid.c +index b0e3913..0d726d9 100644 +--- a/src/adw-tab-grid.c ++++ b/src/adw-tab-grid.c +@@ -14,6 +14,7 @@ + #include "adw-easing.h" + #include "adw-gizmo-private.h" + #include "adw-marshalers.h" ++#include "adw-macros-private.h" + #include "adw-tab-overview-private.h" + #include "adw-tab-view-private.h" + #include "adw-timed-animation.h" +@@ -983,12 +984,13 @@ activate_tab (AdwTabGrid *self) + + /* Scrolling */ + +-static void ++static gboolean + drop_switch_timeout_cb (AdwTabGrid *self) + { + self->drop_switch_timeout_id = 0; + adw_tab_view_set_selected_page (self->view, + self->drop_target_tab->page); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -1005,9 +1007,9 @@ set_drop_target_tab (AdwTabGrid *self, + + if (self->drop_target_tab) { + self->drop_switch_timeout_id = +- g_timeout_add_once (DROP_SWITCH_TIMEOUT, +- (GSourceOnceFunc) drop_switch_timeout_cb, +- self); ++ g_timeout_add (DROP_SWITCH_TIMEOUT, ++ (GSourceFunc) drop_switch_timeout_cb, ++ self); + } + } + +@@ -2726,11 +2728,12 @@ view_drag_drop_cb (AdwTabGrid *self, + + /* DND autoscrolling */ + +-static void ++static gboolean + reset_drop_target_tab_cb (AdwTabGrid *self) + { + self->reset_drop_target_tab_id = 0; + set_drop_target_tab (self, NULL); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2748,7 +2751,7 @@ drag_leave_cb (AdwTabGrid *self, + + if (!self->reset_drop_target_tab_id) + self->reset_drop_target_tab_id = +- g_idle_add_once ((GSourceOnceFunc) reset_drop_target_tab_cb, self); ++ g_idle_add ((GSourceFunc) reset_drop_target_tab_cb, self); + + end_autoscroll (self); + } +@@ -2786,10 +2789,11 @@ drag_enter_motion_cb (AdwTabGrid *self, + + /* Context menu */ + +-static void ++static gboolean + reset_setup_menu_cb (AdwTabGrid *self) + { + g_signal_emit_by_name (self->view, "setup-menu", NULL); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2802,7 +2806,7 @@ touch_menu_notify_visible_cb (AdwTabGrid *self) + get_other_tab_grid (self)->hovering = FALSE; + update_hover (self); + +- g_idle_add_once ((GSourceOnceFunc) reset_setup_menu_cb, self); ++ g_idle_add ((GSourceFunc) reset_setup_menu_cb, self); + } + + static void +diff --git a/src/adw-tab-overview.c b/src/adw-tab-overview.c +index 0d72d52..419b64a 100644 +--- a/src/adw-tab-overview.c ++++ b/src/adw-tab-overview.c +@@ -14,6 +14,7 @@ + #include "adw-animation-util.h" + #include "adw-bin.h" + #include "adw-header-bar.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-style-manager.h" + #include "adw-tab-grid-private.h" +diff --git a/src/adw-tab-thumbnail.c b/src/adw-tab-thumbnail.c +index 8decd39..060524e 100644 +--- a/src/adw-tab-thumbnail.c ++++ b/src/adw-tab-thumbnail.c +@@ -11,6 +11,7 @@ + + #include "adw-fading-label-private.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-tab-view-private.h" + #include "adw-timed-animation.h" + +@@ -144,10 +145,11 @@ update_indicator (AdwTabThumbnail *self) + set_style_class (GTK_WIDGET (self), "indicator", indicator != NULL); + } + +-static void ++static gboolean + close_idle_cb (AdwTabThumbnail *self) + { + adw_tab_view_close_page (self->view, self->page); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -159,13 +161,14 @@ close_clicked_cb (AdwTabThumbnail *self) + /* When animations are disabled, we don't want to immediately remove the + * whole tab mid-click. Instead, defer it until the click has happened. + */ +- g_idle_add_once ((GSourceOnceFunc) close_idle_cb, self); ++ g_idle_add ((GSourceFunc) close_idle_cb, self); + } + +-static void ++static gboolean + unpin_idle_cb (AdwTabThumbnail *self) + { + adw_tab_view_set_page_pinned (self->view, self->page, FALSE); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -177,7 +180,7 @@ unpin_clicked_cb (AdwTabThumbnail *self) + /* When animations are disabled, we don't want to immediately unpin the + * whole tab mid-click. Instead, defer it until the click has happened. + */ +- g_idle_add_once ((GSourceOnceFunc) unpin_idle_cb, self); ++ g_idle_add ((GSourceFunc) unpin_idle_cb, self); + } + + static void +diff --git a/src/adw-tab-view.c b/src/adw-tab-view.c +index 2e3dd9c..c02031b 100644 +--- a/src/adw-tab-view.c ++++ b/src/adw-tab-view.c +@@ -12,6 +12,7 @@ + + #include "adw-bin.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include "adw-style-manager.h" + #include "adw-widget-utils-private.h" +@@ -2191,7 +2192,7 @@ adw_tab_view_size_allocate (GtkWidget *widget, + } + } + +-static void ++static gboolean + unmap_extra_pages (AdwTabView *self) + { + int i; +@@ -2212,6 +2213,7 @@ unmap_extra_pages (AdwTabView *self) + } + + self->unmap_extra_pages_cb = 0; ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2247,17 +2249,17 @@ adw_tab_view_snapshot (GtkWidget *widget, + + if (!self->unmap_extra_pages_cb) + self->unmap_extra_pages_cb = +- g_idle_add_once ((GSourceOnceFunc) unmap_extra_pages, self); ++ g_idle_add ((GSourceFunc) unmap_extra_pages, self); + } + } + +-static void ++static gboolean + draw_overview_pages_after_map_cb (AdwTabView *self) + { + int i; + + if (!self->overview_count) +- return; ++ return G_SOURCE_REMOVE; + + for (i = 0; i < self->n_pages; i++) { + AdwTabPage *page = adw_tab_view_get_nth_page (self, i); +@@ -2269,6 +2271,7 @@ draw_overview_pages_after_map_cb (AdwTabView *self) + } + + gtk_widget_queue_allocate (GTK_WIDGET (self)); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -2279,7 +2282,7 @@ adw_tab_view_map (GtkWidget *widget) + GTK_WIDGET_CLASS (adw_tab_view_parent_class)->map (widget); + + if (self->overview_count) +- g_idle_add_once ((GSourceOnceFunc) draw_overview_pages_after_map_cb, self); ++ g_idle_add ((GSourceFunc) draw_overview_pages_after_map_cb, self); + } + + static void +diff --git a/src/adw-tab.c b/src/adw-tab.c +index 024c620..22eacc9 100644 +--- a/src/adw-tab.c ++++ b/src/adw-tab.c +@@ -12,6 +12,7 @@ + #include "adw-bidi-private.h" + #include "adw-fading-label-private.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-timed-animation.h" + + #define FADE_WIDTH 18.0f +@@ -243,10 +244,11 @@ update_selected (AdwTab *self) + update_indicator (self); + } + +-static void ++static gboolean + close_idle_cb (AdwTab *self) + { + adw_tab_view_close_page (self->view, self->page); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -258,7 +260,7 @@ close_clicked_cb (AdwTab *self) + /* When animations are disabled, we don't want to immediately remove the + * whole tab mid-click. Instead, defer it until the click has happened. + */ +- g_idle_add_once ((GSourceOnceFunc) close_idle_cb, self); ++ g_idle_add ((GSourceFunc) close_idle_cb, self); + } + + static void +diff --git a/src/adw-timed-animation.c b/src/adw-timed-animation.c +index 821e59f..d300fb8 100644 +--- a/src/adw-timed-animation.c ++++ b/src/adw-timed-animation.c +@@ -10,6 +10,7 @@ + + #include "adw-animation-private.h" + #include "adw-animation-util.h" ++#include "adw-macros-private.h" + + /** + * AdwTimedAnimation: +diff --git a/src/adw-toast-overlay.c b/src/adw-toast-overlay.c +index d057ffe..18f4990 100644 +--- a/src/adw-toast-overlay.c ++++ b/src/adw-toast-overlay.c +@@ -10,6 +10,7 @@ + + #include "adw-animation-util.h" + #include "adw-easing.h" ++#include "adw-macros-private.h" + #include "adw-timed-animation.h" + #include "adw-toast-private.h" + #include "adw-toast-widget-private.h" +diff --git a/src/adw-toast-widget.c b/src/adw-toast-widget.c +index 5b276c7..73b1391 100644 +--- a/src/adw-toast-widget.c ++++ b/src/adw-toast-widget.c +@@ -9,6 +9,7 @@ + #include "adw-toast-widget-private.h" + + #include "adw-bin.h" ++#include "adw-macros-private.h" + + struct _AdwToastWidget { + GtkWidget parent_instance; +@@ -40,12 +41,13 @@ string_is_not_empty (gpointer user_data, + return string && string[0]; + } + +-static void ++static gboolean + timeout_cb (AdwToastWidget *self) + { + self->hide_timeout_id = 0; + + adw_toast_dismiss (self->toast); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -55,9 +57,9 @@ start_timeout (AdwToastWidget *self) + + if (!self->hide_timeout_id && timeout) + self->hide_timeout_id = +- g_timeout_add_once (timeout * 1000, +- (GSourceOnceFunc) (timeout_cb), +- self); ++ g_timeout_add (timeout * 1000, ++ (GSourceFunc) (timeout_cb), ++ self); + } + + static void +@@ -90,11 +92,12 @@ dismiss (AdwToastWidget *self) + adw_toast_dismiss (self->toast); + } + +-static void ++static gboolean + close_idle_cb (AdwToastWidget *self) + { + dismiss (self); + g_object_unref (self); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -106,7 +109,7 @@ action_clicked_cb (AdwToastWidget *self) + + /* Keep the widget alive through the idle. Otherwise it may be immediately + * destroyed if animations are disabled */ +- g_idle_add_once ((GSourceOnceFunc) close_idle_cb, g_object_ref (self)); ++ g_idle_add ((GSourceFunc) close_idle_cb, g_object_ref (self)); + } + + static void +diff --git a/src/adw-toast.c b/src/adw-toast.c +index 1b455c0..b5526ac 100644 +--- a/src/adw-toast.c ++++ b/src/adw-toast.c +@@ -8,6 +8,7 @@ + + #include "adw-toast-private.h" + ++#include "adw-macros-private.h" + #include "adw-marshalers.h" + #include + +diff --git a/src/adw-toolbar-view.c b/src/adw-toolbar-view.c +index 6dadc74..b64ec27 100644 +--- a/src/adw-toolbar-view.c ++++ b/src/adw-toolbar-view.c +@@ -9,6 +9,7 @@ + #include "config.h" + #include "adw-toolbar-view.h" + ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +diff --git a/src/adw-view-stack.c b/src/adw-view-stack.c +index d0a258b..152fa68 100644 +--- a/src/adw-view-stack.c ++++ b/src/adw-view-stack.c +@@ -16,6 +16,7 @@ + + #include "adw-animation-util.h" + #include "adw-gizmo-private.h" ++#include "adw-macros-private.h" + #include "adw-widget-utils-private.h" + + /** +diff --git a/src/adw-view-switcher-bar.c b/src/adw-view-switcher-bar.c +index 2455931..e9c0fbe 100644 +--- a/src/adw-view-switcher-bar.c ++++ b/src/adw-view-switcher-bar.c +@@ -9,6 +9,7 @@ + + #include "adw-enums.h" + #include "adw-breakpoint-bin-private.h" ++#include "adw-macros-private.h" + #include "adw-view-switcher-bar.h" + + /** +diff --git a/src/adw-view-switcher-button.c b/src/adw-view-switcher-button.c +index 9b2c338..45bd14a 100644 +--- a/src/adw-view-switcher-button.c ++++ b/src/adw-view-switcher-button.c +@@ -8,6 +8,7 @@ + #include "config.h" + + #include "adw-indicator-bin-private.h" ++#include "adw-macros-private.h" + #include "adw-view-switcher-button-private.h" + + #define TIMEOUT_EXPAND 500 +@@ -54,12 +55,13 @@ static GParamSpec *props[LAST_PROP]; + G_DEFINE_FINAL_TYPE_WITH_CODE (AdwViewSwitcherButton, adw_view_switcher_button, GTK_TYPE_TOGGLE_BUTTON, + G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE, NULL)) + +-static void ++static gboolean + switch_timeout_cb (AdwViewSwitcherButton *self) + { + self->switch_timer = 0; + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self), TRUE); ++ return G_SOURCE_REMOVE; + } + + static void +@@ -82,9 +84,9 @@ drag_enter_cb (AdwViewSwitcherButton *self) + return; + + self->switch_timer = +- g_timeout_add_once (TIMEOUT_EXPAND, +- (GSourceOnceFunc) switch_timeout_cb, +- self); ++ g_timeout_add (TIMEOUT_EXPAND, ++ (GSourceFunc) switch_timeout_cb, ++ self); + g_source_set_name_by_id (self->switch_timer, "[adw] switch_timeout_cb"); + } + +diff --git a/src/adw-view-switcher-title.c b/src/adw-view-switcher-title.c +index 1d2492c..d68fb65 100644 +--- a/src/adw-view-switcher-title.c ++++ b/src/adw-view-switcher-title.c +@@ -7,8 +7,8 @@ + + #include "config.h" + ++#include "adw-macros-private.h" + #include "adw-view-switcher-title.h" +- + #include "adw-squeezer.h" + #include "adw-window-title.h" + +@@ -217,7 +217,7 @@ adw_view_switcher_title_dispose (GObject *object) + G_OBJECT_CLASS (adw_view_switcher_title_parent_class)->dispose (object); + } + +-static void ++static gboolean + check_window_width_cb (AdwViewSwitcherTitle *self) + { + GtkRoot *root = gtk_widget_get_root (GTK_WIDGET (self)); +@@ -227,6 +227,7 @@ check_window_width_cb (AdwViewSwitcherTitle *self) + update_view_switcher_visible (self); + + self->check_window_width_id = 0; ++ return G_SOURCE_REMOVE; + } + + static void +@@ -236,7 +237,7 @@ notify_surface_width_cb (AdwViewSwitcherTitle *self) + return; + + self->check_window_width_id = +- g_idle_add_once ((GSourceOnceFunc) check_window_width_cb, self); ++ g_idle_add ((GSourceFunc) check_window_width_cb, self); + } + + static void +diff --git a/src/adw-view-switcher.c b/src/adw-view-switcher.c +index e8058b2..c14515a 100644 +--- a/src/adw-view-switcher.c ++++ b/src/adw-view-switcher.c +@@ -11,6 +11,7 @@ + #include "config.h" + + #include "adw-enums.h" ++#include "adw-macros-private.h" + #include "adw-view-switcher.h" + #include "adw-view-switcher-button-private.h" + +diff --git a/src/adw-window-title.c b/src/adw-window-title.c +index b7e2ae4..0510d9d 100644 +--- a/src/adw-window-title.c ++++ b/src/adw-window-title.c +@@ -5,9 +5,10 @@ + */ + + #include "config.h" +- + #include "adw-window-title.h" + ++#include "adw-macros-private.h" ++ + /** + * AdwWindowTitle: + * +diff --git a/src/adwaita.h b/src/adwaita.h +index 88d09d4..4151226 100644 +--- a/src/adwaita.h ++++ b/src/adwaita.h +@@ -14,8 +14,8 @@ G_BEGIN_DECLS + # error "libadwaita requires gtk4 >= 4.11.3" + #endif + +-#if !GLIB_CHECK_VERSION(2, 76, 0) +-# error "libadwaita requires glib-2.0 >= 2.76.0" ++#if !GLIB_CHECK_VERSION(2, 68, 0) ++# error "libadwaita requires glib-2.0 >= 2.68.0" + #endif + + #define _ADWAITA_INSIDE +diff --git a/src/meson.build b/src/meson.build +index 6b340a8..71a2f64 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -266,7 +266,7 @@ libadwaita_public_sources += files(src_sources) + + install_headers(src_headers, subdir: libadwaita_header_subdir) + +-glib_min_version = '>= 2.76.0' ++glib_min_version = '>= 2.68.0' + gtk_min_version = '>= 4.11.3' + + gio_dep = dependency('gio-2.0', version: glib_min_version) diff --git a/SPECS/libadwaita.spec b/SPECS/libadwaita.spec index ee632cc..ccc88fc 100644 --- a/SPECS/libadwaita.spec +++ b/SPECS/libadwaita.spec @@ -1,24 +1,33 @@ %global apiver 1 -%global versuf alpha.3 +%global gtk_version 4.11.3 + +%global tarball_version %%(echo %{version} | tr '~' '.') Name: libadwaita -Version: 1.0.0 -Release: 0.5.%{versuf}%{?dist} +Version: 1.4.2 +Release: 2%{?dist} Summary: Building blocks for modern GNOME applications -License: LGPLv2+ +# part of src/adw-spring-animation.c is MIT +License: LGPL-2.1-or-later AND MIT URL: https://gitlab.gnome.org/GNOME/libadwaita -Source0: %{url}/-/archive/%{version}.%{versuf}/libadwaita-%{version}.%{versuf}.tar.gz +Source0: https://download.gnome.org/sources/%{name}/1.4/%{name}-%{tarball_version}.tar.xz +Patch0: 0001-downgrade-glib-requirement-to-2_68.patch + +BuildRequires: desktop-file-utils BuildRequires: gcc -BuildRequires: gi-docgen -BuildRequires: intltool -BuildRequires: meson >= 0.53.0 -BuildRequires: sassc +BuildRequires: gettext +BuildRequires: libappstream-glib +BuildRequires: meson >= 0.59.0 BuildRequires: vala - +BuildRequires: pkgconfig(appstream) +BuildRequires: pkgconfig(fribidi) +BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-introspection-1.0) -BuildRequires: pkgconfig(gtk4) +BuildRequires: pkgconfig(gtk4) >= %{gtk_version} + +Requires: gtk4%{?_isa} >= %{gtk_version} %description Building blocks for modern GNOME applications. @@ -29,6 +38,7 @@ Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: vala +Recommends: %{name}-demo = %{version}-%{release} Recommends: %{name}-doc = %{version}-%{release} %description devel @@ -45,13 +55,24 @@ Recommends: %{name}-devel = %{version}-%{release} Documentation files for %{name}. +%package demo +Summary: Demo files for %{name} +BuildArch: noarch + +Requires: %{name} = %{version}-%{release} +Suggests: %{name}-devel = %{version}-%{release} + +%description demo +Demo files for %{name}. + + %prep -%autosetup -n %{name}-%{version}.%{versuf} -p1 +%autosetup -p1 -n %{name}-%{tarball_version} %build %meson \ - -Dgtk_doc=true \ + -Dgtk_doc=false \ %{nil} %meson_build @@ -61,13 +82,17 @@ Documentation files for %{name}. %find_lang %{name} +%check +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.xml +desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop + + %files -f %{name}.lang %license COPYING %doc README.md AUTHORS NEWS %{_bindir}/adwaita-%{apiver}-demo %{_libdir}/*-%{apiver}.so.0* %{_libdir}/girepository-1.0/*.typelib -%{_libdir}/gtk-4.0/inspector/*%{apiver}.so.0* %files devel %dir %{_datadir}/gir-1.0 @@ -75,20 +100,23 @@ Documentation files for %{name}. %{_datadir}/vala/vapi/%{name}-%{apiver}.* %{_includedir}/%{name}-%{apiver}/ %{_libdir}/*-%{apiver}.so -%{_libdir}/gtk-4.0/inspector/*%{apiver}.so %{_libdir}/pkgconfig/*-%{apiver}.pc %files doc %doc HACKING.md -%{_docdir}/%{name}-%{apiver}/ + +%files demo +%{_datadir}/applications/*.desktop +%{_datadir}/icons/hicolor/*/apps/*.svg +%{_metainfodir}/*.metainfo.xml %changelog -* Fri Oct 01 2021 Artem Polishchuk - 1.0.0-0.5.alpha.3 -- chore(update): 1.0.0-0.5.alpha.3 +* Tue Jan 2 2024 Tomas Popela - 1.42.2-2 +- Add gating configuration (needs a new build) -* Mon Aug 30 2021 Lyes Saadi - 1.0.0-0.4.alpha.2 -- Updating to alpha.2 - -* Thu Jun 24 2021 Artem Polishchuk - 1.0.0-0.3.alpha.1 -- Initial package \ No newline at end of file +* Thu Dec 7 2023 Tomas Popela - 1.42.2-1 +- Initial RHEL packaging based on Fedora package with rpmautospec disabled, + disabled documentation (no gi-docgen in RHEL 9) and downstream patch to + be able to compile with glib2 2.68 (thanks to Milan Crha) +- Resolves: RHEL-3234