Updating branch refs/heads/master to aa2f6b7e241e5a8e7ec32d91f8f2e785ac71819c (commit) from e9d9e7b48b69277a064c7eb30a17b1ef16662a7d (commit)
commit aa2f6b7e241e5a8e7ec32d91f8f2e785ac71819c Merge: e9d9e7b 955dd15 Author: Peter de Ridder <pe...@xfce.org> Date: Thu Mar 29 21:40:31 2012 +0200 Merge branch 'peter/gtk3' commit 955dd154a2a28d209f1cb35bd6c1c7e556c6afc0 Author: Peter de Ridder <pe...@xfce.org> Date: Thu Mar 29 21:37:37 2012 +0200 Set -xfce-button-default-border (bug #8454) Xfce-stellar commit 8e0ab26b57e5d87b7434ac3045946c07a37dff03 Author: Peter de Ridder <pe...@xfce.org> Date: Mon Mar 26 23:39:27 2012 +0200 Draw inset border around default button (bug #8454) Gtk 3 doesn't draw a inset border around the default button when -GtkButton-default-border is set. With -xfce-button-default-border this border will be drawn. commit ad461c453a0415d8781280a857397639a8190271 Author: Peter de Ridder <pe...@xfce.org> Date: Sun Mar 25 14:12:51 2012 +0200 Use size for the radio and check boxes (bug #8456) commit 3765a80cf3acd1e63f3207bc0b873ffcab6ef78c Author: Peter de Ridder <pe...@xfce.org> Date: Sun Mar 25 10:43:58 2012 +0200 Correctly match gtk-tooltip widgets (bug #8494) commit 3986032f9ebdde4d6c8d4df65bc1446495da0ce2 Author: Peter de Ridder <pe...@xfce.org> Date: Sun Feb 19 15:26:41 2012 +0100 Improved menu theming gtk-2.0/xfce_theme_draw.c | 290 +++++++++++++++++++----------------- gtk-3.0/xfce_engine.c | 311 ++++++++++++++++++++++++-------------- themes/b5/gtk-3.0/gtk.css | 9 +- themes/basic/gtk-3.0/gtk.css | 4 + themes/cadmium/gtk-3.0/gtk.css | 9 +- themes/curve/gtk-3.0/gtk.css | 10 +- themes/dawn/gtk-3.0/gtk.css | 7 +- themes/dusk/gtk-3.0/gtk.css | 7 +- themes/kde2/gtk-3.0/gtk.css | 5 +- themes/kolors/gtk-3.0/gtk.css | 9 +- themes/light/gtk-3.0/gtk.css | 8 +- themes/orange/gtk-3.0/gtk.css | 14 ++- themes/redmondxp/gtk-3.0/gtk.css | 34 ++--- themes/saltlake/gtk-3.0/gtk.css | 3 + themes/smooth/gtk-3.0/gtk.css | 8 +- themes/stellar/gtk-3.0/gtk.css | 10 +- themes/winter/gtk-3.0/gtk.css | 12 +- themes/xfce-4.0/gtk-3.0/gtk.css | 8 +- themes/xfce-4.2/gtk-3.0/gtk.css | 12 +- themes/xfce-4.4/gtk-3.0/gtk.css | 9 +- themes/xfce-4.6/gtk-3.0/gtk.css | 20 ++-- themes/xfce/gtk-3.0/gtk.css | 20 ++-- 22 files changed, 496 insertions(+), 323 deletions(-) diff --git a/gtk-2.0/xfce_theme_draw.c b/gtk-2.0/xfce_theme_draw.c index 8ffc61b..bef4648 100644 --- a/gtk-2.0/xfce_theme_draw.c +++ b/gtk-2.0/xfce_theme_draw.c @@ -59,83 +59,8 @@ static GtkStyleClass *parent_class = NULL; extern GtkStyleClass xfce_default_class; -/* Taken from raleigh theme engine */ -typedef enum -{ - CHECK_LIGHT, - CHECK_DARK, - CHECK_BASE, - CHECK_TEXT, - CHECK_CROSS, - CHECK_DASH, - RADIO_LIGHT, - RADIO_DARK, - RADIO_BASE, - RADIO_TEXT -} -Part; - -#define PART_SIZE 13 - -static const guint32 check_light_bits[] = { - 0x0000, 0x0000, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, - 0x0800, 0x0800, 0x0ffc, 0x0000, -}; -static const guint32 check_dark_bits[] = { - 0x0000, 0x0ffe, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, - 0x0002, 0x0002, 0x0002, 0x0000, -}; -static const guint32 check_base_bits[] = { - 0x0000, 0x0000, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, - 0x07fc, 0x07fc, 0x0000, 0x0000, -}; -static const guint32 check_text_bits[] = { - 0x0000, 0x0000, 0x1c00, 0x0f00, 0x0380, 0x01c0, 0x00e0, 0x0073, 0x003f, - 0x003e, 0x001c, 0x0018, 0x0008 -}; -static const guint32 check_cross_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0300, 0x0380, 0x01d8, 0x00f8, 0x0078, 0x0038, - 0x0018, 0x0000, 0x0000, 0x0000, -}; -static const guint32 check_dash_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f8, 0x03f8, 0x03f8, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, -}; -static const guint32 radio_light_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0400, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, - 0x0400, 0x0208, 0x01f0, 0x0000, -}; -static const guint32 radio_dark_bits[] = { - 0x0000, 0x01f0, 0x0208, 0x0004, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, - 0x0004, 0x0000, 0x0000, 0x0000, -}; -static const guint32 radio_base_bits[] = { - 0x0000, 0x0000, 0x01f0, 0x03f8, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, - 0x03f8, 0x01f0, 0x0000, 0x0000, -}; -static const guint32 radio_text_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x00e0, 0x01f0, 0x01f0, 0x01f0, 0x00e0, - 0x0000, 0x0000, 0x0000, 0x0000, -}; - -static struct -{ - const guint32 *bits; - cairo_surface_t *bmap; -} -parts[] = -{ - { check_light_bits, NULL }, - { check_dark_bits, NULL }, - { check_base_bits, NULL }, - { check_text_bits, NULL }, - { check_cross_bits, NULL }, - { check_dash_bits, NULL }, - { radio_light_bits, NULL }, - { radio_dark_bits, NULL }, - { radio_base_bits, NULL }, - { radio_text_bits, NULL } -}; +#define CHECK_MIN_SIZE 15 +#define CHECK_DRAW_SIZE 11 /* internal functions */ static void xfce_fill_background(GtkStyle * style, GdkWindow * window, GtkStateType state_type, GdkRectangle * area, GtkWidget * widget, const gchar * detail, gint x, gint y, gint width, gint height); @@ -1034,102 +959,191 @@ static void draw_box(GtkStyle * style, GdkWindow * window, GtkStateType state_ty draw_shadow(style, window, state_type, shadow_type, area, widget, detail, x, y, width, height); } -static cairo_surface_t *get_part_bmap (Part part) +static void draw_dash(cairo_t * cr, const GdkColor * c, gdouble x, gdouble y, guint size) { - if (!parts[part].bmap) - { - parts[part].bmap = cairo_image_surface_create_for_data((guchar*)parts[part].bits, CAIRO_FORMAT_A1, PART_SIZE, PART_SIZE, sizeof(guint32)); - } - return parts[part].bmap; -} + guint w, b; -static void draw_part(GdkDrawable * drawable, GdkColor * c, GdkRectangle * area, gint x, gint y, Part part) -{ - cairo_t *cr; + b = (size + 7) / 10; - cr = ge_gdk_drawable_to_cairo(drawable, area); + w = size / 4; + if ((w % 2) != (size % 2)) + { + w += 1; + } gdk_cairo_set_source_color(cr, c); - cairo_mask_surface(cr, get_part_bmap (part), x, y); + cairo_set_line_width (cr, w); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); - cairo_destroy(cr); + cairo_move_to (cr, x + b, y + size / 2.0); + cairo_line_to (cr, x + size - b, y + size / 2.0); + + cairo_stroke(cr); } static void draw_check(GtkStyle * style, GdkWindow * window, GtkStateType state, GtkShadowType shadow, GdkRectangle * area, GtkWidget * widget, const gchar * detail, gint x, gint y, gint width, gint height) { + cairo_t *cr; + guint size; + guint w, b; + CHECK_ARGS; SANITIZE_SIZE; - x -= (1 + PART_SIZE - width) / 2; - y -= (1 + PART_SIZE - height) / 2; - - if (DETAIL("check")) /* Menu item */ + /* Make sure it doesn't get to small */ + if (width < CHECK_MIN_SIZE) + width = CHECK_DRAW_SIZE; + else { -#if 0 - draw_part(window, style->bg_gc[state], area, x, y, CHECK_BASE); -#endif - draw_part(window, &style->dark[state], area, x, y, CHECK_LIGHT); - draw_part(window, &style->dark[state], area, x, y, CHECK_DARK); + width -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + x += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } + if (height < CHECK_MIN_SIZE) + height = CHECK_DRAW_SIZE; + else + { + height -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + y += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } - if (shadow == GTK_SHADOW_IN) - { - draw_part(window, &style->fg[state], area, x, y, CHECK_CROSS); - } - else if (shadow == GTK_SHADOW_ETCHED_IN) - { - draw_part(window, &style->fg[state], area, x, y, CHECK_DASH); - } + /* Make it square */ + if (width > height) + { + x += width - height; + size = height; } else { - draw_part(window, &style->base[state], area, x, y, CHECK_BASE); - draw_part(window, &style->dark[state], area, x, y, CHECK_LIGHT); - draw_part(window, &style->dark[state], area, x, y, CHECK_DARK); + y += height - width; + size = width; + } - if (shadow == GTK_SHADOW_IN) - { - draw_part(window, &style->text[state], area, x, y, CHECK_CROSS); - } - else if (shadow == GTK_SHADOW_ETCHED_IN) - { - draw_part(window, &style->fg[state], area, x, y, CHECK_DASH); - } + cr = ge_gdk_drawable_to_cairo(window, area); + + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); + + cairo_rectangle (cr, x + 0.5, y + 0.5, width - 1, height - 1); + + if (!DETAIL("check")) /* not Menu item */ + { + /* Draw the background */ + gdk_cairo_set_source_color(cr, &style->base[state]); + cairo_fill_preserve(cr); + } + + /* Draw the border */ + gdk_cairo_set_source_color(cr, &style->dark[state]); + cairo_stroke(cr); + + x += 1; + y += 1; + size -= 2; + + if (shadow == GTK_SHADOW_IN) + { + b = (size + 7) / 10; + w = ((size + 4 - b) / 6); + + /* Draw the check */ + gdk_cairo_set_source_color(cr, &style->fg[state]); + + cairo_move_to (cr, x + b, y + floor(size / 2 - 1.5)); + + cairo_line_to (cr, x + b, y + size - b); + cairo_line_to (cr, x + b + w, y + size - b); + + cairo_line_to (cr, x + size - b, y + b + w); + cairo_line_to (cr, x + size - b, y + b); + cairo_line_to (cr, x + size - b + 1 - w, y + b); + + cairo_line_to (cr, x + b + w, y + size - b + 1 - 2 * w); + + cairo_line_to (cr, x + b + w, y + floor(size / 2 - 1.5)); + + cairo_close_path (cr); + cairo_fill(cr); } + else if (shadow == GTK_SHADOW_ETCHED_IN) + { + gdk_cairo_set_source_color(cr, &style->fg[state]); + draw_dash(cr, &style->fg[state], x, y, size); + } + + cairo_destroy(cr); } static void draw_option(GtkStyle * style, GdkWindow * window, GtkStateType state, GtkShadowType shadow, GdkRectangle * area, GtkWidget * widget, const gchar * detail, gint x, gint y, gint width, gint height) { + cairo_t *cr; + guint size; + CHECK_ARGS; SANITIZE_SIZE; - x -= (1 + PART_SIZE - width) / 2; - y -= (1 + PART_SIZE - height) / 2; - - if (DETAIL("option")) /* Menu item */ + /* Make sure it doesn't get to small */ + if (width < CHECK_MIN_SIZE) + width = CHECK_DRAW_SIZE; + else { -#if 0 - draw_part(window, style->bg_gc[state], area, x, y, RADIO_BASE); -#endif - draw_part(window, &style->dark[state], area, x, y, RADIO_LIGHT); - draw_part(window, &style->dark[state], area, x, y, RADIO_DARK); + width -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + x += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } + if (height < CHECK_MIN_SIZE) + height = CHECK_DRAW_SIZE; + else + { + height -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + y += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } - if (shadow == GTK_SHADOW_IN) - { - draw_part(window, &style->fg[state], area, x, y, RADIO_TEXT); - } + /* Make it square */ + if (width > height) + { + x += width - height; + size = height; } else { - draw_part(window, &style->base[state], area, x, y, RADIO_BASE); - draw_part(window, &style->dark[state], area, x, y, RADIO_LIGHT); - draw_part(window, &style->dark[state], area, x, y, RADIO_DARK); + y += height - width; + size = width; + } - if (shadow == GTK_SHADOW_IN) - { - draw_part(window, &style->text[state], area, x, y, RADIO_TEXT); - } + cr = ge_gdk_drawable_to_cairo(window, area); + + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); + + cairo_arc (cr, x + (width / 2.0), y + (height / 2.0), width / 2, 0, 2 * M_PI); + + if (!DETAIL("option")) /* not Menu item */ + { + /* Draw the background */ + gdk_cairo_set_source_color(cr, &style->base[state]); + cairo_fill_preserve(cr); } + + /* Draw the border */ + gdk_cairo_set_source_color(cr, &style->dark[state]); + cairo_stroke(cr); + + x += 1; + y += 1; + size -= 2; + + if (shadow == GTK_SHADOW_IN) + { + /* Draw the dot */ + gdk_cairo_set_source_color(cr, &style->fg[state]); + + cairo_arc (cr, x + (size / 2.0), y + (size / 2.0), (size / 2.0) - ((size + 2) / 5), 0, 2 * M_PI); + cairo_fill(cr); + } + else if (shadow == GTK_SHADOW_ETCHED_IN) + { + draw_dash(cr, &style->fg[state], x, y, size); + } + + cairo_destroy(cr); } static void draw_shadow_gap(GtkStyle * style, GdkWindow * window, GtkStateType state_type, GtkShadowType shadow_type, GdkRectangle * area, GtkWidget * widget, const gchar * detail, gint x, gint y, gint width, gint height, GtkPositionType gap_side, gint gap_x, gint gap_width) diff --git a/gtk-3.0/xfce_engine.c b/gtk-3.0/xfce_engine.c index ce25dca..e04b146 100644 --- a/gtk-3.0/xfce_engine.c +++ b/gtk-3.0/xfce_engine.c @@ -15,7 +15,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Copyright (C) 1999-2004 Olivier Fourdan (four...@xfce.org) - * Copyright (C) 2011 Peter de Ridder (pe...@xfce.org) + * Copyright (C) 2011-2012 Peter de Ridder (pe...@xfce.org) * * Portions based Thinice port by * Tim Gerla <t...@rrv.net>, @@ -57,6 +57,9 @@ #define GRIP_STYLE "grip-style" #define XFCE_GRIP_STYLE "-"XFCE_NAMESPACE"-"GRIP_STYLE +#define BUTTON_DEFAULT_BORDER "button-default-border" +#define XFCE_BUTTON_DEFAULT_BORDER "-"XFCE_NAMESPACE"-"BUTTON_DEFAULT_BORDER + /* macros to make sure that things are sane ... */ #define GE_CAIRO_INIT \ cairo_set_line_width (cr, 1.0); \ @@ -65,86 +68,12 @@ G_DEFINE_DYNAMIC_TYPE(XfceEngine, xfce_engine, GTK_TYPE_THEMING_ENGINE) -/* Taken from raleigh theme engine */ -typedef enum -{ - CHECK_LIGHT, - CHECK_DARK, - CHECK_BASE, - CHECK_TEXT, - CHECK_CROSS, - CHECK_DASH, - RADIO_LIGHT, - RADIO_DARK, - RADIO_BASE, - RADIO_TEXT -} -Part; - -#define PART_SIZE 13 - -static const guint32 check_light_bits[] = { - 0x0000, 0x0000, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, - 0x0800, 0x0800, 0x0ffc, 0x0000, -}; -static const guint32 check_dark_bits[] = { - 0x0000, 0x0ffe, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, - 0x0002, 0x0002, 0x0002, 0x0000, -}; -static const guint32 check_base_bits[] = { - 0x0000, 0x0000, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, - 0x07fc, 0x07fc, 0x0000, 0x0000, -}; -static const guint32 check_text_bits[] = { - 0x0000, 0x0000, 0x1c00, 0x0f00, 0x0380, 0x01c0, 0x00e0, 0x0073, 0x003f, - 0x003e, 0x001c, 0x0018, 0x0008 -}; -static const guint32 check_cross_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0300, 0x0380, 0x01d8, 0x00f8, 0x0078, 0x0038, - 0x0018, 0x0000, 0x0000, 0x0000, -}; -static const guint32 check_dash_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f8, 0x03f8, 0x03f8, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, -}; -static const guint32 radio_light_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0400, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, - 0x0400, 0x0208, 0x01f0, 0x0000, -}; -static const guint32 radio_dark_bits[] = { - 0x0000, 0x01f0, 0x0208, 0x0004, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, - 0x0004, 0x0000, 0x0000, 0x0000, -}; -static const guint32 radio_base_bits[] = { - 0x0000, 0x0000, 0x01f0, 0x03f8, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, - 0x03f8, 0x01f0, 0x0000, 0x0000, -}; -static const guint32 radio_text_bits[] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x00e0, 0x01f0, 0x01f0, 0x01f0, 0x00e0, - 0x0000, 0x0000, 0x0000, 0x0000, -}; - -static struct -{ - const guint32 *bits; - cairo_surface_t *bmap; -} -parts[] = -{ - { check_light_bits, NULL }, - { check_dark_bits, NULL }, - { check_base_bits, NULL }, - { check_text_bits, NULL }, - { check_cross_bits, NULL }, - { check_dash_bits, NULL }, - { radio_light_bits, NULL }, - { radio_dark_bits, NULL }, - { radio_base_bits, NULL }, - { radio_text_bits, NULL } -}; +#define CHECK_MIN_SIZE 15 +#define CHECK_DRAW_SIZE 11 /* internal functions */ static void xfce_draw_grips(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkOrientation orientation); +static void xfce_draw_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkBorderStyle border_style); static void render_line(GtkThemingEngine * engine, cairo_t * cr, gdouble x1, gdouble y1, gdouble x2, gdouble y2); static void render_background(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height); @@ -484,13 +413,58 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo gint xthick, ythick; GtkStateFlags state; GtkBorderStyle border_style; + GtkBorder border; + GtkBorder *default_border; + + state = gtk_theming_engine_get_state(engine); + gtk_theming_engine_get(engine, state, GTK_STYLE_PROPERTY_BORDER_STYLE, &border_style, NULL); + + xthick = border.left; + ythick = border.top; + + xt = MIN(xthick, width - 1); + yt = MIN(ythick, height - 1); + + /* Spin buttons are a special case */ + if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_BUTTON)) + { + /* Draw an outset border when hovering a spinner button */ + if (!(state & GTK_STATE_FLAG_ACTIVE)) + border_style = GTK_BORDER_STYLE_OUTSET; + } + + /* Default buttons are a special case */ + if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_BUTTON) && gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_DEFAULT)) + { + /* Draw an inset border around the default border */ + gtk_theming_engine_get(engine, state, XFCE_BUTTON_DEFAULT_BORDER, &default_border, NULL); + + if (default_border && + (default_border->left > xt) && (default_border->right > xt) && + (default_border->top > yt) && (default_border->bottom > yt)) + { + xfce_draw_frame(engine, cr, x - default_border->left, y - default_border->top, + width + default_border->left + default_border->right, height + default_border->top + default_border->bottom, + GTK_BORDER_STYLE_INSET); + } + + gtk_border_free(default_border); + } + + xfce_draw_frame(engine, cr, x, y, width, height, border_style); +} + +static void xfce_draw_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height, GtkBorderStyle border_style) +{ + gint xt, yt; + gint xthick, ythick; + GtkStateFlags state; GdkRGBA dark, light, mid, bg; GdkRGBA black = {0.0, 0.0, 0.0, 1.0}; /* black */ gboolean smooth_edge; GtkBorder border; state = gtk_theming_engine_get_state(engine); - gtk_theming_engine_get(engine, state, GTK_STYLE_PROPERTY_BORDER_STYLE, &border_style, NULL); if (border_style == GTK_BORDER_STYLE_NONE) return; @@ -503,14 +477,6 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo xthick = border.left; ythick = border.top; - /* Spin buttons are a special case */ - if (gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_SPINBUTTON) && gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_BUTTON)) - { - /* 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); yt = MIN(ythick, height - 1); @@ -986,47 +952,117 @@ static void render_frame(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdo } } -static cairo_surface_t *get_part_bmap (Part part) +static void draw_dash(cairo_t * cr, const GdkRGBA * c, gdouble x, gdouble y, guint size) { - if (!parts[part].bmap) + guint w, b; + + b = (size + 7) / 10; + + w = size / 4; + if ((w % 2) != (size % 2)) { - parts[part].bmap = cairo_image_surface_create_for_data((guchar*)parts[part].bits, CAIRO_FORMAT_A1, PART_SIZE, PART_SIZE, sizeof(guint32)); + w += 1; } - return parts[part].bmap; -} -static void draw_part(cairo_t * cr, const GdkRGBA * c, gdouble x, gdouble y, Part part) -{ gdk_cairo_set_source_rgba(cr, c); - cairo_mask_surface(cr, get_part_bmap (part), x, y); + cairo_set_line_width (cr, w); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); + + cairo_move_to (cr, x + b, y + size / 2.0); + cairo_line_to (cr, x + size - b, y + size / 2.0); + + cairo_stroke(cr); } static void render_check(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gdouble y, gdouble width, gdouble height) { GtkStateFlags state; GdkRGBA bg, border, fg; + guint size; + guint w, b; - x -= floor((1 + PART_SIZE - width) / 2); - y -= floor((1 + PART_SIZE - height) / 2); + /* Make sure it doesn't get to small */ + if (width < CHECK_MIN_SIZE) + width = CHECK_DRAW_SIZE; + else + { + width -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + x += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } + if (height < CHECK_MIN_SIZE) + height = CHECK_DRAW_SIZE; + else + { + height -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + y += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } + + /* Make it square */ + if (width > height) + { + x += width - height; + size = height; + } + else + { + y += height - width; + size = width; + } state = gtk_theming_engine_get_state(engine); gtk_theming_engine_get_background_color(engine, state, &bg); gtk_theming_engine_get_border_color(engine, state, &border); gtk_theming_engine_get_color(engine, state, &fg); + GE_CAIRO_INIT; + + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); + + cairo_rectangle (cr, x + 0.5, y + 0.5, size - 1, size - 1); + if (!gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUITEM)) - draw_part(cr, &bg, x, y, CHECK_BASE); - draw_part(cr, &border, x, y, CHECK_LIGHT); - draw_part(cr, &border, x, y, CHECK_DARK); + { + /* Draw the background */ + gdk_cairo_set_source_rgba(cr, &bg); + cairo_fill_preserve(cr); + } + + /* Draw the border */ + gdk_cairo_set_source_rgba(cr, &border); + cairo_stroke(cr); + + x += 1; + y += 1; + size -= 2; if (state & GTK_STATE_FLAG_INCONSISTENT) { - draw_part(cr, &fg, x, y, CHECK_DASH); + draw_dash(cr, &fg, x, y, size); } else if (state & GTK_STATE_FLAG_ACTIVE) { - draw_part(cr, &fg, x, y, CHECK_CROSS); + b = (size + 7) / 10; + w = ((size + 4 - b) / 6); + + /* Draw the check */ + gdk_cairo_set_source_rgba(cr, &fg); + + cairo_move_to (cr, x + b, y + floor(size / 2 - 1.5)); + + cairo_line_to (cr, x + b, y + size - b); + cairo_line_to (cr, x + b + w, y + size - b); + + cairo_line_to (cr, x + size - b, y + b + w); + cairo_line_to (cr, x + size - b, y + b); + cairo_line_to (cr, x + size - b + 1 - w, y + b); + + cairo_line_to (cr, x + b + w, y + size - b + 1 - 2 * w); + + cairo_line_to (cr, x + b + w, y + floor(size / 2 - 1.5)); + + cairo_close_path (cr); + cairo_fill(cr); } } @@ -1034,27 +1070,73 @@ static void render_option(GtkThemingEngine * engine, cairo_t * cr, gdouble x, gd { GtkStateFlags state; GdkRGBA bg, border, fg; + guint size; - x -= (1 + PART_SIZE - width) / 2; - y -= (1 + PART_SIZE - height) / 2; + /* Make sure it doesn't get to small */ + if (width < CHECK_MIN_SIZE) + width = CHECK_DRAW_SIZE; + else + { + width -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + x += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } + if (height < CHECK_MIN_SIZE) + height = CHECK_DRAW_SIZE; + else + { + height -= CHECK_MIN_SIZE - CHECK_DRAW_SIZE; + y += (CHECK_MIN_SIZE - CHECK_DRAW_SIZE) / 2; + } + + /* Make it square */ + if (width > height) + { + x += width - height; + size = height; + } + else + { + y += height - width; + size = width; + } state = gtk_theming_engine_get_state(engine); gtk_theming_engine_get_background_color(engine, state, &bg); gtk_theming_engine_get_border_color(engine, state, &border); gtk_theming_engine_get_color(engine, state, &fg); + GE_CAIRO_INIT; + + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); + + cairo_arc (cr, x + (size / 2.0), y + (size / 2.0), (size - 1) / 2.0, 0, 2 * M_PI); + if (!gtk_theming_engine_has_class(engine, GTK_STYLE_CLASS_MENUITEM)) - draw_part(cr, &bg, x, y, RADIO_BASE); - draw_part(cr, &border, x, y, RADIO_LIGHT); - draw_part(cr, &border, x, y, RADIO_DARK); + { + /* Draw the background */ + gdk_cairo_set_source_rgba(cr, &bg); + cairo_fill_preserve(cr); + } + + /* Draw the border */ + gdk_cairo_set_source_rgba(cr, &border); + cairo_stroke(cr); + + x += 1; + y += 1; + size -= 2; if (state & GTK_STATE_FLAG_INCONSISTENT) { - draw_part(cr, &fg, x, y, CHECK_DASH); + draw_dash(cr, &fg, x, y, size); } else if (state & GTK_STATE_FLAG_ACTIVE) { - draw_part(cr, &fg, x, y, RADIO_TEXT); + /* Draw the dot */ + gdk_cairo_set_source_rgba(cr, &fg); + + cairo_arc (cr, x + (size / 2.0), y + (size / 2.0), (size / 2.0) - ((size + 2) / 5), 0, 2 * M_PI); + cairo_fill(cr); } } @@ -1352,6 +1434,8 @@ static void render_frame_gap(GtkThemingEngine * engine, cairo_t * cr, gdouble x, ew = 2; eh = gap_e - gap_s; break; + default: + return; } cairo_save (cr); @@ -1363,7 +1447,7 @@ static void render_frame_gap(GtkThemingEngine * engine, cairo_t * cr, gdouble x, cairo_rectangle (cr, x0, ey + eh, x1 - x0, y_1 - (ey + eh)); cairo_clip (cr); - render_frame (engine, cr, x, y, width, height); + xfce_draw_frame (engine, cr, x, y, width, height, border_style); cairo_restore (cr); } @@ -1576,6 +1660,13 @@ static void xfce_engine_class_init(XfceEngineClass * klass) gtk_theming_engine_register_property(XFCE_NAMESPACE, NULL, g_param_spec_enum(GRIP_STYLE, "Grip style", "Grip style", XFCE_TYPE_GRIP_STYLE, XFCE_GRIP_ROUGH, 0)); + + /* Compatibility properties */ + gtk_theming_engine_register_property(XFCE_NAMESPACE, NULL, + g_param_spec_boxed (BUTTON_DEFAULT_BORDER, + "Default Spacing", + "Extra space to add for GTK_CAN_DEFAULT buttons", + GTK_TYPE_BORDER, 0)); } static void xfce_engine_class_finalize(XfceEngineClass * klass) diff --git a/themes/b5/gtk-3.0/gtk.css b/themes/b5/gtk-3.0/gtk.css index 6b386e7..e3984ac 100644 --- a/themes/b5/gtk-3.0/gtk.css +++ b/themes/b5/gtk-3.0/gtk.css @@ -34,7 +34,6 @@ -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: out; -GtkRange-slider-width : 11; -GtkRange-stepper-size : 11; -GtkRange-stepper-spacing : 0; @@ -295,6 +294,14 @@ GtkCalendar:selected { border-color: @fg_selected; } +.menuitem { + border-width: 2 2; +} + +.menuitem:hover { + border-style: outset; +} + .slider { color: #525051; diff --git a/themes/basic/gtk-3.0/gtk.css b/themes/basic/gtk-3.0/gtk.css index a9850ae..9c8ed0d 100644 --- a/themes/basic/gtk-3.0/gtk.css +++ b/themes/basic/gtk-3.0/gtk.css @@ -43,6 +43,10 @@ background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4B6983, 1.0)), to(shade(#4B6983, 1.1))); } +.menuitem { + border-width: 0 0; +} + .scrollbar, .scale { border-width: 2 2; } diff --git a/themes/cadmium/gtk-3.0/gtk.css b/themes/cadmium/gtk-3.0/gtk.css index eed815c..e1aa2d3 100644 --- a/themes/cadmium/gtk-3.0/gtk.css +++ b/themes/cadmium/gtk-3.0/gtk.css @@ -318,7 +318,7 @@ GtkCalendar:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95))); } -.dock:hover, .menubar:hover, .toolbar:hover { +.dock:hover, .toolbar:hover { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_prelight, 1.05)), to(shade(@bg_prelight, 0.95))); } @@ -348,7 +348,12 @@ GtkCalendar:selected { } .menuitem { - border-width: 1 2; + border-width: 1 1; + background-image: none; +} + +.menuitem:hover { + border-style: solid; } .slider.vertical, .progressbar.vertical { diff --git a/themes/curve/gtk-3.0/gtk.css b/themes/curve/gtk-3.0/gtk.css index c80e03e..26b1679 100644 --- a/themes/curve/gtk-3.0/gtk.css +++ b/themes/curve/gtk-3.0/gtk.css @@ -33,7 +33,6 @@ -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: out; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; -GtkRange-stepper-spacing : 0; @@ -319,7 +318,7 @@ GtkCalendar:selected { border-color: @fg_selected; } -.dock:hover, .menubar:hover, .toolbar:hover { +.dock:hover .toolbar:hover { color: #ffffff; background-color: #4464ac; border-color: darker(#4464ac); @@ -341,8 +340,13 @@ GtkCalendar:selected { .menuitem:hover { color: #ffffff; - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4464ac, 0.8)), to(shade(#4464ac, 1.0))); + background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#4464ac, 0.8)), to(shade(#4464ac, 1.8))); border-color: darker(#4464ac); + border-style: outset; +} + +.menuitem *:hover { + color: #ffffff; } .menuitem:selected { diff --git a/themes/dawn/gtk-3.0/gtk.css b/themes/dawn/gtk-3.0/gtk.css index 980f24c..9b40227 100644 --- a/themes/dawn/gtk-3.0/gtk.css +++ b/themes/dawn/gtk-3.0/gtk.css @@ -36,7 +36,6 @@ -GtkCheckButton-indicator-size : 12; -GtkMenuBar-internal-padding : 4; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: etched-in; -GtkPaned-handle-size : 7; -GtkRange-slider-width : 16; -GtkRange-stepper-size : 16; @@ -366,7 +365,11 @@ GtkCalendar:selected { } .menuitem { - border-width: 1 2; + border-width: 1 1; +} + +.menuitem:hover { + border-style: solid; } .radio { diff --git a/themes/dusk/gtk-3.0/gtk.css b/themes/dusk/gtk-3.0/gtk.css index c2cd051..2891f3d 100644 --- a/themes/dusk/gtk-3.0/gtk.css +++ b/themes/dusk/gtk-3.0/gtk.css @@ -36,7 +36,6 @@ -GtkCheckButton-indicator-size : 8; -GtkMenuBar-internal-padding : 1; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: etched-in; -GtkPaned-handle-size : 4; -GtkRange-slider-width : 12; -GtkRange-stepper-size : 10; @@ -345,7 +344,11 @@ GtkCalendar:selected { } .menuitem { - border-width: 1 2; + border-width: 1 1; +} + +.menuitem:hover { + border-style: solid; } .slider.vertical { diff --git a/themes/kde2/gtk-3.0/gtk.css b/themes/kde2/gtk-3.0/gtk.css index 6a1d7a3..6605da0 100644 --- a/themes/kde2/gtk-3.0/gtk.css +++ b/themes/kde2/gtk-3.0/gtk.css @@ -32,7 +32,6 @@ -GtkButton-default-outside-border: 0; -GtkWidget-focus-line-width : 1; -GtkCheckButton-indicator-size : 15; - -GtkMenuItem-selected-shadow-type: in; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; -GtkRange-trough-border : 0; @@ -327,3 +326,7 @@ GtkCalendar:selected { .button:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1))); } + +.menuitem:hover { + border-style: inset; +} diff --git a/themes/kolors/gtk-3.0/gtk.css b/themes/kolors/gtk-3.0/gtk.css index 4f8f371..e0fe63c 100644 --- a/themes/kolors/gtk-3.0/gtk.css +++ b/themes/kolors/gtk-3.0/gtk.css @@ -34,7 +34,6 @@ -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: none; -GtkRange-slider-width : 11; -GtkRange-stepper-size : 13; -GtkRange-stepper-spacing : 0; @@ -378,3 +377,11 @@ GtkCalendar:selected { .button.vertical:selected, .slider.vertical:selected { background-image: -gtk-gradient(linear, left top, right top, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.1))); } + +.menuitem { + border-width: 0 0; +} + +.menuitem:hover { + border-style: none; +} diff --git a/themes/light/gtk-3.0/gtk.css b/themes/light/gtk-3.0/gtk.css index 7ce6f0c..aef787f 100644 --- a/themes/light/gtk-3.0/gtk.css +++ b/themes/light/gtk-3.0/gtk.css @@ -34,7 +34,6 @@ -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: in; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; -GtkRange-stepper-spacing : 0; @@ -318,3 +317,10 @@ GtkCalendar:selected { border-color: darker(#f5f5dd); } +.menuitem { + border-width: 2 2; +} + +.menuitem:hover { + border-style: inset; +} diff --git a/themes/orange/gtk-3.0/gtk.css b/themes/orange/gtk-3.0/gtk.css index ae01db4..161f108 100644 --- a/themes/orange/gtk-3.0/gtk.css +++ b/themes/orange/gtk-3.0/gtk.css @@ -39,7 +39,6 @@ -GtkButton-child-displacement-x : 0; -GtkButton-child-displacement-y : 1; -GtkCheckButton-indicator-size : 12; - -GtkMenuItem-selected-shadow-type: none; -GtkPaned-handle-size : 7; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; @@ -339,7 +338,7 @@ GtkCalendar:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#f8f7f5, 1.05)), to(shade(#f8f7f5, 0.95))); border-color: darker(#f8f7f5); - border-width: 1 2; + border-width: 0 0; } .menuitem:active, .menu:active { @@ -353,10 +352,17 @@ GtkCalendar:selected { border-color: darker(#f8f7f5); } -.menuitem:hover, .menu:hover { +.menu:hover { + color: #000000; + background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 1.05)), to(shade(#ffe371, 0.95))); + border-color: darker(#ffe371); +} + +.menuitem:hover { color: #000000; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffe371, 1.05)), to(shade(#ffe371, 0.95))); border-color: darker(#ffe371); + border-style: none; } .menuitem:selected, .menu:selected { @@ -378,7 +384,7 @@ GtkCalendar:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 1.05)), to(shade(@bg_insensitive, 0.95))); } -.menubar:hover, .toolbar:hover { +.toolbar:hover { color: #000000; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fff0b3, 1.05)), to(shade(#fff0b3, 0.95))); border-color: darker(#fff0b3); diff --git a/themes/redmondxp/gtk-3.0/gtk.css b/themes/redmondxp/gtk-3.0/gtk.css index 26afbcb..af1217c 100644 --- a/themes/redmondxp/gtk-3.0/gtk.css +++ b/themes/redmondxp/gtk-3.0/gtk.css @@ -34,7 +34,6 @@ -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: none; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; -GtkRange-stepper-spacing : 0; @@ -348,31 +347,15 @@ GtkCalendar:selected { } .menubar { - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_normal, 0.9)), to(shade(@bg_normal, 1.1))); - border-width: 2 2; } .menubar:active { color: #ffffff; - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#0055ef, 1.1)), to(shade(#0055ef, 0.9))); - border-color: darker(#0055ef); -} - -.menubar:insensitive { - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.9)), to(shade(@bg_insensitive, 1.1))); -} - -.menubar:hover { - color: #ffffff; - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#0055ef, 0.9)), to(shade(#0055ef, 1.1))); + background-color: #0055ef; border-color: darker(#0055ef); } -.menubar:selected { - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 1.1)), to(shade(@bg_selected, 0.9))); -} - .button { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#fafaf2, 1.1)), to(shade(#fafaf2, 0.9))); border-color: darker(#fafaf2); @@ -449,6 +432,21 @@ GtkCalendar:selected { border-color: darker(#efebdf); } +.menuitem { + border-width: 0 0; +} + +.menuitem:hover { + color: #ffffff; + background-color: #0055ef; + border-color: darker(#0055ef); + border-style: none; +} + +.menuitem *:hover { + color: #ffffff; +} + .scale.slider.horizontal { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#efebdf, 1.1)), to(shade(#efebdf, 0.9))); border-color: darker(#efebdf); diff --git a/themes/saltlake/gtk-3.0/gtk.css b/themes/saltlake/gtk-3.0/gtk.css index 96d8e96..ccd28b0 100644 --- a/themes/saltlake/gtk-3.0/gtk.css +++ b/themes/saltlake/gtk-3.0/gtk.css @@ -300,3 +300,6 @@ GtkCalendar:selected { border-width: 1 1; } +.menuitem:hover { + border-style: solid; +} diff --git a/themes/smooth/gtk-3.0/gtk.css b/themes/smooth/gtk-3.0/gtk.css index 6f0a541..163e838 100644 --- a/themes/smooth/gtk-3.0/gtk.css +++ b/themes/smooth/gtk-3.0/gtk.css @@ -33,7 +33,6 @@ -GtkWidget-focus-line-width : 1; -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; - -GtkMenuItem-selected-shadow-type: out; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; -GtkRange-stepper-spacing : 0; @@ -295,3 +294,10 @@ GtkCalendar:selected { border-color: @fg_selected; } +.menuitem { + border-width: 2 2; +} + +.menuitem:hover { + border-style: outset; +} diff --git a/themes/stellar/gtk-3.0/gtk.css b/themes/stellar/gtk-3.0/gtk.css index 8a23661..04e48b3 100644 --- a/themes/stellar/gtk-3.0/gtk.css +++ b/themes/stellar/gtk-3.0/gtk.css @@ -31,9 +31,9 @@ -GtkButton-default-border : 5; -GtkButton-default-outside-border: 6; + -xfce-button-default-border : 5; -GtkWidget-focus-padding : 0; -GtkCheckButton-indicator-size : 15; - -GtkMenuItem-selected-shadow-type: in; -GtkRange-slider-width : 12; -GtkRange-stepper-size : 12; -GtkRange-stepper-spacing : 0; @@ -76,6 +76,10 @@ border-color: darker(@bg_selected); } +*:focus { + -xfce-button-default-border: 7; +} + .view, .entry { color: @text_normal; background-color: @base_normal; @@ -298,9 +302,9 @@ GtkCalendar:selected { border-color: @fg_selected; } -.menu:hover { +.menuitem:hover { color: #FFFFFF; background-color: #9BA0B0; border-color: darker(#9BA0B0); + border-style: inset; } - diff --git a/themes/winter/gtk-3.0/gtk.css b/themes/winter/gtk-3.0/gtk.css index 5ad62aa..45dbcba 100644 --- a/themes/winter/gtk-3.0/gtk.css +++ b/themes/winter/gtk-3.0/gtk.css @@ -33,7 +33,6 @@ -GtkButton-default-outside-border: 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: out; -GtkPaned-handle-size : 8; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; @@ -330,7 +329,7 @@ GtkCalendar:selected { border-color: darker(#A4B8CB); } -.dock:hover, .menubar:hover, .toolbar:hover { +.dock:hover .toolbar:hover { color: #224466; background-color: #B3C8DD; border-color: darker(#B3C8DD); @@ -360,12 +359,19 @@ GtkCalendar:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_insensitive, 0.8)), to(shade(@bg_insensitive, 1.8))); } -.button:hover, .menuitem:hover { +.button:hover { color: #224466; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#B3C8DD, 0.8)), to(shade(#B3C8DD, 1.8))); border-color: darker(#B3C8DD); } +.menuitem:hover { + color: #224466; + background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#B3C8DD, 0.8)), to(shade(#B3C8DD, 1.8))); + border-color: darker(#B3C8DD); + border-style: outset; +} + .button:selected, .menuitem:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.8)), to(shade(@bg_selected, 1.8))); } diff --git a/themes/xfce-4.0/gtk-3.0/gtk.css b/themes/xfce-4.0/gtk-3.0/gtk.css index cb95aba..abba4ac 100644 --- a/themes/xfce-4.0/gtk-3.0/gtk.css +++ b/themes/xfce-4.0/gtk-3.0/gtk.css @@ -36,7 +36,6 @@ -GtkButton-default-outside-border: 0; -GtkCheckButton-indicator-size : 15; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: out; -GtkPaned-handle-size : 8; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; @@ -336,7 +335,7 @@ GtkCalendar:selected { border-color: darker(#bfbdbb); } -.menubar:hover, .dock:hover, .toolbar:hover { +.dock:hover, .toolbar:hover { color: #ffffff; background-color: #606080; border-color: darker(#606080); @@ -362,6 +361,11 @@ GtkCalendar:selected { color: #ffffff; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#606080, 0.8)), to(shade(#606080, 1.8))); border-color: darker(#606080); + border-style: outset; +} + +.menuitem *:hover { + color: #ffffff; } .menuitem:selected { diff --git a/themes/xfce-4.2/gtk-3.0/gtk.css b/themes/xfce-4.2/gtk-3.0/gtk.css index c05e88e..8e88f4a 100644 --- a/themes/xfce-4.2/gtk-3.0/gtk.css +++ b/themes/xfce-4.2/gtk-3.0/gtk.css @@ -40,7 +40,6 @@ -GtkCheckButton-indicator-size : 12; -GtkMenuBar-internal-padding : 2; -GtkMenuBar-shadow-type : out; - -GtkMenuItem-selected-shadow-type: etched-in; -GtkPaned-handle-size : 7; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; @@ -355,7 +354,7 @@ GtkCalendar:selected { background-color: #ffffff; border-color: darker(#ffffff); - border-width: 1 2; + border-width: 1; } .menuitem:active { @@ -373,6 +372,11 @@ GtkCalendar:selected { color: #ffffff; background-color: #5582c2; border-color: darker(#5582c2); + border-style: solid; +} + +.menuitem *:hover { + color: #ffffff; } .menuitem:selected { @@ -380,14 +384,14 @@ GtkCalendar:selected { border-color: darker(@bg_selected); } -.menubar:active .toolbar:active { +.menubar:active, .toolbar:active { color: #ffffff; background-color: #d3d7e0; border-color: darker(#d3d7e0); } -.menubar:hover .toolbar:hover { +.toolbar:hover { color: #ffffff; background-color: #5582c2; border-color: darker(#5582c2); diff --git a/themes/xfce-4.4/gtk-3.0/gtk.css b/themes/xfce-4.4/gtk-3.0/gtk.css index d0babc0..3dd8c32 100644 --- a/themes/xfce-4.4/gtk-3.0/gtk.css +++ b/themes/xfce-4.4/gtk-3.0/gtk.css @@ -45,7 +45,6 @@ -GtkButton-child-displacement-x : 0; -GtkButton-child-displacement-y : 1; -GtkCheckButton-indicator-size : 12; - -GtkMenuItem-selected-shadow-type: etched-in; -GtkPaned-handle-size : 7; -GtkRange-slider-width : 15; -GtkRange-stepper-size : 15; @@ -355,7 +354,7 @@ GtkCalendar:selected { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#ffffff, 1.1)), to(shade(#ffffff, 0.95))); border-color: darker(#ffffff); - border-width: 1 2; + border-width: 1 1; } .menuitem:active { @@ -371,6 +370,7 @@ GtkCalendar:selected { .menuitem:hover { background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 1.1)), to(shade(#d3d7cf, 0.95))); border-color: darker(#d3d7cf); + border-style: solid; } .menuitem:selected { @@ -396,11 +396,6 @@ GtkCalendar:selected { border-color: darker(#eeeeec); } -.menubar:hover { - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#d3d7cf, 1.2)), to(shade(#d3d7cf, 0.9))); - border-color: darker(#d3d7cf); -} - .menubar:selected { color: #000000; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.2))); diff --git a/themes/xfce-4.6/gtk-3.0/gtk.css b/themes/xfce-4.6/gtk-3.0/gtk.css index 69088e5..22416df 100644 --- a/themes/xfce-4.6/gtk-3.0/gtk.css +++ b/themes/xfce-4.6/gtk-3.0/gtk.css @@ -62,8 +62,6 @@ -GtkMenu-horizontal-padding : 0; -GtkMenu-vertical-padding : 0; - -GtkMenuItem-selected-shadow-type: etched-in; - -GtkPaned-handle-size : 3; -GtkRange-slider-width : 15; @@ -369,7 +367,7 @@ GtkCalendar:selected { background-color: #fafaf7; border-color: darker(#fafaf7); - border-width: 1 2; + border-width: 1 1; } .menu:active, .memuitem:active { @@ -383,10 +381,18 @@ GtkCalendar:selected { border-color: darker(#fafaf7); } -.menu:hover, .menuitem:hover { +.menu:hover { + color: #101010; + background-color: #cce2ff; + border-color: darker(#cce2ff); +} + +.menuitem:hover { color: #101010; + background-image: none; background-color: #cce2ff; border-color: darker(#cce2ff); + border-style: solid; } .menu:selected, .menuitem:selected { @@ -413,12 +419,6 @@ GtkCalendar:selected { border-color: darker(#eeeeec); } -.menubar:hover { - color: #101010; - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.0)), to(shade(#cce2ff, 0.9))); - border-color: darker(#cce2ff); -} - .menubar:selected { color: #101010; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.0))); diff --git a/themes/xfce/gtk-3.0/gtk.css b/themes/xfce/gtk-3.0/gtk.css index 69088e5..22416df 100644 --- a/themes/xfce/gtk-3.0/gtk.css +++ b/themes/xfce/gtk-3.0/gtk.css @@ -62,8 +62,6 @@ -GtkMenu-horizontal-padding : 0; -GtkMenu-vertical-padding : 0; - -GtkMenuItem-selected-shadow-type: etched-in; - -GtkPaned-handle-size : 3; -GtkRange-slider-width : 15; @@ -369,7 +367,7 @@ GtkCalendar:selected { background-color: #fafaf7; border-color: darker(#fafaf7); - border-width: 1 2; + border-width: 1 1; } .menu:active, .memuitem:active { @@ -383,10 +381,18 @@ GtkCalendar:selected { border-color: darker(#fafaf7); } -.menu:hover, .menuitem:hover { +.menu:hover { + color: #101010; + background-color: #cce2ff; + border-color: darker(#cce2ff); +} + +.menuitem:hover { color: #101010; + background-image: none; background-color: #cce2ff; border-color: darker(#cce2ff); + border-style: solid; } .menu:selected, .menuitem:selected { @@ -413,12 +419,6 @@ GtkCalendar:selected { border-color: darker(#eeeeec); } -.menubar:hover { - color: #101010; - background-image: -gtk-gradient(linear, left top, left bottom, from(shade(#cce2ff, 1.0)), to(shade(#cce2ff, 0.9))); - border-color: darker(#cce2ff); -} - .menubar:selected { color: #101010; background-image: -gtk-gradient(linear, left top, left bottom, from(shade(@bg_selected, 0.9)), to(shade(@bg_selected, 1.0))); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits