all repos — openbox @ 1cfb65bc401ee8f44103a1a74404d191106a7535

openbox fork - make it a bit more like ryudo

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
commit

1cfb65bc401ee8f44103a1a74404d191106a7535

parent

6ec1881579c8b4499399ed25026f1e5376d0c04b

4 files changed, 17 insertions(+), 0 deletions(-)

jump to
M data/rc.xsddata/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.copenbox/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.hopenbox/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.copenbox/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);