From 1cfb65bc401ee8f44103a1a74404d191106a7535 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Thu, 14 Jul 2005 13:44:33 +0000 Subject: [PATCH] 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 --- data/rc.xsd | 1 + openbox/config.c | 4 ++++ openbox/config.h | 2 ++ openbox/frame.c | 10 ++++++++++ 4 files changed, 17 insertions(+) diff --git a/data/rc.xsd b/data/rc.xsd index 7cdc5900..3c6c47b7 100644 --- a/data/rc.xsd +++ b/data/rc.xsd @@ -100,6 +100,7 @@ + diff --git a/openbox/config.c b/openbox/config.c index 8c86b973..c43db935 100644 --- a/openbox/config.c +++ b/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 @@ static void parse_theme(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, } 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 @@ void config_startup(ObParseInst *i) config_title_layout = g_strdup("NLIMC"); config_theme_keepborder = TRUE; + config_theme_hidedisabled = FALSE; parse_register(i, "theme", parse_theme, NULL); diff --git a/openbox/config.h b/openbox/config.h index b04d06af..5be26ef4 100644 --- a/openbox/config.h +++ b/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; diff --git a/openbox/frame.c b/openbox/frame.c index fcad427b..f390887a 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -579,18 +579,24 @@ static void layout_title(ObFrame *self) 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 @@ static void layout_title(ObFrame *self) 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); -- 2.39.2