summaryrefslogtreecommitdiff
path: root/gtk-3.0/xfce_engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk-3.0/xfce_engine.c')
-rw-r--r--gtk-3.0/xfce_engine.c240
1 files changed, 26 insertions, 214 deletions
diff --git a/gtk-3.0/xfce_engine.c b/gtk-3.0/xfce_engine.c
index c8ce045..951bd77 100644
--- a/gtk-3.0/xfce_engine.c
+++ b/gtk-3.0/xfce_engine.c
@@ -373,8 +373,8 @@ static void render_line(GtkThemingEngine * engine, cairo_t * cr, gdouble x1, gdo
thickness_light = xthick / 2;
thickness_dark = xthick - thickness_light;
- /* Compensation for the way x and y are caclculated */
- x1 += 1 + thickness_dark - thickness_light;
+ /* Compensation for the way x and y are caclculated */
+ x1 += 1 + thickness_dark - thickness_light;
y_2 += 1;
cairo_set_line_width (cr, thickness_dark);
@@ -394,8 +394,8 @@ static void render_line(GtkThemingEngine * engine, cairo_t * cr, gdouble x1, gdo
thickness_light = ythick / 2;
thickness_dark = ythick - thickness_light;
- /* Compensation for the way x and y are caclculated */
- y_1 += 1 + thickness_dark - thickness_light;
+ /* Compensation for the way x and y are caclculated */
+ y_1 += 1 + thickness_dark - thickness_light;
x2 += 1;
cairo_set_line_width (cr, thickness_dark);
@@ -433,6 +433,12 @@ static void render_background(GtkThemingEngine * engine, cairo_t * cr, gdouble x
xthick = border.left;
ythick = border.top;
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_BUTTON))
+ {
+ if (!(state & GTK_STATE_FLAG_ACTIVE) && !(state & GTK_STATE_FLAG_PRELIGHT))
+ return;
+ }
+
cairo_save(cr);
cairo_translate(cr, x, y);
@@ -482,7 +488,6 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo
GdkRGBA black = {0.0, 0.0, 0.0, 1.0}; /* black */
gboolean smooth_edge;
GtkBorder border;
- GtkJunctionSides junction;
state = gtk_theming_engine_get_state(engine);
gtk_theming_engine_get(engine, state, GTK_STYLE_PROPERTY_BORDER_STYLE, &border_style, NULL);
@@ -499,204 +504,11 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo
ythick = border.top;
/* Spin buttons are a special case */
- if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON))
+ if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_BUTTON))
{
- junction = gtk_theming_engine_get_junction_sides(engine);
- if ((junction & GTK_JUNCTION_TOP) == GTK_JUNCTION_TOP || (junction & GTK_JUNCTION_BOTTOM) == GTK_JUNCTION_BOTTOM)
- {
- if (!(state & GTK_STATE_FLAG_ACTIVE))
- {
- border_style = GTK_BORDER_STYLE_OUTSET;
- }
-
- if (state == GTK_STATE_FLAG_NORMAL || state & GTK_STATE_FLAG_INSENSITIVE)
- {
- gtk_theming_engine_get_border_color(engine, state, &dark);
- }
- else
- {
- gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_NORMAL, &dark);
- }
-
- y = floor(y);
- height = ceil(height);
-
- xt = MIN(xthick, width - 1);
- yt = MIN(ythick, height - 1);
-
- gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
- color_dark2light_mid(&dark, &light, &mid);
- if (smooth_edge)
- {
- if ((xt > 1) && (yt > 1))
- {
- gdk_cairo_set_source_rgba(cr, &dark);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_rectangle(cr, x - 2, y, 1, 1);
- }
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_rectangle(cr, x - 2, y + height - 1, 1, 1);
- }
- cairo_fill(cr);
-
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_move_to(cr, x - 0.5, y + 1.5);
- }
- else
- {
- cairo_move_to(cr, x - 0.5, y + 0.5);
- }
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_line_to(cr, x - 0.5, y + height - 1.5);
- }
- else
- {
- cairo_line_to(cr, x - 0.5, y + height - 0.5);
- }
- cairo_stroke(cr);
-
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- gdk_cairo_set_source_rgba(cr, &mid);
- cairo_rectangle(cr, x - 2, y + 1, 1, 1);
- cairo_fill(cr);
- }
-
- gdk_cairo_set_source_rgba(cr, &light);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_move_to(cr, x - 1.5, y + 2.5);
- }
- else
- {
- cairo_move_to(cr, x - 1.5, y + 0.5);
- }
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_line_to(cr, x - 1.5, y + height - 1.5);
- }
- else
- {
- cairo_line_to(cr, x - 1.5, y + height - 0.5);
- }
- cairo_stroke(cr);
-
- gdk_cairo_set_source_rgba(cr, &mid);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_rectangle(cr, x - 1, y, 1, 1);
- }
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_rectangle(cr, x - 1, y + height - 1, 1, 1);
- }
- cairo_fill(cr);
- }
- else if ((xt > 0) && (yt > 0))
- {
- gdk_cairo_set_source_rgba(cr, &light);
- cairo_move_to(cr, x - 0.5, y + 0.5);
- cairo_line_to(cr, x - 0.5, y + height - 0.5);
- cairo_stroke(cr);
-
- gdk_cairo_set_source_rgba(cr, &mid);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_rectangle(cr, x - 1, y, 1, 1);
- }
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_rectangle(cr, x - 1, y + height - 1, 1, 1);
- }
- cairo_fill(cr);
- }
- }
- else
- {
- if ((xt > 1) && (yt > 1))
- {
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- gdk_cairo_set_source_rgba(cr, &dark);
- cairo_move_to(cr, x - 1.5, y + 0.5);
- cairo_line_to(cr, x - 0.5, y + 0.5);
- cairo_stroke(cr);
- }
-
- gdk_cairo_set_source_rgba(cr, &light);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_move_to(cr, x - 0.5, y + 1.5);
- }
- else
- {
- cairo_move_to(cr, x - 0.5, y + 0.5);
- }
- cairo_line_to(cr, x - 0.5, y + height - 0.5);
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_line_to(cr, x - 1.5, y + height - 0.5);
- }
- cairo_stroke(cr);
-
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- gdk_cairo_set_source_rgba(cr, &black);
- cairo_rectangle(cr, x - 2, y + 1, 1, 1);
- cairo_fill(cr);
- }
-
- gdk_cairo_set_source_rgba(cr, &dark);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_move_to(cr, x - 1.5, y + 2.5);
- }
- else
- {
- cairo_move_to(cr, x - 1.5, y + 0.5);
- }
- if ((junction & GTK_JUNCTION_BOTTOM) != GTK_JUNCTION_BOTTOM)
- {
- cairo_line_to(cr, x - 1.5, y + height - 1.5);
- }
- else
- {
- cairo_line_to(cr, x - 1.5, y + height - 0.5);
- }
- cairo_stroke(cr);
- }
- else if ((xt > 0) && (yt > 0))
- {
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- gdk_cairo_set_source_rgba(cr, &dark);
- cairo_rectangle(cr, x - 1, y, 1, 1);
- cairo_fill(cr);
- }
-
- gdk_cairo_set_source_rgba(cr, &light);
- if ((junction & GTK_JUNCTION_TOP) != GTK_JUNCTION_TOP)
- {
- cairo_move_to(cr, x - 0.5, y + 1.5);
- }
- else
- {
- cairo_move_to(cr, x - 0.5, y + 0.5);
- }
- cairo_line_to(cr, x - 0.5, y + height - 0.5);
- cairo_stroke(cr);
- }
- }
-
- if (state != GTK_STATE_FLAG_NORMAL && !(state & GTK_STATE_FLAG_INSENSITIVE))
- {
- gtk_theming_engine_get_border_color(engine, state, &dark);
- }
- }
+ /* Draw an outset border when hovering a spinner button */
+ if (!(state & GTK_STATE_FLAG_ACTIVE))
+ border_style = GTK_BORDER_STYLE_OUTSET;
}
xt = MIN(xthick, width - 1);
@@ -707,17 +519,17 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo
case GTK_BORDER_STYLE_NONE:
break;
case GTK_BORDER_STYLE_SOLID:
- gdk_cairo_set_source_rgba(cr, &dark);
+ gdk_cairo_set_source_rgba(cr, &dark);
if ((xt > 1) && (yt > 1))
{
- cairo_set_line_width(cr, 2.0);
+ cairo_set_line_width(cr, 2.0);
cairo_rectangle(cr, x + 1, y + 1, width - 2, height - 2);
- }
+ }
else if ((xt > 0) && (yt > 0))
{
cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
}
- cairo_stroke(cr);
+ cairo_stroke(cr);
break;
case GTK_BORDER_STYLE_INSET:
gtk_theming_engine_get(engine, state, XFCE_SMOOTH_EDGE, &smooth_edge, NULL);
@@ -788,7 +600,7 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo
{
if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_TROUGH))
{
- gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_ACTIVE, &dark);
+ gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_ACTIVE, &dark);
gdk_cairo_set_source_rgba(cr, &dark);
cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
cairo_stroke(cr);
@@ -841,17 +653,17 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo
if (smooth_edge)
{
if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && !(state & GTK_STATE_FLAG_PRELIGHT))
- {
+ {
/* Do nothing */
- }
- else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_PROGRESSBAR))
+ }
+ else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_PROGRESSBAR))
{
gdk_cairo_set_source_rgba(cr, &dark);
cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
cairo_stroke(cr);
- gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_NORMAL, &dark);
- color_dark2light_mid(&dark, &light, &mid);
+ gtk_theming_engine_get_border_color(engine, GTK_STATE_FLAG_NORMAL, &dark);
+ color_dark2light_mid(&dark, &light, &mid);
gdk_cairo_set_source_rgba(cr, &mid);
cairo_rectangle(cr, x, y, 1, 1);
@@ -1069,9 +881,9 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo
else
{
if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && !(state & GTK_STATE_FLAG_PRELIGHT))
- {
+ {
/* Do nothing */
- }
+ }
else if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUBAR))
{
if ((xt > 1) && (yt > 1))