[gimp] app: undeprecate GimpThumbBox



commit 15ec52eab4381f2dd0b786366e1bdffd8ced56c7
Author: Michael Natterer <mitch gimp org>
Date:   Mon May 21 19:59:38 2018 +0200

    app: undeprecate GimpThumbBox
    
    and cheat around to trick CSS into believing it's a treeview with
    a header that says "Preview". Setting its width so it won't jump
    around is still broken.

 app/widgets/gimpthumbbox.c |   76 ++++++++++++++++++++++----------------------
 1 files changed, 38 insertions(+), 38 deletions(-)
---
diff --git a/app/widgets/gimpthumbbox.c b/app/widgets/gimpthumbbox.c
index d1e2aba..7a139de 100644
--- a/app/widgets/gimpthumbbox.c
+++ b/app/widgets/gimpthumbbox.c
@@ -54,8 +54,6 @@ static void     gimp_thumb_box_progress_iface_init (GimpProgressInterface *iface
 static void     gimp_thumb_box_dispose            (GObject           *object);
 static void     gimp_thumb_box_finalize           (GObject           *object);
 
-static void     gimp_thumb_box_style_updated      (GtkWidget         *widget);
-
 static GimpProgress *
                 gimp_thumb_box_progress_start     (GimpProgress      *progress,
                                                    gboolean           cancellable,
@@ -107,10 +105,10 @@ gimp_thumb_box_class_init (GimpThumbBoxClass *klass)
   GObjectClass   *object_class = G_OBJECT_CLASS (klass);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
-  object_class->dispose       = gimp_thumb_box_dispose;
-  object_class->finalize      = gimp_thumb_box_finalize;
+  object_class->dispose  = gimp_thumb_box_dispose;
+  object_class->finalize = gimp_thumb_box_finalize;
 
-  widget_class->style_updated = gimp_thumb_box_style_updated;
+  gtk_widget_class_set_css_name (widget_class, "treeview");
 }
 
 static void
@@ -161,38 +159,6 @@ gimp_thumb_box_finalize (GObject *object)
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
-static void
-gimp_thumb_box_style_updated (GtkWidget *widget)
-{
-  GimpThumbBox    *box   = GIMP_THUMB_BOX (widget);
-  GtkStyleContext *style = gtk_widget_get_style_context (widget);
-  GtkWidget       *ebox;
-  GdkRGBA          color;
-
-  GTK_WIDGET_CLASS (parent_class)->style_updated (widget);
-
-  gtk_style_context_save (style);
-  gtk_style_context_add_class (style, GTK_STYLE_CLASS_ENTRY);
-  gtk_style_context_get_background_color (style, 0, &color);
-  gtk_style_context_restore (style);
-
-  if (box->preview)
-    {
-      gtk_widget_override_background_color (box->preview, 0, &color);
-      gtk_widget_override_background_color (box->preview,
-                                            GTK_STATE_FLAG_INSENSITIVE, &color);
-    }
-
-  ebox = gtk_bin_get_child (GTK_BIN (widget));
-
-  if (ebox)
-    {
-      gtk_widget_override_background_color (ebox, 0, &color);
-      gtk_widget_override_background_color (ebox,
-                                            GTK_STATE_FLAG_INSENSITIVE, &color);
-    }
-}
-
 static GimpProgress *
 gimp_thumb_box_progress_start (GimpProgress *progress,
                                gboolean      cancellable,
@@ -298,6 +264,31 @@ gimp_thumb_box_progress_message (GimpProgress        *progress,
 }
 
 
+/*  stupid GimpHeader class just so we get a "header" CSS node  */
+
+#define GIMP_TYPE_HEADER (gimp_header_get_type ())
+
+typedef struct _GtkBox      GimpHeader;
+typedef struct _GtkBoxClass GimpHeaderClass;
+
+static GType gimp_header_get_type (void) G_GNUC_CONST;
+
+G_DEFINE_TYPE (GimpHeader, gimp_header, GTK_TYPE_BOX)
+
+static void
+gimp_header_class_init (GimpHeaderClass *klass)
+{
+  gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (klass), "header");
+}
+
+static void
+gimp_header_init (GimpHeader *header)
+{
+  gtk_orientable_set_orientation (GTK_ORIENTABLE (header),
+                                  GTK_ORIENTATION_VERTICAL);
+}
+
+
 /*  public functions  */
 
 GtkWidget *
@@ -319,6 +310,9 @@ gimp_thumb_box_new (GimpContext *context)
 
   box = g_object_new (GIMP_TYPE_THUMB_BOX, NULL);
 
+  gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (box)),
+                               GTK_STYLE_CLASS_VIEW);
+
   box->context = context;
 
   ebox = gtk_event_box_new ();
@@ -342,8 +336,12 @@ gimp_thumb_box_new (GimpContext *context)
   gtk_container_add (GTK_CONTAINER (ebox), vbox);
   gtk_widget_show (vbox);
 
+  vbox2 = g_object_new (GIMP_TYPE_HEADER, NULL);
+  gtk_box_pack_start (GTK_BOX (vbox), vbox2, FALSE, FALSE, 0);
+  gtk_widget_show (vbox2);
+
   button = gtk_button_new ();
-  gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0);
   gtk_widget_show (button);
 
   label = gtk_label_new_with_mnemonic (_("Pr_eview"));
@@ -394,6 +392,8 @@ gimp_thumb_box_new (GimpContext *context)
                                 MAX (h, v),
                                 0, FALSE);
 
+  gtk_style_context_add_class (gtk_widget_get_style_context (box->preview),
+                               GTK_STYLE_CLASS_VIEW);
   gtk_box_pack_start (GTK_BOX (hbox), box->preview, TRUE, FALSE, 2);
   gtk_widget_show (box->preview);
 


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