[epiphany/wip/exalm/gtk4-cleanups-3: 3/18] nautilus-floating-bar: Trim down




commit f727738551521aee85c8b0eaf86eed4ca9236df6
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Wed Dec 1 13:59:08 2021 +0500

    nautilus-floating-bar: Trim down
    
    It can do things such as show a spinner, a secondary label or actions.
    
    Remove all of that, only leave what we actually use.

 embed/ephy-embed.c                          |   2 +-
 lib/widgets/contrib/nautilus-floating-bar.c | 317 +++++-----------------------
 lib/widgets/contrib/nautilus-floating-bar.h |  24 +--
 3 files changed, 62 insertions(+), 281 deletions(-)
---
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index 77743f257..3d81f8783 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -738,7 +738,7 @@ ephy_embed_constructed (GObject *object)
   ephy_embed_set_fullscreen_message (embed, FALSE);
 
   /* statusbar is hidden by default */
-  embed->floating_bar = nautilus_floating_bar_new (NULL, NULL, FALSE);
+  embed->floating_bar = nautilus_floating_bar_new ();
   gtk_widget_set_halign (embed->floating_bar, GTK_ALIGN_START);
   gtk_widget_set_valign (embed->floating_bar, GTK_ALIGN_END);
   gtk_widget_set_no_show_all (embed->floating_bar, TRUE);
diff --git a/lib/widgets/contrib/nautilus-floating-bar.c b/lib/widgets/contrib/nautilus-floating-bar.c
index f6815af27..fc727df08 100644
--- a/lib/widgets/contrib/nautilus-floating-bar.c
+++ b/lib/widgets/contrib/nautilus-floating-bar.c
@@ -31,126 +31,22 @@ struct _NautilusFloatingBar {
   GtkBox parent_instance;
 
   gchar *primary_label;
-  gchar *details_label;
-
   GtkWidget *primary_label_widget;
-  GtkWidget *details_label_widget;
-  GtkWidget *spinner;
-  gboolean show_spinner;
-  gboolean is_interactive;
+
   guint hover_timeout_id;
 };
 
 enum {
   PROP_PRIMARY_LABEL = 1,
-  PROP_DETAILS_LABEL,
-  PROP_SHOW_SPINNER,
   NUM_PROPERTIES
 };
 
-enum {
-  ACTION,
-  NUM_SIGNALS
-};
-
 static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-static guint signals[NUM_SIGNALS] = { 0, };
 
 G_DEFINE_TYPE (NautilusFloatingBar, nautilus_floating_bar,
                GTK_TYPE_BOX);
 
 static void
-action_button_clicked_cb (GtkButton           *button,
-                          NautilusFloatingBar *self)
-{
-  gint action_id;
-
-  action_id = GPOINTER_TO_INT
-                (g_object_get_data (G_OBJECT (button), "action-id"));
-
-  g_signal_emit (self, signals[ACTION], 0, action_id);
-}
-
-static void
-nautilus_floating_bar_finalize (GObject *obj)
-{
-  NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (obj);
-
-  nautilus_floating_bar_remove_hover_timeout (self);
-  g_free (self->primary_label);
-  g_free (self->details_label);
-
-  G_OBJECT_CLASS (nautilus_floating_bar_parent_class)->finalize (obj);
-}
-
-static void
-nautilus_floating_bar_get_property (GObject    *object,
-                                    guint       property_id,
-                                    GValue     *value,
-                                    GParamSpec *pspec)
-{
-  NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (object);
-
-  switch (property_id) {
-    case PROP_PRIMARY_LABEL:
-      g_value_set_string (value, self->primary_label);
-      break;
-    case PROP_DETAILS_LABEL:
-      g_value_set_string (value, self->details_label);
-      break;
-    case PROP_SHOW_SPINNER:
-      g_value_set_boolean (value, self->show_spinner);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-      break;
-  }
-}
-
-static void
-nautilus_floating_bar_set_property (GObject      *object,
-                                    guint         property_id,
-                                    const GValue *value,
-                                    GParamSpec   *pspec)
-{
-  NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (object);
-
-  switch (property_id) {
-    case PROP_PRIMARY_LABEL:
-      nautilus_floating_bar_set_primary_label (self, g_value_get_string (value));
-      break;
-    case PROP_DETAILS_LABEL:
-      nautilus_floating_bar_set_details_label (self, g_value_get_string (value));
-      break;
-    case PROP_SHOW_SPINNER:
-      nautilus_floating_bar_set_show_spinner (self, g_value_get_boolean (value));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-      break;
-  }
-}
-
-static void
-update_labels (NautilusFloatingBar *self)
-{
-  gboolean primary_visible, details_visible;
-
-  primary_visible = (self->primary_label != NULL) &&
-                    (strlen (self->primary_label) > 0);
-  details_visible = (self->details_label != NULL) &&
-                    (strlen (self->details_label) > 0);
-
-  gtk_label_set_text (GTK_LABEL (self->primary_label_widget),
-                      self->primary_label);
-  gtk_widget_set_visible (self->primary_label_widget, primary_visible);
-
-  gtk_label_set_text (GTK_LABEL (self->details_label_widget),
-                      self->details_label);
-  gtk_widget_set_visible (self->details_label_widget, details_visible);
-}
-
-void
 nautilus_floating_bar_remove_hover_timeout (NautilusFloatingBar *self)
 {
   if (self->hover_timeout_id != 0) {
@@ -212,10 +108,6 @@ overlay_enter_notify_cb (GtkWidget        *parent,
     return GDK_EVENT_PROPAGATE;
   }
 
-  if (NAUTILUS_FLOATING_BAR (widget)->is_interactive) {
-    return GDK_EVENT_PROPAGATE;
-  }
-
   gdk_window_get_position (gtk_widget_get_window (widget), NULL, &y_pos);
 
   data = g_slice_new (CheckPointerData);
@@ -348,47 +240,70 @@ static void
 nautilus_floating_bar_constructed (GObject *obj)
 {
   NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (obj);
-  GtkWidget *w, *box, *labels_box;
+  GtkWidget *w;
 
   G_OBJECT_CLASS (nautilus_floating_bar_parent_class)->constructed (obj);
 
-  box = GTK_WIDGET (obj);
-
-  w = gtk_spinner_new ();
-  gtk_box_pack_start (GTK_BOX (box), w, FALSE, TRUE, 0);
-  gtk_widget_set_visible (w, self->show_spinner);
-
-  g_object_bind_property (obj, "show-spinner",
-                          w, "active",
-                          G_BINDING_SYNC_CREATE);
-  self->spinner = w;
-
-  gtk_widget_set_size_request (w, 16, 16);
-  gtk_widget_set_margin_start (w, 8);
+  w = gtk_label_new (NULL);
+  gtk_label_set_ellipsize (GTK_LABEL (w), PANGO_ELLIPSIZE_MIDDLE);
+  gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE);
+  gtk_container_add (GTK_CONTAINER (self), w);
+  self->primary_label_widget = w;
+  gtk_widget_show (w);
 
-  labels_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
-  gtk_widget_set_hexpand (labels_box, TRUE);
-  gtk_box_pack_start (GTK_BOX (box), labels_box, FALSE, TRUE, 0);
-  g_object_set (labels_box,
+  g_object_set (w,
                 "margin-top", 2,
                 "margin-bottom", 2,
                 "margin-start", 12,
                 "margin-end", 12,
                 NULL);
-  gtk_widget_show (labels_box);
+}
 
-  w = gtk_label_new (NULL);
-  gtk_label_set_ellipsize (GTK_LABEL (w), PANGO_ELLIPSIZE_MIDDLE);
-  gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE);
-  gtk_container_add (GTK_CONTAINER (labels_box), w);
-  self->primary_label_widget = w;
-  gtk_widget_show (w);
+static void
+nautilus_floating_bar_finalize (GObject *obj)
+{
+  NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (obj);
 
-  w = gtk_label_new (NULL);
-  gtk_label_set_single_line_mode (GTK_LABEL (w), TRUE);
-  gtk_container_add (GTK_CONTAINER (labels_box), w);
-  self->details_label_widget = w;
-  gtk_widget_show (w);
+  nautilus_floating_bar_remove_hover_timeout (self);
+  g_free (self->primary_label);
+
+  G_OBJECT_CLASS (nautilus_floating_bar_parent_class)->finalize (obj);
+}
+
+static void
+nautilus_floating_bar_get_property (GObject    *object,
+                                    guint       property_id,
+                                    GValue     *value,
+                                    GParamSpec *pspec)
+{
+  NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (object);
+
+  switch (property_id) {
+    case PROP_PRIMARY_LABEL:
+      g_value_set_string (value, self->primary_label);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+  }
+}
+
+static void
+nautilus_floating_bar_set_property (GObject      *object,
+                                    guint         property_id,
+                                    const GValue *value,
+                                    GParamSpec   *pspec)
+{
+  NautilusFloatingBar *self = NAUTILUS_FLOATING_BAR (object);
+
+  switch (property_id) {
+    case PROP_PRIMARY_LABEL:
+      nautilus_floating_bar_set_primary_label (self, g_value_get_string (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+  }
 }
 
 static void
@@ -423,27 +338,6 @@ nautilus_floating_bar_class_init (NautilusFloatingBarClass *klass)
                          "Primary label displayed by the bar",
                          NULL,
                          G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS);
-  properties[PROP_DETAILS_LABEL] =
-    g_param_spec_string ("details-label",
-                         "Bar's details label",
-                         "Details label displayed by the bar",
-                         NULL,
-                         G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS);
-  properties[PROP_SHOW_SPINNER] =
-    g_param_spec_boolean ("show-spinner",
-                          "Show spinner",
-                          "Whether a spinner should be shown in the floating bar",
-                          FALSE,
-                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-  signals[ACTION] =
-    g_signal_new ("action",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0, NULL, NULL,
-                  g_cclosure_marshal_VOID__INT,
-                  G_TYPE_NONE, 1,
-                  G_TYPE_INT);
 
   g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
 }
@@ -456,109 +350,14 @@ nautilus_floating_bar_set_primary_label (NautilusFloatingBar *self,
     g_free (self->primary_label);
     self->primary_label = g_strdup (label);
 
-    g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_PRIMARY_LABEL]);
-
-    update_labels (self);
-  }
-}
-
-void
-nautilus_floating_bar_set_details_label (NautilusFloatingBar *self,
-                                         const gchar         *label)
-{
-  if (g_strcmp0 (self->details_label, label) != 0) {
-    g_free (self->details_label);
-    self->details_label = g_strdup (label);
-
-    g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_DETAILS_LABEL]);
-
-    update_labels (self);
-  }
-}
-
-void
-nautilus_floating_bar_set_labels (NautilusFloatingBar *self,
-                                  const gchar         *primary_label,
-                                  const gchar         *details_label)
-{
-  nautilus_floating_bar_set_primary_label (self, primary_label);
-  nautilus_floating_bar_set_details_label (self, details_label);
-}
-
-void
-nautilus_floating_bar_set_show_spinner (NautilusFloatingBar *self,
-                                        gboolean             show_spinner)
-{
-  if (self->show_spinner != show_spinner) {
-    self->show_spinner = show_spinner;
-    gtk_widget_set_visible (self->spinner,
-                            show_spinner);
+    gtk_label_set_label (GTK_LABEL (self->primary_label_widget), label);
 
-    g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_SPINNER]);
+    g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_PRIMARY_LABEL]);
   }
 }
 
 GtkWidget *
-nautilus_floating_bar_new (const gchar *primary_label,
-                           const gchar *details_label,
-                           gboolean     show_spinner)
+nautilus_floating_bar_new (void)
 {
-  return g_object_new (NAUTILUS_TYPE_FLOATING_BAR,
-                       "primary-label", primary_label,
-                       "details-label", details_label,
-                       "show-spinner", show_spinner,
-                       "orientation", GTK_ORIENTATION_HORIZONTAL,
-                       "spacing", 8,
-                       NULL);
-}
-
-void
-nautilus_floating_bar_add_action (NautilusFloatingBar *self,
-                                  const gchar         *icon_name,
-                                  gint                 action_id)
-{
-  GtkWidget *button;
-  GtkStyleContext *context;
-
-  button = gtk_button_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU);
-  context = gtk_widget_get_style_context (button);
-  gtk_style_context_add_class (context, "circular");
-  gtk_style_context_add_class (context, "flat");
-  gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (self), button, FALSE, TRUE, 0);
-  gtk_widget_show (button);
-
-  g_object_set_data (G_OBJECT (button), "action-id",
-                     GINT_TO_POINTER (action_id));
-
-  g_signal_connect (button, "clicked",
-                    G_CALLBACK (action_button_clicked_cb), self);
-
-  self->is_interactive = TRUE;
-}
-
-void
-nautilus_floating_bar_cleanup_actions (NautilusFloatingBar *self)
-{
-  GtkWidget *widget;
-  GList *children, *l;
-  gpointer data;
-
-  children = gtk_container_get_children (GTK_CONTAINER (self));
-  l = children;
-
-  while (l != NULL) {
-    widget = l->data;
-    data = g_object_get_data (G_OBJECT (widget), "action-id");
-    l = l->next;
-
-    if (data != NULL) {
-      /* destroy this */
-      gtk_widget_destroy (widget);
-    }
-  }
-
-  g_list_free (children);
-
-  self->is_interactive = FALSE;
+  return g_object_new (NAUTILUS_TYPE_FLOATING_BAR, NULL);
 }
diff --git a/lib/widgets/contrib/nautilus-floating-bar.h b/lib/widgets/contrib/nautilus-floating-bar.h
index 896d5a5cd..f953fdd35 100644
--- a/lib/widgets/contrib/nautilus-floating-bar.h
+++ b/lib/widgets/contrib/nautilus-floating-bar.h
@@ -24,33 +24,15 @@
 
 #include <gtk/gtk.h>
 
-#define NAUTILUS_FLOATING_BAR_ACTION_ID_STOP 1
+G_BEGIN_DECLS
 
 #define NAUTILUS_TYPE_FLOATING_BAR nautilus_floating_bar_get_type ()
 
 G_DECLARE_FINAL_TYPE (NautilusFloatingBar, nautilus_floating_bar, NAUTILUS, FLOATING_BAR, GtkBox)
 
-G_BEGIN_DECLS
-
-GtkWidget * nautilus_floating_bar_new              (const gchar *primary_label,
-                                                   const gchar *details_label,
-                                                   gboolean show_spinner);
+GtkWidget *nautilus_floating_bar_new               (void);
 
 void       nautilus_floating_bar_set_primary_label (NautilusFloatingBar *self,
-                                                   const gchar *label);
-void       nautilus_floating_bar_set_details_label (NautilusFloatingBar *self,
-                                                   const gchar *label);
-void        nautilus_floating_bar_set_labels        (NautilusFloatingBar *self,
-                                                    const gchar *primary,
-                                                    const gchar *detail);
-void        nautilus_floating_bar_set_show_spinner (NautilusFloatingBar *self,
-                                                   gboolean show_spinner);
-
-void        nautilus_floating_bar_add_action       (NautilusFloatingBar *self,
-                                                   const gchar *icon_name,
-                                                   gint action_id);
-void        nautilus_floating_bar_cleanup_actions  (NautilusFloatingBar *self);
-
-void        nautilus_floating_bar_remove_hover_timeout (NautilusFloatingBar *self);
+                                                    const char          *label);
 
 G_END_DECLS


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