expander: Use a builtin icon

This saves quite a bit of code.
This commit is contained in:
Matthias Clasen 2015-12-19 00:48:10 -05:00
parent 22738ad5af
commit d51de8cff8

View File

@ -120,8 +120,7 @@
#include "a11y/gtkexpanderaccessible.h"
#include "gtkstylecontextprivate.h"
#include "gtkcsscustomgadgetprivate.h"
#include "gtkcssnumbervalueprivate.h"
#include "gtkcssstyleprivate.h"
#include "gtkbuiltiniconprivate.h"
#include "gtkwidgetprivate.h"
#include "gtkcontainerprivate.h"
@ -287,22 +286,6 @@ static gboolean gtk_expander_render_title (GtkCssGadget *gadget,
int width,
int height,
gpointer data);
static void gtk_expander_measure_arrow (GtkCssGadget *gadget,
GtkOrientation orientation,
int for_size,
int *minimum_size,
int *natural_size,
int *minimum_baseline,
int *natural_baseline,
gpointer data);
static gboolean gtk_expander_render_arrow (GtkCssGadget *gadget,
cairo_t *cr,
int x,
int y,
int width,
int height,
gpointer data);
G_DEFINE_TYPE_WITH_CODE (GtkExpander, gtk_expander, GTK_TYPE_BIN,
G_ADD_PRIVATE (GtkExpander)
@ -508,15 +491,12 @@ gtk_expander_init (GtkExpander *expander)
gtk_expander_render_title,
NULL,
NULL);
priv->arrow_gadget = gtk_css_custom_gadget_new ("arrow",
GTK_WIDGET (expander),
priv->title_gadget,
NULL,
gtk_expander_measure_arrow,
NULL,
gtk_expander_render_arrow,
NULL,
NULL);
priv->arrow_gadget = gtk_builtin_icon_new ("arrow",
GTK_WIDGET (expander),
priv->title_gadget,
NULL);
gtk_css_gadget_add_class (priv->arrow_gadget, GTK_STYLE_CLASS_HORIZONTAL);
gtk_builtin_icon_set_default_size_property (GTK_BUILTIN_ICON (priv->arrow_gadget), "expander-size");
gtk_drag_dest_set (GTK_WIDGET (expander), 0, NULL, 0, 0);
gtk_drag_dest_set_track_motion (GTK_WIDGET (expander), TRUE);
@ -894,28 +874,6 @@ gtk_expander_unmap (GtkWidget *widget)
gtk_widget_unmap (priv->label_widget);
}
static gboolean
gtk_expander_render_arrow (GtkCssGadget *gadget,
cairo_t *cr,
int x,
int y,
int width,
int height,
gpointer data)
{
GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
GtkExpander *expander = GTK_EXPANDER (widget);
GtkExpanderPrivate *priv = expander->priv;
GtkStyleContext *context;
context = gtk_widget_get_style_context (widget);
gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (priv->arrow_gadget));
gtk_render_expander (context, cr, x, y, width, height);
gtk_style_context_restore (context);
return FALSE;
}
static gboolean
gtk_expander_render_title (GtkCssGadget *gadget,
cairo_t *cr,
@ -1569,43 +1527,6 @@ gtk_expander_measure_title (GtkCssGadget *gadget,
}
}
static void
gtk_expander_measure_arrow (GtkCssGadget *gadget,
GtkOrientation orientation,
int for_size,
int *minimum,
int *natural,
int *minimum_baseline,
int *natural_baseline,
gpointer data)
{
GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
GtkCssStyle *style;
guint property;
gdouble min_size;
style = gtk_css_gadget_get_style (gadget);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
property = GTK_CSS_PROPERTY_MIN_WIDTH;
else
property = GTK_CSS_PROPERTY_MIN_HEIGHT;
min_size = _gtk_css_number_value_get (gtk_css_style_get_value (style, property), 100.0);
if (min_size > 0.0)
*minimum = *natural = 0;
else
{
gint expander_size;
gtk_widget_style_get (GTK_WIDGET (widget),
"expander-size", &expander_size,
NULL);
*minimum = *natural = expander_size;
}
}
/**
* gtk_expander_new:
* @label: the text of the label