add a config option hideDisabled in the theme section that hides disabled buttons instead of showing them as disabled, based on patch in bug #2310
Mikael Magnusson mikachu@comhem.se
4 files changed,
17 insertions(+),
0 deletions(-)
M
data/rc.xsd
→
data/rc.xsd
@@ -100,6 +100,7 @@ <xs:sequence>
<xs:element name="name" type="xs:string"/> <xs:element name="titlelayout" type="xs:string"/> <xs:element name="keepBorder" type="ob:yesorno"/> + <xs:element name="hideDisabled" type="ob:yesorno"/> </xs:sequence> </xs:complexType> <xs:complexType name="desktops">
M
openbox/config.c
→
openbox/config.c
@@ -35,6 +35,7 @@ ObPlacePolicy config_place_policy;
gchar *config_theme; gboolean config_theme_keepborder; +gboolean config_theme_hidedisabled; gchar *config_title_layout;@@ -256,6 +257,8 @@ config_title_layout = parse_string(doc, n);
} if ((n = parse_find_node("keepBorder", node))) config_theme_keepborder = parse_bool(doc, n); + if ((n = parse_find_node("hideDisabled", node))) + config_theme_hidedisabled = parse_bool(doc, n); } static void parse_desktops(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,@@ -556,6 +559,7 @@ config_theme = NULL;
config_title_layout = g_strdup("NLIMC"); config_theme_keepborder = TRUE; + config_theme_hidedisabled = FALSE; parse_register(i, "theme", parse_theme, NULL);
M
openbox/config.h
→
openbox/config.h
@@ -84,6 +84,8 @@ extern gchar *config_theme;
/* Show the onepixel border after toggleDecor */ extern gboolean config_theme_keepborder; +/* Hide window frame buttons that the window doesn't allow */ +extern gboolean config_theme_hidedisabled; /* Titlebar button layout */ extern gchar *config_title_layout;
M
openbox/frame.c
→
openbox/frame.c
@@ -579,18 +579,24 @@ ob_rr_theme->padding + 1);
break; case 'D': if (d) { *lc = ' '; break; } + if (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) && config_theme_hidedisabled) + break; d = TRUE; self->label_width -= (ob_rr_theme->button_size + ob_rr_theme->padding + 1); break; case 'S': if (s) { *lc = ' '; break; } + if (!(self->decorations & OB_FRAME_DECOR_SHADE) && config_theme_hidedisabled) + break; s = TRUE; self->label_width -= (ob_rr_theme->button_size + ob_rr_theme->padding + 1); break; case 'I': if (i) { *lc = ' '; break; } + if (!(self->decorations & OB_FRAME_DECOR_ICONIFY) && config_theme_hidedisabled) + break; i = TRUE; self->label_width -= (ob_rr_theme->button_size + ob_rr_theme->padding + 1);@@ -601,12 +607,16 @@ l = TRUE;
break; case 'M': if (m) { *lc = ' '; break; } + if (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) && config_theme_hidedisabled) + break; m = TRUE; self->label_width -= (ob_rr_theme->button_size + ob_rr_theme->padding + 1); break; case 'C': if (c) { *lc = ' '; break; } + if (!(self->decorations & OB_FRAME_DECOR_CLOSE) && config_theme_hidedisabled) + break; c = TRUE; self->label_width -= (ob_rr_theme->button_size + ob_rr_theme->padding + 1);