summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Pita <carlosjosepita@gmail.com>2011-10-14 17:01:18 -0400
committerDana Jansens <danakj@orodu.net>2011-10-16 18:51:51 -0400
commitfadf435ee1a37cf542be037cc2d7e7649a544581 (patch)
treeebbbb30067d2ece2f9f2bfb0992928f8012a4d06
parente4e7c2be52ee1a0b75d9d2feff57fdc992fedb9b (diff)
Specific border width/color for undecorated active/inactive windows (bug #4889)
The attached patch adds three theme options with backward compatible defaults: undecorated.border.width defaults to border.width window.undecorated.active.border.color defaults to window.active.border.color window.undecorated.inactive.border.color defaults to window.inactive.border.color
-rw-r--r--obrender/theme.c20
-rw-r--r--obrender/theme.h3
-rw-r--r--openbox/frame.c3
-rw-r--r--openbox/framerender.c10
4 files changed, 29 insertions, 7 deletions
diff --git a/obrender/theme.c b/obrender/theme.c
index 5f140657..1693074c 100644
--- a/obrender/theme.c
+++ b/obrender/theme.c
@@ -259,9 +259,13 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
READ_INT("border.width", theme->fbwidth, 0, 100, 1);
READ_INT("menu.border.width", theme->mbwidth, 0, 100, theme->fbwidth);
READ_INT("osd.border.width", theme->obwidth, 0, 100, theme->fbwidth);
+ READ_INT("undecorated.border.width", theme->ubwidth, 0, 100,
+ theme->fbwidth);
READ_INT("menu.separator.width", theme->menu_sep_width, 1, 100, 1);
- READ_INT("menu.separator.padding.width", theme->menu_sep_paddingx, 0, 100, 6);
- READ_INT("menu.separator.padding.height", theme->menu_sep_paddingy, 0, 100, 3);
+ READ_INT("menu.separator.padding.width", theme->menu_sep_paddingx,
+ 0, 100, 6);
+ READ_INT("menu.separator.padding.height", theme->menu_sep_paddingy,
+ 0, 100, 3);
READ_INT("window.client.padding.width", theme->cbwidthx, 0, 100,
theme->paddingx);
READ_INT("window.client.padding.height", theme->cbwidthy, 0, 100,
@@ -270,7 +274,11 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
/* load colors */
READ_COLOR_("window.active.border.color", "border.color",
theme->frame_focused_border_color, RrColorNew(inst, 0, 0, 0));
-
+ /* undecorated focused border color inherits from frame focused border
+ color */
+ READ_COLOR("window.undecorated.active.border.color",
+ theme->frame_undecorated_focused_border_color,
+ RrColorCopy(theme->frame_focused_border_color));
/* title separator focused color inherits from focused border color */
READ_COLOR("window.active.title.separator.color",
theme->title_separator_focused_color,
@@ -281,6 +289,12 @@ RrTheme* RrThemeNew(const RrInstance *inst, const gchar *name,
theme->frame_unfocused_border_color,
RrColorCopy(theme->frame_focused_border_color));
+ /* undecorated unfocused border color inherits from frame unfocused border
+ color */
+ READ_COLOR("window.undecorated.inactive.border.color",
+ theme->frame_undecorated_unfocused_border_color,
+ RrColorCopy(theme->frame_unfocused_border_color));
+
/* title separator unfocused color inherits from unfocused border color */
READ_COLOR("window.inactive.title.separator.color",
theme->title_separator_unfocused_color,
diff --git a/obrender/theme.h b/obrender/theme.h
index 7ad5b34f..eb9ac3f9 100644
--- a/obrender/theme.h
+++ b/obrender/theme.h
@@ -44,6 +44,7 @@ struct _RrTheme {
gint fbwidth; /*!< frame border width */
gint mbwidth; /*!< menu border width */
gint obwidth; /*!< osd border width */
+ gint ubwidth; /*!< undecorated frame border width */
gint cbwidthx;
gint cbwidthy;
gint menu_overlap_x;
@@ -66,7 +67,9 @@ struct _RrTheme {
RrColor *menu_border_color;
RrColor *osd_border_color;
RrColor *frame_focused_border_color;
+ RrColor *frame_undecorated_focused_border_color;
RrColor *frame_unfocused_border_color;
+ RrColor *frame_undecorated_unfocused_border_color;
RrColor *title_separator_focused_color;
RrColor *title_separator_unfocused_color;
RrColor *cb_focused_color;
diff --git a/openbox/frame.c b/openbox/frame.c
index 3aa3ab7f..48dda24e 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -348,7 +348,8 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
self->shaded = self->client->shaded;
if (self->decorations & OB_FRAME_DECOR_BORDER)
- self->bwidth = ob_rr_theme->fbwidth;
+ self->bwidth = self->client->undecorated ?
+ ob_rr_theme->ubwidth : ob_rr_theme->fbwidth;
else
self->bwidth = 0;
diff --git a/openbox/framerender.c b/openbox/framerender.c
index 8ddba608..041e6d17 100644
--- a/openbox/framerender.c
+++ b/openbox/framerender.c
@@ -68,9 +68,13 @@ void framerender_frame(ObFrame *self)
XSetWindowBackground(obt_display, self->innerbrb, px);
XClearWindow(obt_display, self->innerbrb);
- px = (self->focused ?
- RrColorPixel(ob_rr_theme->frame_focused_border_color) :
- RrColorPixel(ob_rr_theme->frame_unfocused_border_color));
+ px = RrColorPixel(self->focused ?
+ (self->client->undecorated ?
+ ob_rr_theme->frame_undecorated_focused_border_color :
+ ob_rr_theme->frame_focused_border_color) :
+ (self->client->undecorated ?
+ ob_rr_theme->frame_undecorated_unfocused_border_color :
+ ob_rr_theme->frame_unfocused_border_color));
XSetWindowBackground(obt_display, self->left, px);
XClearWindow(obt_display, self->left);