[Xfce4-commits] <gtk-xfce-engine:master> Merge branch 'peter/gtk3'
Peter de Ridder
noreply at xfce.org
Thu Mar 29 22:00:06 CEST 2012
Updating branch refs/heads/master
to aa2f6b7e241e5a8e7ec32d91f8f2e785ac71819c (commit)
from e9d9e7b48b69277a064c7eb30a17b1ef16662a7d (commit)
commit aa2f6b7e241e5a8e7ec32d91f8f2e785ac71819c
Merge: e9d9e7b 955dd15
Author: Peter de Ridder <peter at xfce.org>
Date: Thu Mar 29 21:40:31 2012 +0200
Merge branch 'peter/gtk3'
commit 955dd154a2a28d209f1cb35bd6c1c7e556c6afc0
Author: Peter de Ridder <peter at 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 <peter at 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 <peter at 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 <peter at xfce.org>
Date: Sun Mar 25 10:43:58 2012 +0200
Correctly match gtk-tooltip widgets (bug #8494)
commit 3986032f9ebdde4d6c8d4df65bc1446495da0ce2
Author: Peter de Ridder <peter at 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 (fourdan at xfce.org)
- * Copyright (C) 2011 Peter de Ridder (peter at xfce.org)
+ * Copyright (C) 2011-2012 Peter de Ridder (peter at xfce.org)
*
* Portions based Thinice port by
* Tim Gerla <timg at 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)));
More information about the Xfce4-commits
mailing list