diff --git a/data/themerc.xsd b/data/themerc.xsd
index 63f8af51..61f6d938 100755
--- a/data/themerc.xsd
+++ b/data/themerc.xsd
@@ -88,16 +88,9 @@
-
-
-
-
-
-
-
-
+
@@ -123,6 +116,7 @@
+
@@ -134,9 +128,7 @@
-
-
@@ -148,10 +140,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/openbox/dock.c b/openbox/dock.c
index 5e61f00f..0cc42285 100644
--- a/openbox/dock.c
+++ b/openbox/dock.c
@@ -57,7 +57,8 @@ void dock_startup(gboolean reconfig)
GList *it;
XSetWindowBorder(ob_display, dock->frame,
- RrColorPixel(ob_rr_theme->frame_b_color));
+ RrColorPixel(ob_rr_theme->
+ frame_focused_border_color));
XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->fbwidth);
RrAppearanceFree(dock->a_frame);
@@ -91,7 +92,7 @@ void dock_startup(gboolean reconfig)
&attrib);
dock->a_frame = RrAppearanceCopy(ob_rr_theme->a_focused_title);
XSetWindowBorder(ob_display, dock->frame,
- RrColorPixel(ob_rr_theme->frame_b_color));
+ RrColorPixel(ob_rr_theme->frame_focused_border_color));
XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->fbwidth);
g_hash_table_insert(window_map, &dock->frame, dock);
diff --git a/openbox/frame.c b/openbox/frame.c
index 68a64342..6248db7c 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -184,19 +184,6 @@ ObFrame *frame_new(ObClient *client)
static void set_theme_statics(ObFrame *self)
{
/* set colors/appearance/sizes for stuff that doesn't change */
- XSetWindowBorder(ob_display, self->window,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->inner,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->title,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->handle,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->rgrip,
- RrColorPixel(ob_rr_theme->frame_b_color));
- XSetWindowBorder(ob_display, self->lgrip,
- RrColorPixel(ob_rr_theme->frame_b_color));
-
XResizeWindow(ob_display, self->max,
ob_rr_theme->button_size, ob_rr_theme->button_size);
XResizeWindow(ob_display, self->iconify,
diff --git a/openbox/framerender.c b/openbox/framerender.c
index 21474380..97d5ef53 100644
--- a/openbox/framerender.c
+++ b/openbox/framerender.c
@@ -42,6 +42,16 @@ void framerender_frame(ObFrame *self)
RrColorPixel(ob_rr_theme->cb_unfocused_color));
XSetWindowBackground(ob_display, self->inner, px);
XClearWindow(ob_display, self->inner);
+
+ px = (self->focused ?
+ RrColorPixel(ob_rr_theme->frame_focused_border_color) :
+ RrColorPixel(ob_rr_theme->frame_unfocused_border_color));
+ XSetWindowBorder(ob_display, self->window, px);
+ XSetWindowBorder(ob_display, self->inner, px);
+ XSetWindowBorder(ob_display, self->title, px);
+ XSetWindowBorder(ob_display, self->handle, px);
+ XSetWindowBorder(ob_display, self->rgrip, px);
+ XSetWindowBorder(ob_display, self->lgrip, px);
}
if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
diff --git a/openbox/menuframe.c b/openbox/menuframe.c
index 313bd6cf..5782b7ac 100644
--- a/openbox/menuframe.c
+++ b/openbox/menuframe.c
@@ -89,7 +89,7 @@ ObMenuFrame* menu_frame_new(ObMenu *menu, guint show_from, ObClient *client)
XSetWindowBorderWidth(ob_display, self->window, ob_rr_theme->mbwidth);
XSetWindowBorder(ob_display, self->window,
- RrColorPixel(ob_rr_theme->menu_b_color));
+ RrColorPixel(ob_rr_theme->menu_border_color));
self->a_title = RrAppearanceCopy(ob_rr_theme->a_menu_title);
self->a_items = RrAppearanceCopy(ob_rr_theme->a_menu);
@@ -689,7 +689,7 @@ void menu_frame_render(ObMenuFrame *self)
XMoveWindow(ob_display, e->window, e->area.x-e->border, e->area.y-e->border);
XSetWindowBorderWidth(ob_display, e->window, e->border);
XSetWindowBorder(ob_display, e->window,
- RrColorPixel(ob_rr_theme->menu_b_color));
+ RrColorPixel(ob_rr_theme->menu_border_color));
text_a = (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
diff --git a/openbox/popup.c b/openbox/popup.c
index e3d52e49..156ce860 100644
--- a/openbox/popup.c
+++ b/openbox/popup.c
@@ -52,7 +52,8 @@ ObPopup *popup_new()
InputOutput, RrVisual(ob_rr_inst), 0, NULL);
XSetWindowBorderWidth(ob_display, self->bg, ob_rr_theme->fbwidth);
- XSetWindowBorder(ob_display, self->bg, ob_rr_theme->frame_b_color->pixel);
+ XSetWindowBorder(ob_display, self->bg,
+ RrColorPixel(ob_rr_theme->frame_focused_border_color));
XMapWindow(ob_display, self->text);
@@ -487,7 +488,8 @@ void pager_popup_delay_show(ObPagerPopup *self, gulong usec,
for (i = self->desks; i < screen_num_desktops; ++i) {
XSetWindowAttributes attr;
- attr.border_pixel = RrColorPixel(ob_rr_theme->frame_b_color);
+ attr.border_pixel =
+ RrColorPixel(ob_rr_theme->frame_focused_border_color);
self->wins[i] = XCreateWindow(ob_display, self->popup->bg,
0, 0, 1, 1, ob_rr_theme->fbwidth,
RrDepth(ob_rr_inst), InputOutput,
diff --git a/render/theme.c b/render/theme.c
index dd9c7653..1dd49caf 100644
--- a/render/theme.c
+++ b/render/theme.c
@@ -196,31 +196,40 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
&theme->paddingx, &theme->paddingy, 0, 100, 0, 100))
theme->paddingx = theme->paddingy = 3;
- if (!FIND(int, L("window","border","width"),
+ if (!FIND(int, L("dimensions","window","border"),
&theme->fbwidth, 0, 100))
theme->fbwidth = 1;
/* menu border width inherits from frame border width */
- if (!FIND(int, L("menu","border","width"),
+ if (!FIND(int, L("dimensions","menu","border"),
&theme->mbwidth, 0, 100))
theme->mbwidth = theme->fbwidth;
- if (!FIND(point, L("window","clientpadding"), &theme->cbwidthx,
- &theme->cbwidthy, 0, 100, 0, 100))
+ if (!FIND(point, L("dimensions","window","clientpadding"),
+ &theme->cbwidthx, &theme->cbwidthy, 0, 100, 0, 100))
theme->cbwidthx = theme->cbwidthy = 1;
/* load colors */
- if (!FIND(color, L("window","border","primary"),
- &theme->frame_b_color, NULL))
- theme->frame_b_color = RrColorNew(inst, 0, 0, 0);
+ if (!FIND(color, L("window","active","border"),
+ &theme->frame_focused_border_color, NULL))
+ theme->frame_focused_border_color = RrColorNew(inst, 0, 0, 0);
+ /* frame unfocused border color inherits from frame focused border color */
+ if (!FIND(color, L("window","inactive","border"),
+ &theme->frame_unfocused_border_color, NULL))
+ theme->frame_unfocused_border_color =
+ RrColorNew(inst,
+ theme->frame_focused_border_color->r,
+ theme->frame_focused_border_color->g,
+ theme->frame_focused_border_color->b);
- /* menu border color inherits from frame border color */
- if (!FIND(color, L("menu","border","primary"),
- &theme->menu_b_color, NULL))
- theme->menu_b_color = RrColorNew(inst,
- theme->frame_b_color->r,
- theme->frame_b_color->g,
- theme->frame_b_color->b);
+ /* menu border color inherits from frame focused border color */
+ if (!FIND(color, L("menu","border"),
+ &theme->menu_border_color, NULL))
+ theme->menu_border_color =
+ RrColorNew(inst,
+ theme->frame_focused_border_color->r,
+ theme->frame_focused_border_color->g,
+ theme->frame_focused_border_color->b);
if (!FIND(color, L("window","active","clientpadding"),
&theme->cb_focused_color, NULL))
theme->cb_focused_color = RrColorNew(inst, 255, 255, 255);
@@ -1220,8 +1229,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
void RrThemeFree(RrTheme *theme)
{
if (theme) {
- RrColorFree(theme->menu_b_color);
- RrColorFree(theme->frame_b_color);
+ RrColorFree(theme->menu_border_color);
+ RrColorFree(theme->frame_focused_border_color);
+ RrColorFree(theme->frame_unfocused_border_color);
RrColorFree(theme->cb_unfocused_color);
RrColorFree(theme->cb_focused_color);
RrColorFree(theme->title_focused_color);
diff --git a/render/theme.h b/render/theme.h
index 85e5aa73..4e87fb12 100644
--- a/render/theme.h
+++ b/render/theme.h
@@ -57,8 +57,9 @@ struct _RrTheme {
gint menu_title_height;
/* style settings - colors */
- RrColor *menu_b_color;
- RrColor *frame_b_color;
+ RrColor *menu_border_color;
+ RrColor *frame_focused_border_color;
+ RrColor *frame_unfocused_border_color;
RrColor *cb_focused_color;
RrColor *cb_unfocused_color;
RrColor *title_focused_color;
diff --git a/themes/Artwiz-boxed/openbox-3/themerc.xml b/themes/Artwiz-boxed/openbox-3/themerc.xml
index 2bf0cd84..2431706c 100644
--- a/themes/Artwiz-boxed/openbox-3/themerc.xml
+++ b/themes/Artwiz-boxed/openbox-3/themerc.xml
@@ -1,16 +1,24 @@
-
+
+
+
+
+
+
+
4
+
+ 1
+
+
-
- 1
-
-
- center
+
+
+ center