From 93ab537beb9deb8617de64bbd9675653b298fcdf Mon Sep 17 00:00:00 2001 From: Christopher Davis Date: Thu, 22 Dec 2022 11:43:18 -0600 Subject: window: Use AdwBanner instead of GtkInfoBar AdwBanner is a new widget that should be used in place of GtkInfoBar. It implements an API that follows the new suggested uses for info bars, and adapts cleanly to small window sizes. --- data/gl-window.ui | 32 +++---------------------------- meson.build | 2 +- src/gl-window.c | 56 ++++++++++++++----------------------------------------- 3 files changed, 18 insertions(+), 72 deletions(-) diff --git a/data/gl-window.ui b/data/gl-window.ui index 83f1a68..b998673 100644 --- a/data/gl-window.ui +++ b/data/gl-window.ui @@ -11,35 +11,9 @@ - - GTK_MESSAGE_ERROR - False - - - horizontal - 6 - - - True - start - - - - - center - Help - - - - - - center - Ignore - - - - - + diff --git a/meson.build b/meson.build index 26c6754..9d81db4 100644 --- a/meson.build +++ b/meson.build @@ -62,7 +62,7 @@ endif gl_deps = [ dependency('gio-unix-2.0', version : '>=2.43.90'), dependency('gtk4', version : '>=4.6.0'), - dependency('libadwaita-1', version : '>=1.2.alpha'), + dependency('libadwaita-1', version : '>=1.3.alpha'), dependency('libsystemd') ] diff --git a/src/gl-window.c b/src/gl-window.c index 6dd4363..e45fa2c 100644 --- a/src/gl-window.c +++ b/src/gl-window.c @@ -36,8 +36,7 @@ typedef struct { GtkWidget *event_toolbar; GtkWidget *event_list; - GtkWidget *info_bar; - GtkLabel *message_label; + AdwBanner *banner; } GlWindowPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GlWindow, gl_window, ADW_TYPE_APPLICATION_WINDOW) @@ -271,38 +270,13 @@ on_category_list_changed (GlCategoryList *list, } static void -on_help_button_clicked (GlWindow *window, - gint response_id, - gpointer user_data) +on_help_button_clicked (GlWindow *window, + AdwBanner *banner) { - GlWindowPrivate *priv; - GtkWindow *parent; - - parent = GTK_WINDOW (window); - priv = gl_window_get_instance_private (GL_WINDOW (window)); - - gtk_show_uri (parent, "help:gnome-logs/permissions", + gtk_show_uri (window, "help:gnome-logs/permissions", GDK_CURRENT_TIME); - gtk_widget_hide (priv->info_bar); -} - -static void -on_ignore_button_clicked (GlWindow *window, - gint response_id, - gpointer user_data) -{ - GlWindowPrivate *priv; - GSettings *settings; - - priv = gl_window_get_instance_private (GL_WINDOW (window)); - - settings = g_settings_new (SETTINGS_SCHEMA); - g_settings_set_boolean (settings, IGNORE_WARNING, TRUE); - - gtk_widget_hide (priv->info_bar); - - g_object_unref (settings); + adw_banner_set_revealed (banner, FALSE); } void @@ -339,12 +313,10 @@ gl_window_class_init (GlWindowClass *klass) gtk_widget_class_bind_template_child_private (widget_class, GlWindow, event_list); gtk_widget_class_bind_template_child_private (widget_class, GlWindow, - info_bar); + banner); gtk_widget_class_bind_template_callback (widget_class, on_help_button_clicked); - gtk_widget_class_bind_template_callback (widget_class, - on_ignore_button_clicked); } void @@ -470,16 +442,16 @@ gl_window_init (GlWindow *window) { if (!gl_util_can_read_system_journal (GL_JOURNAL_STORAGE_PERSISTENT)) { - gtk_label_set_label (priv->message_label, _("Unable to read system logs")); + adw_banner_set_title (priv->banner, _("Unable to read system logs")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); } if (!gl_util_can_read_user_journal ()) { - gtk_label_set_label (priv->message_label, _("Unable to read user logs")); + adw_banner_set_title (priv->banner, _("Unable to read user logs")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); } break; } @@ -487,17 +459,17 @@ gl_window_init (GlWindow *window) { if (!gl_util_can_read_system_journal (GL_JOURNAL_STORAGE_VOLATILE)) { - gtk_label_set_label (priv->message_label, _("Unable to read system logs")); + adw_banner_set_title (priv->banner, _("Unable to read system logs")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); } break; } case GL_JOURNAL_STORAGE_NONE: { - gtk_label_set_label (priv->message_label, _("No logs available")); + adw_banner_set_title (priv->banner, _("No logs available")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); break; } default: -- cgit v1.2.1