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.
This commit is contained in:
Michael Natterer 2018-05-21 19:59:38 +02:00
parent 080f7ae909
commit 15ec52eab4
1 changed files with 38 additions and 38 deletions

View File

@ -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);