themingengine: Move border-image handling into render_frame_internal()
This fixes 2 bugs: 1) extensions didn't get border images 2) border-images caused outlines to not be drawn
This commit is contained in:
@ -1723,6 +1723,7 @@ render_frame_internal (GtkThemingEngine *engine,
|
||||
guint hidden_side,
|
||||
GtkJunctionSides junction)
|
||||
{
|
||||
GtkBorderImage border_image;
|
||||
GtkStateFlags state;
|
||||
GtkBorderStyle border_style[4];
|
||||
GtkRoundedBox border_box;
|
||||
@ -1738,6 +1739,10 @@ render_frame_internal (GtkThemingEngine *engine,
|
||||
gtk_theming_engine_get_border (engine, state, &border);
|
||||
gtk_theming_engine_hide_border_sides (&border, hidden_side);
|
||||
|
||||
if (_gtk_border_image_init (&border_image, engine))
|
||||
_gtk_border_image_render (&border_image, &border, cr, x, y, width, height);
|
||||
else
|
||||
{
|
||||
gtk_theming_engine_get (engine, state,
|
||||
"border-top-style", &border_style[0],
|
||||
"border-right-style", &border_style[1],
|
||||
@ -1794,6 +1799,7 @@ render_frame_internal (GtkThemingEngine *engine,
|
||||
_gtk_rounded_box_apply_border_radius (&border_box, engine, state, junction);
|
||||
|
||||
render_border (cr, &border_box, &border, hidden_side, colors, border_style);
|
||||
}
|
||||
|
||||
border_style[0] = g_value_get_enum (_gtk_theming_engine_peek_property (engine, "outline-style"));
|
||||
if (border_style[0] != GTK_BORDER_STYLE_NONE)
|
||||
@ -1827,19 +1833,10 @@ gtk_theming_engine_render_frame (GtkThemingEngine *engine,
|
||||
gdouble width,
|
||||
gdouble height)
|
||||
{
|
||||
GtkStateFlags flags;
|
||||
GtkJunctionSides junction;
|
||||
GtkBorderImage border_image;
|
||||
GtkBorder border;
|
||||
|
||||
flags = gtk_theming_engine_get_state (engine);
|
||||
junction = gtk_theming_engine_get_junction_sides (engine);
|
||||
gtk_theming_engine_get_border (engine, flags, &border);
|
||||
|
||||
if (_gtk_border_image_init (&border_image, engine))
|
||||
_gtk_border_image_render (&border_image, &border,
|
||||
cr, x, y, width, height);
|
||||
else
|
||||
render_frame_internal (engine, cr,
|
||||
x, y, width, height,
|
||||
0, junction);
|
||||
@ -2188,7 +2185,6 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
|
||||
GtkCssBorderCornerRadius *top_left_radius, *top_right_radius;
|
||||
GtkCssBorderCornerRadius *bottom_left_radius, *bottom_right_radius;
|
||||
gdouble x0, y0, x1, y1, xc, yc, wc, hc;
|
||||
GtkBorderImage border_image;
|
||||
GtkBorder border;
|
||||
|
||||
xc = yc = wc = hc = 0;
|
||||
@ -2270,10 +2266,6 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
|
||||
cairo_rectangle (cr, x0, yc + hc, x1 - x0, y1 - (yc + hc));
|
||||
cairo_clip (cr);
|
||||
|
||||
if (_gtk_border_image_init (&border_image, engine))
|
||||
_gtk_border_image_render (&border_image, &border,
|
||||
cr, x, y, width, height);
|
||||
else
|
||||
render_frame_internal (engine, cr,
|
||||
x, y, width, height,
|
||||
0, junction);
|
||||
|
||||
Reference in New Issue
Block a user