[gtk+] Support border-image in theme_engine_render_frame_gap
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Support border-image in theme_engine_render_frame_gap
- Date: Mon, 28 Nov 2011 09:11:03 +0000 (UTC)
commit eb44036346d3731b90931b5ec7fd09c0b7ee69aa
Author: Alexander Larsson <alexl redhat com>
Date: Mon Nov 28 10:05:29 2011 +0100
Support border-image in theme_engine_render_frame_gap
This is similar to the normal frame rendering, but has a clip
region applied for the gap.
gtk/gtkthemingengine.c | 35 ++++++++++++++++++++++++-----------
1 files changed, 24 insertions(+), 11 deletions(-)
---
diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c
index 307a9b6..2774051 100644
--- a/gtk/gtkthemingengine.c
+++ b/gtk/gtkthemingengine.c
@@ -2344,21 +2344,27 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
GtkCssBorderCornerRadius *bottom_left_radius, *bottom_right_radius;
GtkCssBorderRadius border_radius = { { 0, }, };
gdouble x0, y0, x1, y1, xc, yc, wc, hc;
+ GtkStylePropertyContext context;
+ GtkBorderImage *border_image;
GtkBorder border;
xc = yc = wc = hc = 0;
state = gtk_theming_engine_get_state (engine);
junction = gtk_theming_engine_get_junction_sides (engine);
+ context.width = width;
+ context.height = height;
+
gtk_theming_engine_get_border (engine, state, &border);
- gtk_theming_engine_get (engine, state,
- /* Can't use border-radius as it's an int for
- * backwards compat */
- "border-top-left-radius", &top_left_radius,
- "border-top-right-radius", &top_right_radius,
- "border-bottom-right-radius", &bottom_right_radius,
- "border-bottom-left-radius", &bottom_left_radius,
- NULL);
+ _gtk_theming_engine_get (engine, state, &context,
+ "border-image", &border_image,
+ /* Can't use border-radius as it's an int for
+ * backwards compat */
+ "border-top-left-radius", &top_left_radius,
+ "border-top-right-radius", &top_right_radius,
+ "border-bottom-right-radius", &bottom_right_radius,
+ "border-bottom-left-radius", &bottom_left_radius,
+ NULL);
if (top_left_radius)
border_radius.top_left = *top_left_radius;
@@ -2440,9 +2446,16 @@ 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,
- x, y, width, height,
- 0, junction);
+ if (border_image != NULL)
+ {
+ _gtk_border_image_render (border_image, &border,
+ cr, x, y, width, height);
+ _gtk_border_image_unref (border_image);
+ }
+ else
+ render_frame_internal (engine, cr,
+ x, y, width, height,
+ 0, junction);
cairo_restore (cr);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]