mirror of https://github.com/GNOME/gimp.git
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:
parent
080f7ae909
commit
15ec52eab4
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue