[gtk+] themingengine: Transition code towards StyleContext
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] themingengine: Transition code towards StyleContext
- Date: Sat, 16 Aug 2014 17:40:19 +0000 (UTC)
commit 9e4fc66e9a1b2a00d8825cc735a958e1858c1862
Author: Benjamin Otte <otte redhat com>
Date: Sat Aug 16 19:22:15 2014 +0200
themingengine: Transition code towards StyleContext
We want to get rid of theming engines, so stop using them as much as
possible.
gtk/gtkthemingengine.c | 95 ++++++++++++++++++++++++++----------------------
1 files changed, 52 insertions(+), 43 deletions(-)
---
diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c
index 337a61c..a1a0c55 100644
--- a/gtk/gtkthemingengine.c
+++ b/gtk/gtkthemingengine.c
@@ -1029,7 +1029,7 @@ gtk_theming_engine_get_screen (GtkThemingEngine *engine)
}
static gboolean
-render_icon_image (GtkThemingEngine *engine,
+render_icon_image (GtkStyleContext *context,
cairo_t *cr,
double x,
double y,
@@ -1040,15 +1040,15 @@ render_icon_image (GtkThemingEngine *engine,
cairo_matrix_t matrix, transform_matrix;
GtkCssImage *image;
- image = _gtk_css_image_value_get_image (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_ICON_SOURCE));
+ image = _gtk_css_image_value_get_image (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_ICON_SOURCE));
if (image == NULL)
return FALSE;
- shadows = _gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_ICON_SHADOW);
+ shadows = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_ICON_SHADOW);
cairo_translate (cr, x, y);
- if (_gtk_css_transform_value_get_matrix (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_ICON_TRANSFORM), &transform_matrix))
+ if (_gtk_css_transform_value_get_matrix (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_ICON_TRANSFORM), &transform_matrix))
{
/* XXX: Implement -gtk-icon-transform-origin instead of hardcoding "50% 50%" here */
cairo_matrix_init_translate (&matrix, width / 2, height / 2);
@@ -1085,12 +1085,15 @@ gtk_theming_engine_render_check (GtkThemingEngine *engine,
{
GdkRGBA fg_color, bg_color;
GtkStateFlags flags;
+ GtkStyleContext *context;
gint exterior_size, interior_size, thickness, pad;
GtkBorderStyle border_style;
GtkBorder border;
gint border_width;
- if (render_icon_image (engine, cr, x, y, width, height))
+ context = engine->priv->context;
+
+ if (render_icon_image (context, cr, x, y, width, height))
return;
flags = gtk_theming_engine_get_state (engine);
@@ -1100,7 +1103,7 @@ gtk_theming_engine_render_check (GtkThemingEngine *engine,
gtk_theming_engine_get_background_color (engine, flags, &bg_color);
gtk_theming_engine_get_border (engine, flags, &border);
border_style = _gtk_css_border_style_value_get
- (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
+ (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
border_width = MIN (MIN (border.top, border.bottom),
MIN (border.left, border.right));
@@ -1200,10 +1203,13 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine,
GtkStateFlags flags;
GdkRGBA fg_color, bg_color;
gint exterior_size, interior_size, pad, thickness, border_width;
+ GtkStyleContext *context;
GtkBorderStyle border_style;
GtkBorder border;
- if (render_icon_image (engine, cr, x, y, width, height))
+ context = engine->priv->context;
+
+ if (render_icon_image (context, cr, x, y, width, height))
return;
flags = gtk_theming_engine_get_state (engine);
@@ -1214,7 +1220,7 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine,
gtk_theming_engine_get_background_color (engine, flags, &bg_color);
gtk_theming_engine_get_border (engine, flags, &border);
border_style = _gtk_css_border_style_value_get
- (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
+ (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
exterior_size = MIN (width, height);
border_width = MIN (MIN (border.top, border.bottom),
@@ -1309,7 +1315,7 @@ gtk_theming_engine_render_arrow (GtkThemingEngine *engine,
GtkStateFlags state;
GdkRGBA color;
- if (render_icon_image (engine, cr, x, y, size, size))
+ if (render_icon_image (engine->priv->context, cr, x, y, size, size))
return;
cairo_save (cr);
@@ -1739,7 +1745,7 @@ render_border (cairo_t *cr,
}
static void
-render_frame_internal (GtkThemingEngine *engine,
+render_frame_internal (GtkStyleContext *context,
cairo_t *cr,
gdouble x,
gdouble y,
@@ -1754,29 +1760,29 @@ render_frame_internal (GtkThemingEngine *engine,
double border_width[4];
GdkRGBA colors[4];
- border_width[0] = _gtk_css_number_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border_width[1] = _gtk_css_number_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border_width[2] = _gtk_css_number_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
- border_width[3] = _gtk_css_number_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
+ border_width[0] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
+ border_width[1] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
+ border_width[2] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
+ border_width[3] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
- border_style[0] = _gtk_css_border_style_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
- border_style[1] = _gtk_css_border_style_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE));
- border_style[2] = _gtk_css_border_style_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE));
- border_style[3] = _gtk_css_border_style_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_LEFT_STYLE));
+ border_style[0] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
+ border_style[1] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE));
+ border_style[2] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE));
+ border_style[3] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_LEFT_STYLE));
gtk_theming_engine_hide_border_sides (border_width, border_style, hidden_side);
- if (_gtk_border_image_init (&border_image, engine->priv->context))
+ if (_gtk_border_image_init (&border_image, context))
_gtk_border_image_render (&border_image, border_width, cr, x, y, width, height);
else
{
- colors[0] = *_gtk_css_rgba_value_get_rgba (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
- colors[1] = *_gtk_css_rgba_value_get_rgba (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
- colors[2] = *_gtk_css_rgba_value_get_rgba (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
- colors[3] = *_gtk_css_rgba_value_get_rgba (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
+ colors[0] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
+ colors[1] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
+ colors[2] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
+ colors[3] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
_gtk_rounded_box_init_rect (&border_box, x, y, width, height);
- _gtk_rounded_box_apply_border_radius_for_context (&border_box, engine->priv->context, junction);
+ _gtk_rounded_box_apply_border_radius_for_context (&border_box, context, junction);
render_border (cr, &border_box, border_width, hidden_side, colors, border_style);
}
@@ -1794,7 +1800,7 @@ gtk_theming_engine_render_frame (GtkThemingEngine *engine,
junction = gtk_theming_engine_get_junction_sides (engine);
- render_frame_internal (engine, cr,
+ render_frame_internal (engine->priv->context, cr,
x, y, width, height,
0, junction);
}
@@ -1821,7 +1827,7 @@ gtk_theming_engine_render_expander (GtkThemingEngine *engine,
gboolean is_rtl;
gdouble progress;
- if (render_icon_image (engine, cr, x, y, width, height))
+ if (render_icon_image (engine->priv->context, cr, x, y, width, height))
return;
cairo_save (cr);
@@ -1920,20 +1926,21 @@ gtk_theming_engine_render_focus (GtkThemingEngine *engine,
{
GtkBorderStyle border_style[4];
GtkRoundedBox border_box;
+ GtkStyleContext *context = engine->priv->context;
double border_width[4];
GdkRGBA colors[4];
- border_style[0] = _gtk_css_border_style_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_OUTLINE_STYLE));
+ border_style[0] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_OUTLINE_STYLE));
if (border_style[0] != GTK_BORDER_STYLE_NONE)
{
int offset;
border_style[1] = border_style[2] = border_style[3] = border_style[0];
- border_width[0] = _gtk_css_number_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_OUTLINE_WIDTH), 100);
+ border_width[0] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_OUTLINE_WIDTH), 100);
border_width[3] = border_width[2] = border_width[1] = border_width[0];
- colors[0] = *_gtk_css_rgba_value_get_rgba (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_OUTLINE_COLOR));
+ colors[0] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_OUTLINE_COLOR));
colors[3] = colors[2] = colors[1] = colors[0];
- offset = _gtk_css_number_value_get (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_OUTLINE_OFFSET), 100);
+ offset = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_OUTLINE_OFFSET), 100);
_gtk_rounded_box_init_rect (&border_box, x, y, width, height);
_gtk_rounded_box_shrink (&border_box,
@@ -2016,7 +2023,7 @@ gtk_theming_engine_render_layout (GtkThemingEngine *engine,
prepare_context_for_layout (cr, x, y, layout);
- _gtk_css_shadows_value_paint_layout (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_TEXT_SHADOW),
+ _gtk_css_shadows_value_paint_layout (_gtk_style_context_peek_property (engine->priv->context,
GTK_CSS_PROPERTY_TEXT_SHADOW),
cr, layout);
gdk_cairo_set_source_rgba (cr, &fg_color);
@@ -2051,19 +2058,21 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
{
GtkJunctionSides junction;
GtkStateFlags state;
+ GtkStyleContext *context;
gint border_width;
GtkCssValue *corner[4];
gdouble x0, y0, x1, y1, xc = 0.0, yc = 0.0, wc = 0.0, hc = 0.0;
GtkBorder border;
+ context = engine->priv->context;
state = gtk_theming_engine_get_state (engine);
junction = gtk_theming_engine_get_junction_sides (engine);
gtk_theming_engine_get_border (engine, state, &border);
- corner[GTK_CSS_TOP_LEFT] = _gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS);
- corner[GTK_CSS_TOP_RIGHT] = _gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS);
- corner[GTK_CSS_BOTTOM_LEFT] = _gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS);
- corner[GTK_CSS_BOTTOM_RIGHT] = _gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS);
+ corner[GTK_CSS_TOP_LEFT] = _gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS);
+ corner[GTK_CSS_TOP_RIGHT] = _gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS);
+ corner[GTK_CSS_BOTTOM_LEFT] = _gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS);
+ corner[GTK_CSS_BOTTOM_RIGHT] = _gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS);
border_width = MIN (MIN (border.top, border.bottom),
MIN (border.left, border.right));
@@ -2132,7 +2141,7 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
cairo_rectangle (cr, x0, yc + hc, x1 - x0, y1 - (yc + hc));
cairo_clip (cr);
- render_frame_internal (engine, cr,
+ render_frame_internal (context, cr,
x, y, width, height,
0, junction);
@@ -2178,7 +2187,7 @@ gtk_theming_engine_render_extension (GtkThemingEngine *engine,
junction);
_gtk_theming_background_render (&bg, cr);
- render_frame_internal (engine, cr,
+ render_frame_internal (engine->priv->context, cr,
x, y, width, height,
hidden_side, junction);
}
@@ -2229,7 +2238,7 @@ gtk_theming_engine_render_handle (GtkThemingEngine *engine,
gint xx, yy;
gboolean has_image;
- if (render_icon_image (engine, cr, x, y, width, height))
+ if (render_icon_image (engine->priv->context, cr, x, y, width, height))
return;
cairo_save (cr);
@@ -2590,7 +2599,7 @@ render_spinner (GtkThemingEngine *engine,
cairo_save (cr);
cairo_translate (cr, x + width / 2, y + height / 2);
- _gtk_css_shadows_value_paint_spinner (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_ICON_SHADOW),
+ _gtk_css_shadows_value_paint_spinner (_gtk_style_context_peek_property (engine->priv->context,
GTK_CSS_PROPERTY_ICON_SHADOW),
cr,
radius,
-1);
@@ -2609,7 +2618,7 @@ gtk_theming_engine_render_activity (GtkThemingEngine *engine,
gdouble width,
gdouble height)
{
- if (render_icon_image (engine, cr, x, y, width, height))
+ if (render_icon_image (engine->priv->context, cr, x, y, width, height))
return;
render_spinner (engine, cr, x, y, width, height);
@@ -2709,7 +2718,7 @@ gtk_theming_engine_render_icon_pixbuf (GtkThemingEngine *engine,
return scaled;
image_effect = _gtk_css_image_effect_value_get
- (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_GTK_IMAGE_EFFECT));
+ (_gtk_style_context_peek_property (engine->priv->context, GTK_CSS_PROPERTY_GTK_IMAGE_EFFECT));
if (image_effect == GTK_CSS_IMAGE_EFFECT_DIM ||
state & GTK_STATE_FLAG_INSENSITIVE)
@@ -2765,7 +2774,7 @@ gtk_theming_engine_render_icon (GtkThemingEngine *engine,
gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
- _gtk_css_shadows_value_paint_icon (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_ICON_SHADOW), cr);
+ _gtk_css_shadows_value_paint_icon (_gtk_style_context_peek_property (engine->priv->context,
GTK_CSS_PROPERTY_ICON_SHADOW), cr);
cairo_paint (cr);
@@ -2783,7 +2792,7 @@ gtk_theming_engine_render_icon_surface (GtkThemingEngine *engine,
cairo_set_source_surface (cr, surface, x, y);
- _gtk_css_shadows_value_paint_icon (_gtk_theming_engine_peek_property (engine,
GTK_CSS_PROPERTY_ICON_SHADOW), cr);
+ _gtk_css_shadows_value_paint_icon (_gtk_style_context_peek_property (engine->priv->context,
GTK_CSS_PROPERTY_ICON_SHADOW), cr);
cairo_paint (cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]