[nautilus/wip/antoniof/gtk4-preparation-popovers: 4/10] general: Don't subclass GtkInfoBar




commit e72fa04ad16532036f2c20d7d74fadf5700fac50
Author: António Fernandes <antoniof gnome org>
Date:   Sun Dec 19 12:51:53 2021 +0000

    general: Don't subclass GtkInfoBar
    
    It's going to be a final class one we switch to GTK 4.
    
    In preparation, become bins containing an info bar.
    Also, stop using gtk_info_bar_get_action_area(), which is gone in GTK 4
    and we are using it only to set the box to horizontal orientation,
    which is the default anyway.

 src/nautilus-special-location-bar.c | 18 +++++++++---------
 src/nautilus-special-location-bar.h |  4 ++--
 src/nautilus-trash-bar.c            | 38 ++++++++++++++++++++-----------------
 src/nautilus-trash-bar.h            |  4 ++--
 src/nautilus-x-content-bar.c        | 20 ++++++++++---------
 src/nautilus-x-content-bar.h        |  4 ++--
 6 files changed, 47 insertions(+), 41 deletions(-)
---
diff --git a/src/nautilus-special-location-bar.c b/src/nautilus-special-location-bar.c
index ce4052122..d2a559726 100644
--- a/src/nautilus-special-location-bar.c
+++ b/src/nautilus-special-location-bar.c
@@ -28,7 +28,7 @@
 
 struct _NautilusSpecialLocationBar
 {
-    GtkInfoBar parent_instance;
+    GtkBin parent_instance;
 
     GtkWidget *label;
     GtkWidget *learn_more_label;
@@ -41,7 +41,7 @@ enum
     PROP_SPECIAL_LOCATION,
 };
 
-G_DEFINE_TYPE (NautilusSpecialLocationBar, nautilus_special_location_bar, GTK_TYPE_INFO_BAR)
+G_DEFINE_TYPE (NautilusSpecialLocationBar, nautilus_special_location_bar, GTK_TYPE_BIN)
 
 static void
 set_special_location (NautilusSpecialLocationBar *bar,
@@ -163,12 +163,13 @@ nautilus_special_location_bar_class_init (NautilusSpecialLocationBarClass *klass
 static void
 nautilus_special_location_bar_init (NautilusSpecialLocationBar *bar)
 {
-    GtkWidget *action_area;
+    GtkWidget *info_bar;
     PangoAttrList *attrs;
 
-    action_area = gtk_info_bar_get_action_area (GTK_INFO_BAR (bar));
-
-    gtk_orientable_set_orientation (GTK_ORIENTABLE (action_area), GTK_ORIENTATION_HORIZONTAL);
+    info_bar = gtk_info_bar_new ();
+    gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_QUESTION);
+    gtk_widget_show (info_bar);
+    adw_bin_set_child (ADW_BIN (bar), info_bar);
 
     attrs = pango_attr_list_new ();
     pango_attr_list_insert (attrs, pango_attr_weight_new (PANGO_WEIGHT_BOLD));
@@ -177,19 +178,18 @@ nautilus_special_location_bar_init (NautilusSpecialLocationBar *bar)
     pango_attr_list_unref (attrs);
 
     gtk_label_set_ellipsize (GTK_LABEL (bar->label), PANGO_ELLIPSIZE_END);
-    gtk_info_bar_add_child (GTK_INFO_BAR (bar), bar->label);
+    gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), bar->label);
 
     bar->learn_more_label = gtk_label_new (NULL);
     gtk_widget_set_hexpand (bar->learn_more_label, TRUE);
     gtk_widget_set_halign (bar->learn_more_label, GTK_ALIGN_END);
-    gtk_info_bar_add_child (GTK_INFO_BAR (bar), bar->learn_more_label);
+    gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), bar->learn_more_label);
 }
 
 GtkWidget *
 nautilus_special_location_bar_new (NautilusSpecialLocation location)
 {
     return g_object_new (NAUTILUS_TYPE_SPECIAL_LOCATION_BAR,
-                         "message-type", GTK_MESSAGE_QUESTION,
                          "special-location", location,
                          NULL);
 }
diff --git a/src/nautilus-special-location-bar.h b/src/nautilus-special-location-bar.h
index d5772c103..3d07c7171 100644
--- a/src/nautilus-special-location-bar.h
+++ b/src/nautilus-special-location-bar.h
@@ -24,7 +24,7 @@
 G_BEGIN_DECLS
 
 #define NAUTILUS_TYPE_SPECIAL_LOCATION_BAR (nautilus_special_location_bar_get_type ())
-G_DECLARE_FINAL_TYPE (NautilusSpecialLocationBar, nautilus_special_location_bar, NAUTILUS, 
SPECIAL_LOCATION_BAR, GtkInfoBar)
+G_DECLARE_FINAL_TYPE (NautilusSpecialLocationBar, nautilus_special_location_bar, NAUTILUS, 
SPECIAL_LOCATION_BAR, GtkBin)
 
 typedef enum {
        NAUTILUS_SPECIAL_LOCATION_TEMPLATES,
@@ -33,4 +33,4 @@ typedef enum {
 
 GtkWidget      *nautilus_special_location_bar_new (NautilusSpecialLocation location);
 
-G_END_DECLS
\ No newline at end of file
+G_END_DECLS
diff --git a/src/nautilus-trash-bar.c b/src/nautilus-trash-bar.c
index 4f19bdfaa..af87dbdf1 100644
--- a/src/nautilus-trash-bar.c
+++ b/src/nautilus-trash-bar.c
@@ -49,25 +49,27 @@ enum
 
 struct _NautilusTrashBar
 {
-    GtkInfoBar parent_instance;
+    GtkBin parent_instance;
 
     NautilusFilesView *view;
     gulong selection_handler_id;
 };
 
-G_DEFINE_TYPE (NautilusTrashBar, nautilus_trash_bar, GTK_TYPE_INFO_BAR)
+G_DEFINE_TYPE (NautilusTrashBar, nautilus_trash_bar, GTK_TYPE_BIN)
 
 static void
 selection_changed_cb (NautilusFilesView *view,
                       NautilusTrashBar  *bar)
 {
     g_autolist (NautilusFile) selection = NULL;
+    GtkWidget *info_bar;
     int count;
 
     selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
     count = g_list_length (selection);
 
-    gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (bar),
+    info_bar = gtk_bin_get_child (GTK_BIN (bar));
+    gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (info_bar),
                                          TRASH_BAR_RESPONSE_RESTORE,
                                          (count > 0));
 }
@@ -124,10 +126,12 @@ nautilus_trash_bar_trash_state_changed (NautilusTrashMonitor *trash_monitor,
                                         gpointer              data)
 {
     NautilusTrashBar *bar;
+    GtkWidget *info_bar;
 
     bar = NAUTILUS_TRASH_BAR (data);
 
-    gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (bar),
+    info_bar = gtk_bin_get_child (GTK_BIN (bar));
+    gtk_info_bar_set_response_sensitive (GTK_INFO_BAR (info_bar),
                                          TRASH_BAR_RESPONSE_EMPTY,
                                          !nautilus_trash_monitor_is_empty ());
 }
@@ -161,7 +165,7 @@ trash_bar_response_cb (GtkInfoBar *infobar,
     NautilusTrashBar *bar;
     GtkWidget *window;
 
-    bar = NAUTILUS_TRASH_BAR (infobar);
+    bar = NAUTILUS_TRASH_BAR (user_data);
     window = gtk_widget_get_toplevel (GTK_WIDGET (bar));
 
     switch (response_id)
@@ -212,16 +216,17 @@ trash_bar_response_cb (GtkInfoBar *infobar,
 static void
 nautilus_trash_bar_init (NautilusTrashBar *bar)
 {
-    GtkWidget *action_area, *w;
+    GtkWidget *info_bar;
+    GtkWidget *w;
     const gchar *subtitle_text;
     GtkWidget *label;
     GtkWidget *subtitle;
     PangoAttrList *attrs;
 
-    action_area = gtk_info_bar_get_action_area (GTK_INFO_BAR (bar));
-
-    gtk_orientable_set_orientation (GTK_ORIENTABLE (action_area),
-                                    GTK_ORIENTATION_HORIZONTAL);
+    info_bar = gtk_info_bar_new ();
+    gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_QUESTION);
+    gtk_widget_show (info_bar);
+    adw_bin_set_child (ADW_BIN (bar), info_bar);
 
     attrs = pango_attr_list_new ();
     pango_attr_list_insert (attrs, pango_attr_weight_new (PANGO_WEIGHT_BOLD));
@@ -241,23 +246,23 @@ nautilus_trash_bar_init (NautilusTrashBar *bar)
                      G_SETTINGS_BIND_GET);
 
     gtk_widget_show (label);
-    gtk_info_bar_add_child (GTK_INFO_BAR (bar), label);
+    gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), label);
 
-    gtk_info_bar_add_child (GTK_INFO_BAR (bar), subtitle);
+    gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), subtitle);
 
-    w = gtk_info_bar_add_button (GTK_INFO_BAR (bar),
+    w = gtk_info_bar_add_button (GTK_INFO_BAR (info_bar),
                                  _("_Settings"),
                                  TRASH_BAR_RESPONSE_AUTODELETE);
     gtk_widget_set_tooltip_text (w,
                                  _("Display system controls for trash content"));
 
-    w = gtk_info_bar_add_button (GTK_INFO_BAR (bar),
+    w = gtk_info_bar_add_button (GTK_INFO_BAR (info_bar),
                                  _("_Restore"),
                                  TRASH_BAR_RESPONSE_RESTORE);
     gtk_widget_set_tooltip_text (w,
                                  _("Restore selected items to their original position"));
 
-    w = gtk_info_bar_add_button (GTK_INFO_BAR (bar),
+    w = gtk_info_bar_add_button (GTK_INFO_BAR (info_bar),
                                  /* Translators: "Empty" is an action (for the trash) , not a state */
                                  _("_Empty…"),
                                  TRASH_BAR_RESPONSE_EMPTY);
@@ -272,7 +277,7 @@ nautilus_trash_bar_init (NautilusTrashBar *bar)
     nautilus_trash_bar_trash_state_changed (nautilus_trash_monitor_get (),
                                             FALSE, bar);
 
-    g_signal_connect (bar, "response",
+    g_signal_connect (info_bar, "response",
                       G_CALLBACK (trash_bar_response_cb), bar);
 }
 
@@ -281,6 +286,5 @@ nautilus_trash_bar_new (NautilusFilesView *view)
 {
     return g_object_new (NAUTILUS_TYPE_TRASH_BAR,
                          "view", view,
-                         "message-type", GTK_MESSAGE_QUESTION,
                          NULL);
 }
diff --git a/src/nautilus-trash-bar.h b/src/nautilus-trash-bar.h
index f838cbdaf..9fc4ffa50 100644
--- a/src/nautilus-trash-bar.h
+++ b/src/nautilus-trash-bar.h
@@ -28,8 +28,8 @@ G_BEGIN_DECLS
 
 #define NAUTILUS_TYPE_TRASH_BAR (nautilus_trash_bar_get_type ())
 
-G_DECLARE_FINAL_TYPE (NautilusTrashBar, nautilus_trash_bar, NAUTILUS, TRASH_BAR, GtkInfoBar)
+G_DECLARE_FINAL_TYPE (NautilusTrashBar, nautilus_trash_bar, NAUTILUS, TRASH_BAR, GtkBin)
 
 GtkWidget *nautilus_trash_bar_new (NautilusFilesView *view);
 
-G_END_DECLS
\ No newline at end of file
+G_END_DECLS
diff --git a/src/nautilus-x-content-bar.c b/src/nautilus-x-content-bar.c
index 2613cff46..8dec51f41 100644
--- a/src/nautilus-x-content-bar.c
+++ b/src/nautilus-x-content-bar.c
@@ -34,7 +34,7 @@
 
 struct _NautilusXContentBar
 {
-    GtkInfoBar parent_instance;
+    GtkBin parent_instance;
     GtkWidget *label;
 
     char **x_content_types;
@@ -154,6 +154,7 @@ nautilus_x_content_bar_set_x_content_types (NautilusXContentBar *bar,
         const char *name;
         GIcon *icon;
         GtkWidget *image;
+        GtkWidget *info_bar;
         GtkWidget *button;
         GAppInfo *app;
         gboolean has_app;
@@ -189,7 +190,8 @@ nautilus_x_content_bar_set_x_content_types (NautilusXContentBar *bar,
         }
 
         name = g_app_info_get_name (default_app);
-        button = gtk_info_bar_add_button (GTK_INFO_BAR (bar), name, n);
+        info_bar = gtk_bin_get_child (GTK_BIN (bar));
+        button = gtk_info_bar_add_button (GTK_INFO_BAR (info_bar), name, n);
         box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
 
         if (image != NULL)
@@ -323,12 +325,13 @@ nautilus_x_content_bar_class_init (NautilusXContentBarClass *klass)
 static void
 nautilus_x_content_bar_init (NautilusXContentBar *bar)
 {
-    GtkWidget *action_area;
+    GtkWidget *info_bar;
     PangoAttrList *attrs;
 
-    action_area = gtk_info_bar_get_action_area (GTK_INFO_BAR (bar));
-
-    gtk_orientable_set_orientation (GTK_ORIENTABLE (action_area), GTK_ORIENTATION_HORIZONTAL);
+    info_bar = gtk_info_bar_new ();
+    gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_QUESTION);
+    gtk_widget_show (info_bar);
+    adw_bin_set_child (ADW_BIN (bar), info_bar);
 
     attrs = pango_attr_list_new ();
     pango_attr_list_insert (attrs, pango_attr_weight_new (PANGO_WEIGHT_BOLD));
@@ -337,9 +340,9 @@ nautilus_x_content_bar_init (NautilusXContentBar *bar)
     pango_attr_list_unref (attrs);
 
     gtk_label_set_ellipsize (GTK_LABEL (bar->label), PANGO_ELLIPSIZE_END);
-    gtk_info_bar_add_child (GTK_INFO_BAR (bar), bar->label);
+    gtk_info_bar_add_child (GTK_INFO_BAR (info_bar), bar->label);
 
-    g_signal_connect (bar, "response",
+    g_signal_connect (info_bar, "response",
                       G_CALLBACK (content_bar_response_cb),
                       bar);
 }
@@ -349,7 +352,6 @@ nautilus_x_content_bar_new (GMount             *mount,
                             const char * const *x_content_types)
 {
     return g_object_new (NAUTILUS_TYPE_X_CONTENT_BAR,
-                         "message-type", GTK_MESSAGE_QUESTION,
                          "mount", mount,
                          "x-content-types", x_content_types,
                          NULL);
diff --git a/src/nautilus-x-content-bar.h b/src/nautilus-x-content-bar.h
index 78872c884..af7bcaefe 100644
--- a/src/nautilus-x-content-bar.h
+++ b/src/nautilus-x-content-bar.h
@@ -29,9 +29,9 @@ G_BEGIN_DECLS
 
 #define NAUTILUS_TYPE_X_CONTENT_BAR (nautilus_x_content_bar_get_type ())
 
-G_DECLARE_FINAL_TYPE (NautilusXContentBar, nautilus_x_content_bar, NAUTILUS, X_CONTENT_BAR, GtkInfoBar)
+G_DECLARE_FINAL_TYPE (NautilusXContentBar, nautilus_x_content_bar, NAUTILUS, X_CONTENT_BAR, GtkBin)
 
 GtkWidget *nautilus_x_content_bar_new (GMount             *mount,
                                        const char * const *x_content_types);
 
-G_END_DECLS
\ No newline at end of file
+G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]