themingengine: simplify render_extension() default implementation
Avoid doing useless translations/rotations, since themes will most likely set different CSS gradients using left/right/top/bottom style classes, or use a plain color. https://bugzilla.gnome.org/show_bug.cgi?id=674809
This commit is contained in:
@ -2296,62 +2296,35 @@ gtk_theming_engine_render_extension (GtkThemingEngine *engine,
|
|||||||
GtkJunctionSides junction = 0;
|
GtkJunctionSides junction = 0;
|
||||||
guint hidden_side = 0;
|
guint hidden_side = 0;
|
||||||
|
|
||||||
cairo_save (cr);
|
|
||||||
|
|
||||||
switch (gap_side)
|
switch (gap_side)
|
||||||
{
|
{
|
||||||
case GTK_POS_LEFT:
|
case GTK_POS_LEFT:
|
||||||
junction = GTK_JUNCTION_LEFT;
|
junction = GTK_JUNCTION_LEFT;
|
||||||
hidden_side = (1 << GTK_CSS_LEFT);
|
hidden_side = (1 << GTK_CSS_LEFT);
|
||||||
|
|
||||||
cairo_translate (cr, x + width, y);
|
|
||||||
cairo_rotate (cr, G_PI / 2);
|
|
||||||
break;
|
break;
|
||||||
case GTK_POS_RIGHT:
|
case GTK_POS_RIGHT:
|
||||||
junction = GTK_JUNCTION_RIGHT;
|
junction = GTK_JUNCTION_RIGHT;
|
||||||
hidden_side = (1 << GTK_CSS_RIGHT);
|
hidden_side = (1 << GTK_CSS_RIGHT);
|
||||||
|
|
||||||
cairo_translate (cr, x, y + height);
|
|
||||||
cairo_rotate (cr, - G_PI / 2);
|
|
||||||
break;
|
break;
|
||||||
case GTK_POS_TOP:
|
case GTK_POS_TOP:
|
||||||
junction = GTK_JUNCTION_TOP;
|
junction = GTK_JUNCTION_TOP;
|
||||||
hidden_side = (1 << GTK_CSS_TOP);
|
hidden_side = (1 << GTK_CSS_TOP);
|
||||||
|
|
||||||
cairo_translate (cr, x + width, y + height);
|
|
||||||
cairo_rotate (cr, G_PI);
|
|
||||||
break;
|
break;
|
||||||
case GTK_POS_BOTTOM:
|
case GTK_POS_BOTTOM:
|
||||||
junction = GTK_JUNCTION_BOTTOM;
|
junction = GTK_JUNCTION_BOTTOM;
|
||||||
hidden_side = (1 << GTK_CSS_BOTTOM);
|
hidden_side = (1 << GTK_CSS_BOTTOM);
|
||||||
|
|
||||||
cairo_translate (cr, x, y);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gap_side == GTK_POS_TOP ||
|
|
||||||
gap_side == GTK_POS_BOTTOM)
|
|
||||||
_gtk_theming_background_init (&bg, engine,
|
_gtk_theming_background_init (&bg, engine,
|
||||||
0, 0,
|
x, y,
|
||||||
width, height,
|
width, height,
|
||||||
GTK_JUNCTION_BOTTOM);
|
junction);
|
||||||
else
|
|
||||||
_gtk_theming_background_init (&bg, engine,
|
|
||||||
0, 0,
|
|
||||||
height, width,
|
|
||||||
GTK_JUNCTION_BOTTOM);
|
|
||||||
|
|
||||||
_gtk_theming_background_render (&bg, cr);
|
_gtk_theming_background_render (&bg, cr);
|
||||||
|
|
||||||
cairo_restore (cr);
|
|
||||||
|
|
||||||
cairo_save (cr);
|
|
||||||
|
|
||||||
render_frame_internal (engine, cr,
|
render_frame_internal (engine, cr,
|
||||||
x, y, width, height,
|
x, y, width, height,
|
||||||
hidden_side, junction);
|
hidden_side, junction);
|
||||||
|
|
||||||
cairo_restore (cr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Reference in New Issue
Block a user