diff --git a/Makefile.am b/Makefile.am
index 9bef49a5..b879c017 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -292,7 +292,6 @@ dist_natura_theme_DATA= \
artwizboxed_themedir = $(themedir)/Artwiz-boxed/openbox-3
dist_artwizboxed_theme_DATA= \
- themes/Artwiz-boxed/openbox-3/bullet.xbm \
themes/Artwiz-boxed/openbox-3/close.xbm \
themes/Artwiz-boxed/openbox-3/desk_toggled.xbm \
themes/Artwiz-boxed/openbox-3/desk.xbm \
diff --git a/data/themerc.xsd b/data/themerc.xsd
index a122c3a4..c1432124 100755
--- a/data/themerc.xsd
+++ b/data/themerc.xsd
@@ -105,6 +105,7 @@
+
diff --git a/openbox/client_menu.c b/openbox/client_menu.c
index 011e3ec1..da6ac2d9 100644
--- a/openbox/client_menu.c
+++ b/openbox/client_menu.c
@@ -41,9 +41,8 @@ enum {
CLIENT_SEND_TO,
CLIENT_LAYER,
CLIENT_ICONIFY,
+ CLIENT_RESTORE,
CLIENT_MAXIMIZE,
- CLIENT_RAISE,
- CLIENT_LOWER,
CLIENT_SHADE,
CLIENT_DECORATE,
CLIENT_MOVE,
@@ -69,15 +68,15 @@ static gboolean client_update(ObMenuFrame *frame, gpointer data)
e = menu_find_entry_id(menu, CLIENT_ICONIFY);
e->data.normal.enabled = frame->client->functions & OB_CLIENT_FUNC_ICONIFY;
+ e = menu_find_entry_id(menu, CLIENT_RESTORE);
+ e->data.normal.enabled =frame->client->max_horz || frame->client->max_vert;
+
e = menu_find_entry_id(menu, CLIENT_MAXIMIZE);
- menu_entry_set_label(e,
- (frame->client->max_vert || frame->client->max_horz ?
- _("Restor&e") : _("Maximiz&e")), TRUE);
- e->data.normal.enabled =frame->client->functions & OB_CLIENT_FUNC_MAXIMIZE;
+ e->data.normal.enabled =
+ (frame->client->functions & OB_CLIENT_FUNC_MAXIMIZE) &&
+ !frame->client->max_horz && !frame->client->max_vert;
e = menu_find_entry_id(menu, CLIENT_SHADE);
- menu_entry_set_label(e, (frame->client->shaded ?
- _("&Roll down") : _("&Roll up")), TRUE);
e->data.normal.enabled = frame->client->functions & OB_CLIENT_FUNC_SHADE;
e = menu_find_entry_id(menu, CLIENT_MOVE);
@@ -153,6 +152,16 @@ static gboolean send_to_update(ObMenuFrame *frame, gpointer data)
act->data.sendto.follow = FALSE;
acts = g_slist_prepend(NULL, act);
e = menu_add_normal(menu, desk, name, acts, FALSE);
+ if (desk == DESKTOP_ALL) {
+ e->data.normal.mask = ob_rr_theme->desk_mask;
+ e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
+ e->data.normal.mask_selected_color =
+ ob_rr_theme->menu_selected_color;
+ e->data.normal.mask_disabled_color =
+ ob_rr_theme->menu_disabled_color;
+ e->data.normal.mask_disabled_selected_color =
+ ob_rr_theme->menu_disabled_selected_color;
+ }
if (frame->client->desktop == desk)
e->data.normal.enabled = FALSE;
@@ -257,49 +266,16 @@ void client_menu_startup()
menu_set_update_func(menu, client_update);
menu_set_place_func(menu, client_menu_place);
- menu_add_submenu(menu, CLIENT_SEND_TO, SEND_TO_MENU_NAME);
-
- menu_add_submenu(menu, CLIENT_LAYER, LAYER_MENU_NAME);
-
- acts = g_slist_prepend(NULL, action_from_string
- ("Iconify", OB_USER_ACTION_MENU_SELECTION));
- e = menu_add_normal(menu, CLIENT_ICONIFY, _("Ico&nify"), acts, TRUE);
- e->data.normal.mask = ob_rr_theme->iconify_mask;
- e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
- e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
- e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
-
acts = g_slist_prepend(NULL, action_from_string
("ToggleMaximizeFull",
OB_USER_ACTION_MENU_SELECTION));
- e = menu_add_normal(menu, CLIENT_MAXIMIZE, _("Maximiz&e"), acts, TRUE);
- e->data.normal.mask = ob_rr_theme->max_mask;
+ e = menu_add_normal(menu, CLIENT_RESTORE, _("R&estore"), acts, TRUE);
+ e->data.normal.mask = ob_rr_theme->max_toggled_mask;
e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
- e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
-
- acts = g_slist_prepend(NULL, action_from_string
- ("Raise", OB_USER_ACTION_MENU_SELECTION));
- menu_add_normal(menu, CLIENT_RAISE, _("Raise to &top"), acts, TRUE);
-
- acts = g_slist_prepend(NULL, action_from_string
- ("Lower", OB_USER_ACTION_MENU_SELECTION));
- menu_add_normal(menu, CLIENT_LOWER, _("Lower to &bottom"),acts, TRUE);
-
- acts = g_slist_prepend(NULL, action_from_string
- ("ToggleShade", OB_USER_ACTION_MENU_SELECTION));
- e = menu_add_normal(menu, CLIENT_SHADE, _("&Roll up"), acts, TRUE);
- e->data.normal.mask = ob_rr_theme->shade_mask;
- e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
- e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
-
- acts = g_slist_prepend(NULL, action_from_string
- ("ToggleDecorations",
- OB_USER_ACTION_MENU_SELECTION));
- menu_add_normal(menu, CLIENT_DECORATE, _("&Decorate"), acts, TRUE);
-
- menu_add_separator(menu, -1, NULL);
+ e->data.normal.mask_disabled_selected_color =
+ ob_rr_theme->menu_disabled_selected_color;
acts = g_slist_prepend(NULL, action_from_string
("Move", OB_USER_ACTION_MENU_SELECTION));
@@ -309,6 +285,48 @@ void client_menu_startup()
("Resize", OB_USER_ACTION_MENU_SELECTION));
menu_add_normal(menu, CLIENT_RESIZE, _("Resi&ze"), acts, TRUE);
+ acts = g_slist_prepend(NULL, action_from_string
+ ("Iconify", OB_USER_ACTION_MENU_SELECTION));
+ e = menu_add_normal(menu, CLIENT_ICONIFY, _("Ico&nify"), acts, TRUE);
+ e->data.normal.mask = ob_rr_theme->iconify_mask;
+ e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
+ e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
+ e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
+ e->data.normal.mask_disabled_selected_color =
+ ob_rr_theme->menu_disabled_selected_color;
+
+ acts = g_slist_prepend(NULL, action_from_string
+ ("ToggleMaximizeFull",
+ OB_USER_ACTION_MENU_SELECTION));
+ e = menu_add_normal(menu, CLIENT_MAXIMIZE, _("Ma&ximize"), acts, TRUE);
+ e->data.normal.mask = ob_rr_theme->max_mask;
+ e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
+ e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
+ e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
+ e->data.normal.mask_disabled_selected_color =
+ ob_rr_theme->menu_disabled_selected_color;
+
+ acts = g_slist_prepend(NULL, action_from_string
+ ("ToggleShade", OB_USER_ACTION_MENU_SELECTION));
+ e = menu_add_normal(menu, CLIENT_SHADE, _("&Roll up/down"), acts, TRUE);
+ e->data.normal.mask = ob_rr_theme->shade_mask;
+ e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
+ e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
+ e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
+ e->data.normal.mask_disabled_selected_color =
+ ob_rr_theme->menu_disabled_selected_color;
+
+ acts = g_slist_prepend(NULL, action_from_string
+ ("ToggleDecorations",
+ OB_USER_ACTION_MENU_SELECTION));
+ menu_add_normal(menu, CLIENT_DECORATE, _("Un/&Decorate"), acts, TRUE);
+
+ menu_add_separator(menu, -1, NULL);
+
+ menu_add_submenu(menu, CLIENT_SEND_TO, SEND_TO_MENU_NAME);
+
+ menu_add_submenu(menu, CLIENT_LAYER, LAYER_MENU_NAME);
+
menu_add_separator(menu, -1, NULL);
acts = g_slist_prepend(NULL, action_from_string
@@ -316,6 +334,8 @@ void client_menu_startup()
e = menu_add_normal(menu, CLIENT_CLOSE, _("&Close"), acts, TRUE);
e->data.normal.mask = ob_rr_theme->close_mask;
e->data.normal.mask_normal_color = ob_rr_theme->menu_color;
- e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
e->data.normal.mask_selected_color = ob_rr_theme->menu_selected_color;
+ e->data.normal.mask_disabled_color = ob_rr_theme->menu_disabled_color;
+ e->data.normal.mask_disabled_selected_color =
+ ob_rr_theme->menu_disabled_selected_color;
}
diff --git a/openbox/event.c b/openbox/event.c
index 61aea441..25460a71 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -1288,8 +1288,7 @@ static gboolean event_handle_menu_keyboard(XEvent *ev)
ObMenuEntryFrame *e = it->data;
gunichar entrykey = 0;
- if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- e->entry->data.normal.enabled)
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
entrykey = e->entry->data.normal.shortcut;
else if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
entrykey = e->entry->data.submenu.submenu->shortcut;
@@ -1309,7 +1308,8 @@ static gboolean event_handle_menu_keyboard(XEvent *ev)
num_found == 1)
{
menu_frame_select(frame, found, TRUE);
- usleep(50000);
+ usleep(50000); /* highlight the item for a short bit so the
+ user can see what happened */
menu_entry_frame_execute(found, state, ev->xkey.time);
} else {
menu_frame_select(frame, found, TRUE);
diff --git a/openbox/menu.c b/openbox/menu.c
index 9aed40aa..741e27c1 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -382,10 +382,10 @@ void menu_show(gchar *name, gint x, gint y, gint button, ObClient *client)
if (!menu_frame_show_topmenu(frame, x, y, button))
menu_frame_free(frame);
else if (frame->entries) {
+ /* select the first entry if it's not a submenu */
ObMenuEntryFrame *e = frame->entries->data;
- if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- e->entry->data.normal.enabled)
- menu_frame_select(frame, e, FALSE);
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
+ menu_frame_select(frame, e, FALSE);
}
}
diff --git a/openbox/menu.h b/openbox/menu.h
index b08f7c95..64cbbd6a 100644
--- a/openbox/menu.h
+++ b/openbox/menu.h
@@ -112,8 +112,9 @@ struct _ObNormalMenuEntry {
/* Mask icon */
RrPixmapMask *mask;
RrColor *mask_normal_color;
- RrColor *mask_disabled_color;
RrColor *mask_selected_color;
+ RrColor *mask_disabled_color;
+ RrColor *mask_disabled_selected_color;
};
struct _ObSubmenuMenuEntry {
diff --git a/openbox/menuframe.c b/openbox/menuframe.c
index a95e46fc..f87c3c0b 100644
--- a/openbox/menuframe.c
+++ b/openbox/menuframe.c
@@ -140,8 +140,10 @@ static ObMenuEntryFrame* menu_entry_frame_new(ObMenuEntry *entry,
XMapWindow(ob_display, self->text);
self->a_normal = RrAppearanceCopy(ob_rr_theme->a_menu_normal);
- self->a_disabled = RrAppearanceCopy(ob_rr_theme->a_menu_disabled);
self->a_selected = RrAppearanceCopy(ob_rr_theme->a_menu_selected);
+ self->a_disabled = RrAppearanceCopy(ob_rr_theme->a_menu_disabled);
+ self->a_disabled_selected =
+ RrAppearanceCopy(ob_rr_theme->a_menu_disabled_selected);
if (entry->type == OB_MENU_ENTRY_TYPE_SEPARATOR) {
self->a_separator = RrAppearanceCopy(ob_rr_theme->a_clear_tex);
@@ -159,10 +161,12 @@ static ObMenuEntryFrame* menu_entry_frame_new(ObMenuEntry *entry,
self->a_text_normal =
RrAppearanceCopy(ob_rr_theme->a_menu_text_normal);
- self->a_text_disabled =
- RrAppearanceCopy(ob_rr_theme->a_menu_text_disabled);
self->a_text_selected =
RrAppearanceCopy(ob_rr_theme->a_menu_text_selected);
+ self->a_text_disabled =
+ RrAppearanceCopy(ob_rr_theme->a_menu_text_disabled);
+ self->a_text_disabled_selected =
+ RrAppearanceCopy(ob_rr_theme->a_menu_text_disabled_selected);
self->a_text_title =
RrAppearanceCopy(ob_rr_theme->a_menu_text_title);
@@ -186,15 +190,17 @@ static void menu_entry_frame_free(ObMenuEntryFrame *self)
}
RrAppearanceFree(self->a_normal);
- RrAppearanceFree(self->a_disabled);
RrAppearanceFree(self->a_selected);
+ RrAppearanceFree(self->a_disabled);
+ RrAppearanceFree(self->a_disabled_selected);
RrAppearanceFree(self->a_separator);
RrAppearanceFree(self->a_icon);
RrAppearanceFree(self->a_mask);
RrAppearanceFree(self->a_text_normal);
- RrAppearanceFree(self->a_text_disabled);
RrAppearanceFree(self->a_text_selected);
+ RrAppearanceFree(self->a_text_disabled);
+ RrAppearanceFree(self->a_text_disabled_selected);
RrAppearanceFree(self->a_text_title);
RrAppearanceFree(self->a_bullet_normal);
RrAppearanceFree(self->a_bullet_selected);
@@ -338,12 +344,14 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self)
switch (self->entry->type) {
case OB_MENU_ENTRY_TYPE_NORMAL:
case OB_MENU_ENTRY_TYPE_SUBMENU:
- item_a = ((self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- !self->entry->data.normal.enabled) ?
- self->a_disabled :
+ item_a = (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+ !self->entry->data.normal.enabled ?
+ /* disabled */
(self == self->frame->selected ?
- self->a_selected :
- self->a_normal));
+ self->a_disabled_selected : self->a_disabled) :
+ /* enabled */
+ (self == self->frame->selected ?
+ self->a_selected : self->a_normal));
th = self->frame->item_h;
break;
case OB_MENU_ENTRY_TYPE_SEPARATOR:
@@ -368,11 +376,14 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self)
switch (self->entry->type) {
case OB_MENU_ENTRY_TYPE_NORMAL:
- text_a = (!self->entry->data.normal.enabled ?
- self->a_text_disabled :
+ text_a = (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+ !self->entry->data.normal.enabled ?
+ /* disabled */
(self == self->frame->selected ?
- self->a_text_selected :
- self->a_text_normal));
+ self->a_text_disabled_selected : self->a_text_disabled) :
+ /* enabled */
+ (self == self->frame->selected ?
+ self->a_text_selected : self->a_text_normal));
text_a->texture[0].data.text.string = self->entry->data.normal.label;
if (self->entry->data.normal.shortcut &&
(self->frame->menu->show_all_shortcuts ||
@@ -502,9 +513,13 @@ static void menu_entry_frame_render(ObMenuEntryFrame *self)
self->a_mask->texture[0].data.mask.mask =
self->entry->data.normal.mask;
- c = ((self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- !self->entry->data.normal.enabled) ?
- self->entry->data.normal.mask_disabled_color :
+ c = (self->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+ !self->entry->data.normal.enabled ?
+ /* disabled */
+ (self == self->frame->selected ?
+ self->entry->data.normal.mask_disabled_selected_color :
+ self->entry->data.normal.mask_disabled_color) :
+ /* enabled */
(self == self->frame->selected ?
self->entry->data.normal.mask_selected_color :
self->entry->data.normal.mask_normal_color));
@@ -592,6 +607,12 @@ static void menu_frame_render(ObMenuFrame *self)
MAX(self->item_margin.top, t),
MAX(self->item_margin.right, r),
MAX(self->item_margin.bottom, b));
+ RrMargins(e->a_disabled_selected, &l, &t, &r, &b);
+ STRUT_SET(self->item_margin,
+ MAX(self->item_margin.left, l),
+ MAX(self->item_margin.top, t),
+ MAX(self->item_margin.right, r),
+ MAX(self->item_margin.bottom, b));
} else
self->item_h = 0;
@@ -622,12 +643,15 @@ static void menu_frame_render(ObMenuFrame *self)
XSetWindowBorder(ob_display, e->window,
RrColorPixel(ob_rr_theme->menu_b_color));
- text_a = ((e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- !e->entry->data.normal.enabled) ?
- e->a_text_disabled :
+
+ text_a = (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
+ !e->entry->data.normal.enabled ?
+ /* disabled */
(e == self->selected ?
- e->a_text_selected :
- e->a_text_normal));
+ e->a_text_disabled_selected : e->a_text_disabled) :
+ /* enabled */
+ (e == self->selected ?
+ e->a_text_selected : e->a_text_normal));
switch (e->entry->type) {
case OB_MENU_ENTRY_TYPE_NORMAL:
text_a->texture[0].data.text.string = e->entry->data.normal.label;
@@ -1045,8 +1069,7 @@ void menu_frame_select_previous(ObMenuFrame *self)
e = it->data;
if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
break;
- if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- e->entry->data.normal.enabled)
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
break;
}
}
@@ -1071,8 +1094,7 @@ void menu_frame_select_next(ObMenuFrame *self)
e = it->data;
if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
break;
- if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL &&
- e->entry->data.normal.enabled)
+ if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
break;
}
}
diff --git a/openbox/menuframe.h b/openbox/menuframe.h
index 5c876832..15bae667 100644
--- a/openbox/menuframe.h
+++ b/openbox/menuframe.h
@@ -88,8 +88,9 @@ struct _ObMenuEntryFrame
Window bullet;
RrAppearance *a_normal;
- RrAppearance *a_disabled;
RrAppearance *a_selected;
+ RrAppearance *a_disabled;
+ RrAppearance *a_disabled_selected;
RrAppearance *a_icon;
RrAppearance *a_mask;
@@ -97,8 +98,9 @@ struct _ObMenuEntryFrame
RrAppearance *a_bullet_selected;
RrAppearance *a_separator;
RrAppearance *a_text_normal;
- RrAppearance *a_text_disabled;
RrAppearance *a_text_selected;
+ RrAppearance *a_text_disabled;
+ RrAppearance *a_text_disabled_selected;
RrAppearance *a_text_title;
};
diff --git a/render/theme.c b/render/theme.c
index cb50887b..28a682b5 100644
--- a/render/theme.c
+++ b/render/theme.c
@@ -123,10 +123,12 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
theme->a_menu_text_title = RrAppearanceNew(inst, 1);
theme->a_menu_normal = RrAppearanceNew(inst, 0);
theme->a_menu_disabled = RrAppearanceNew(inst, 0);
+ theme->a_menu_disabled_selected = RrAppearanceNew(inst, 0);
theme->a_menu_selected = RrAppearanceNew(inst, 0);
theme->a_menu_text_normal = RrAppearanceNew(inst, 1);
- theme->a_menu_text_disabled = RrAppearanceNew(inst, 1);
theme->a_menu_text_selected = RrAppearanceNew(inst, 1);
+ theme->a_menu_text_disabled = RrAppearanceNew(inst, 1);
+ theme->a_menu_text_disabled_selected = RrAppearanceNew(inst, 1);
theme->a_menu_bullet_normal = RrAppearanceNew(inst, 1);
theme->a_menu_bullet_selected = RrAppearanceNew(inst, 1);
theme->a_clear = RrAppearanceNew(inst, 0);
@@ -299,17 +301,17 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
&theme->titlebut_toggled_focused_unpressed_color, NULL))
theme->titlebut_toggled_focused_unpressed_color =
RrColorNew(inst,
- theme->titlebut_focused_unpressed_color->r,
- theme->titlebut_focused_unpressed_color->g,
- theme->titlebut_focused_unpressed_color->b);
+ theme->titlebut_focused_pressed_color->r,
+ theme->titlebut_focused_pressed_color->g,
+ theme->titlebut_focused_pressed_color->b);
if (!FIND(color,
L("window","inactive","buttons","toggled-unpressed","image"),
&theme->titlebut_toggled_unfocused_unpressed_color, NULL))
theme->titlebut_toggled_unfocused_unpressed_color =
RrColorNew(inst,
- theme->titlebut_unfocused_unpressed_color->r,
- theme->titlebut_unfocused_unpressed_color->g,
- theme->titlebut_unfocused_unpressed_color->b);
+ theme->titlebut_unfocused_pressed_color->r,
+ theme->titlebut_unfocused_pressed_color->g,
+ theme->titlebut_unfocused_pressed_color->b);
if (!FIND(color,
L("window","active","buttons","toggled-hover","image"),
&theme->titlebut_toggled_hover_focused_color, NULL))
@@ -334,6 +336,13 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
if (!FIND(color, L("menu","disabled","primary"),
&theme->menu_disabled_color, NULL))
theme->menu_disabled_color = RrColorNew(inst, 0, 0, 0);
+ if (!FIND(color, L("menu","activedisabled","text","primary"),
+ &theme->menu_disabled_selected_color, NULL))
+ theme->menu_disabled_selected_color =
+ RrColorNew(inst,
+ theme->menu_disabled_color->r,
+ theme->menu_disabled_color->g,
+ theme->menu_disabled_color->b);
if (!FIND(color, L("menu","active","text","primary"),
&theme->menu_selected_color, NULL))
theme->menu_selected_color = RrColorNew(inst, 0, 0, 0);
@@ -392,6 +401,17 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
theme->menu_text_disabled_shadow_alpha =
theme->menu_text_normal_shadow_alpha;
}
+ if (!FIND(color, L("menu","activedisabled","shadow","primary"),
+ &theme->menu_text_disabled_selected_shadow_color,
+ &theme->menu_text_disabled_selected_shadow_alpha))
+ {
+ theme->menu_text_disabled_selected_shadow_color =
+ RrColorNew(inst, theme->menu_text_disabled_shadow_color->r,
+ theme->menu_text_disabled_shadow_color->g,
+ theme->menu_text_disabled_shadow_color->b);
+ theme->menu_text_disabled_selected_shadow_alpha =
+ theme->menu_text_disabled_shadow_alpha;
+ }
/* load the image masks */
if (read_mask(&ps, "max.xbm", &theme->max_mask)) {
@@ -582,6 +602,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
set_default_appearance(theme->a_menu_title);
if (!FIND(appearance, L("menu", "active"), theme->a_menu_selected, TRUE))
set_default_appearance(theme->a_menu_selected);
+ if (!FIND(appearance, L("menu", "activedisabled"),
+ theme->a_menu_disabled_selected, TRUE))
+ theme->a_menu_disabled_selected =
+ RrAppearanceCopy(theme->a_menu_selected);
/* read the appearances for rendering non-decorations */
theme->osd_hilite_bg = RrAppearanceCopy(theme->a_focused_title);
@@ -647,28 +671,28 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
{
RrAppearanceFree(theme->a_toggled_focused_unpressed_max);
theme->a_toggled_focused_unpressed_max =
- RrAppearanceCopy(theme->a_focused_unpressed_max);
+ RrAppearanceCopy(theme->a_focused_pressed_max);
}
if (!FIND(appearance, L("window","inactive","buttons","toggled-unpressed"),
theme->a_toggled_unfocused_unpressed_max, TRUE))
{
RrAppearanceFree(theme->a_toggled_unfocused_unpressed_max);
theme->a_toggled_unfocused_unpressed_max =
- RrAppearanceCopy(theme->a_unfocused_unpressed_max);
+ RrAppearanceCopy(theme->a_unfocused_pressed_max);
}
if (!FIND(appearance, L("window","active","buttons","toggled-hover"),
theme->a_toggled_hover_focused_max, TRUE))
{
RrAppearanceFree(theme->a_toggled_hover_focused_max);
theme->a_toggled_hover_focused_max =
- RrAppearanceCopy(theme->a_toggled_focused_unpressed_max);
+ RrAppearanceCopy(theme->a_toggled_focused_pressed_max);
}
if (!FIND(appearance, L("window","inactive","buttons","toggled-hover"),
theme->a_toggled_hover_unfocused_max, TRUE))
{
RrAppearanceFree(theme->a_toggled_hover_unfocused_max);
theme->a_toggled_hover_unfocused_max =
- RrAppearanceCopy(theme->a_toggled_unfocused_unpressed_max);
+ RrAppearanceCopy(theme->a_toggled_unfocused_pressed_max);
}
theme->a_disabled_focused_close =
@@ -767,8 +791,9 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
theme->a_menu_normal->surface.grad =
theme->a_menu_disabled->surface.grad =
theme->a_menu_text_normal->surface.grad =
- theme->a_menu_text_disabled->surface.grad =
theme->a_menu_text_selected->surface.grad =
+ theme->a_menu_text_disabled->surface.grad =
+ theme->a_menu_text_disabled_selected->surface.grad =
theme->a_menu_bullet_normal->surface.grad =
theme->a_menu_bullet_selected->surface.grad = RR_SURFACE_PARENTREL;
@@ -840,21 +865,27 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
theme->menu_title_shadow_alpha;
theme->a_menu_text_normal->texture[0].type =
+ theme->a_menu_text_selected->texture[0].type =
theme->a_menu_text_disabled->texture[0].type =
- theme->a_menu_text_selected->texture[0].type = RR_TEXTURE_TEXT;
+ theme->a_menu_text_disabled_selected->texture[0].type =
+ RR_TEXTURE_TEXT;
theme->a_menu_text_normal->texture[0].data.text.justify =
- theme->a_menu_text_disabled->texture[0].data.text.justify =
theme->a_menu_text_selected->texture[0].data.text.justify =
+ theme->a_menu_text_disabled->texture[0].data.text.justify =
+ theme->a_menu_text_disabled_selected->texture[0].data.text.justify =
RR_JUSTIFY_LEFT;
theme->a_menu_text_normal->texture[0].data.text.font =
- theme->a_menu_text_disabled->texture[0].data.text.font =
theme->a_menu_text_selected->texture[0].data.text.font =
+ theme->a_menu_text_disabled->texture[0].data.text.font =
+ theme->a_menu_text_disabled_selected->texture[0].data.text.font =
theme->menu_font;
theme->a_menu_text_normal->texture[0].data.text.color = theme->menu_color;
- theme->a_menu_text_disabled->texture[0].data.text.color =
- theme->menu_disabled_color;
theme->a_menu_text_selected->texture[0].data.text.color =
theme->menu_selected_color;
+ theme->a_menu_text_disabled->texture[0].data.text.color =
+ theme->menu_disabled_color;
+ theme->a_menu_text_disabled_selected->texture[0].data.text.color =
+ theme->menu_disabled_selected_color;
if (!FIND(shadow, L("menu","inactive","shadow","offset"),
theme->a_menu_text_normal))
@@ -871,6 +902,12 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
theme->a_menu_text_disabled->texture[0].data.text.shadow_offset_x =
theme->a_menu_text_disabled->texture[0].data.text.shadow_offset_y =
0;
+ if (!FIND(shadow, L("menu","activedisabled","shadow","offset"),
+ theme->a_menu_text_disabled_selected))
+ theme->a_menu_text_disabled_selected->
+ texture[0].data.text.shadow_offset_x = 0;
+ theme->a_menu_text_disabled_selected->
+ texture[0].data.text.shadow_offset_y = 0;
theme->a_menu_text_normal->texture[0].data.text.shadow_color =
theme->menu_text_normal_shadow_color;
theme->a_menu_text_normal->texture[0].data.text.shadow_alpha =
@@ -883,6 +920,10 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
theme->menu_text_disabled_shadow_color;
theme->a_menu_text_disabled->texture[0].data.text.shadow_alpha =
theme->menu_text_disabled_shadow_alpha;
+ theme->a_menu_text_disabled_selected->texture[0].data.text.shadow_color =
+ theme->menu_text_disabled_selected_shadow_color;
+ theme->a_menu_text_disabled_selected->texture[0].data.text.shadow_alpha =
+ theme->menu_text_disabled_selected_shadow_alpha;
theme->a_disabled_focused_max->texture[0].type =
theme->a_disabled_unfocused_max->texture[0].type =
@@ -1119,7 +1160,7 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
{
gint ft, fb, fl, fr, ut, ub, ul, ur;
- RrAppearance *a, *b, *c;
+ RrAppearance *a, *b, *c, *d;
/* caluclate the font heights*/
a = theme->a_focused_label;
@@ -1138,11 +1179,14 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name,
a = theme->a_menu_text_normal;
b = theme->a_menu_text_selected;
c = theme->a_menu_text_disabled;
+ d = theme->a_menu_text_disabled_selected;
theme->menu_font_height =
RrFontHeight(theme->menu_font,
MAX(a->texture[0].data.text.shadow_offset_y,
MAX(b->texture[0].data.text.shadow_offset_y,
- c->texture[0].data.text.shadow_offset_y)));
+ MAX(c->texture[0].data.text.shadow_offset_y,
+ d->texture[0].data.text.shadow_offset_y
+ ))));
RrMargins(theme->a_focused_label, &fl, &ft, &fr, &fb);
RrMargins(theme->a_unfocused_label, &ul, &ut, &ur, &ub);
@@ -1196,8 +1240,9 @@ void RrThemeFree(RrTheme *theme)
RrColorFree(theme->titlebut_toggled_unfocused_unpressed_color);
RrColorFree(theme->menu_title_color);
RrColorFree(theme->menu_color);
- RrColorFree(theme->menu_disabled_color);
RrColorFree(theme->menu_selected_color);
+ RrColorFree(theme->menu_disabled_color);
+ RrColorFree(theme->menu_disabled_selected_color);
RrColorFree(theme->title_focused_shadow_color);
RrColorFree(theme->title_unfocused_shadow_color);
RrColorFree(theme->osd_color);
@@ -1206,6 +1251,7 @@ void RrThemeFree(RrTheme *theme)
RrColorFree(theme->menu_text_normal_shadow_color);
RrColorFree(theme->menu_text_selected_shadow_color);
RrColorFree(theme->menu_text_disabled_shadow_color);
+ RrColorFree(theme->menu_text_disabled_selected_shadow_color);
g_free(theme->def_win_icon);
@@ -1310,11 +1356,13 @@ void RrThemeFree(RrTheme *theme)
RrAppearanceFree(theme->a_menu_title);
RrAppearanceFree(theme->a_menu_text_title);
RrAppearanceFree(theme->a_menu_normal);
- RrAppearanceFree(theme->a_menu_disabled);
RrAppearanceFree(theme->a_menu_selected);
+ RrAppearanceFree(theme->a_menu_disabled);
+ RrAppearanceFree(theme->a_menu_disabled_selected);
RrAppearanceFree(theme->a_menu_text_normal);
- RrAppearanceFree(theme->a_menu_text_disabled);
RrAppearanceFree(theme->a_menu_text_selected);
+ RrAppearanceFree(theme->a_menu_text_disabled);
+ RrAppearanceFree(theme->a_menu_text_disabled_selected);
RrAppearanceFree(theme->a_menu_bullet_normal);
RrAppearanceFree(theme->a_menu_bullet_selected);
RrAppearanceFree(theme->a_clear);
diff --git a/render/theme.h b/render/theme.h
index b0caa171..3359d04a 100644
--- a/render/theme.h
+++ b/render/theme.h
@@ -78,8 +78,9 @@ struct _RrTheme {
RrColor *titlebut_unfocused_unpressed_color;
RrColor *menu_title_color;
RrColor *menu_color;
- RrColor *menu_disabled_color;
RrColor *menu_selected_color;
+ RrColor *menu_disabled_color;
+ RrColor *menu_disabled_selected_color;
RrColor *title_focused_shadow_color;
gchar title_focused_shadow_alpha;
RrColor *title_unfocused_shadow_color;
@@ -95,6 +96,8 @@ struct _RrTheme {
gchar menu_text_selected_shadow_alpha;
RrColor *menu_text_disabled_shadow_color;
gchar menu_text_disabled_shadow_alpha;
+ RrColor *menu_text_disabled_selected_shadow_color;
+ gchar menu_text_disabled_selected_shadow_alpha;
/* style settings - pics */
RrPixel32 *def_win_icon; /* 48x48 RGBA */
@@ -206,10 +209,12 @@ struct _RrTheme {
RrAppearance *a_menu_title;
RrAppearance *a_menu;
RrAppearance *a_menu_normal;
- RrAppearance *a_menu_disabled;
RrAppearance *a_menu_selected;
+ RrAppearance *a_menu_disabled;
+ RrAppearance *a_menu_disabled_selected;
RrAppearance *a_menu_text_normal;
RrAppearance *a_menu_text_disabled;
+ RrAppearance *a_menu_text_disabled_selected;
RrAppearance *a_menu_text_selected;
RrAppearance *a_menu_bullet_normal;
RrAppearance *a_menu_bullet_selected;
diff --git a/themes/Artwiz-boxed/openbox-3/bullet.xbm b/themes/Artwiz-boxed/openbox-3/bullet.xbm
deleted file mode 100644
index 5bab764e..00000000
--- a/themes/Artwiz-boxed/openbox-3/bullet.xbm
+++ /dev/null
@@ -1,4 +0,0 @@
-#define bullet_blank_width 7
-#define bullet_blank_height 7
-static unsigned char bullet_blank_bits[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
diff --git a/themes/Artwiz-boxed/openbox-3/themerc.xml b/themes/Artwiz-boxed/openbox-3/themerc.xml
index 9c360b65..5ed34474 100644
--- a/themes/Artwiz-boxed/openbox-3/themerc.xml
+++ b/themes/Artwiz-boxed/openbox-3/themerc.xml
@@ -144,5 +144,10 @@
+
+
+
+
+
diff --git a/themes/Bear2/openbox-3/themerc.xml b/themes/Bear2/openbox-3/themerc.xml
index bda587da..3173853e 100644
--- a/themes/Bear2/openbox-3/themerc.xml
+++ b/themes/Bear2/openbox-3/themerc.xml
@@ -48,7 +48,7 @@
-
+
@@ -97,7 +97,7 @@
-
+
@@ -137,6 +137,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/themes/Clearlooks-Olive/openbox-3/themerc.xml b/themes/Clearlooks-Olive/openbox-3/themerc.xml
index d2d92822..c57b26ec 100644
--- a/themes/Clearlooks-Olive/openbox-3/themerc.xml
+++ b/themes/Clearlooks-Olive/openbox-3/themerc.xml
@@ -148,8 +148,17 @@
-
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/Clearlooks/openbox-3/themerc.xml b/themes/Clearlooks/openbox-3/themerc.xml
index aae4caef..f4ab5f84 100644
--- a/themes/Clearlooks/openbox-3/themerc.xml
+++ b/themes/Clearlooks/openbox-3/themerc.xml
@@ -148,8 +148,16 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/themes/Mikachu/openbox-3/themerc.xml b/themes/Mikachu/openbox-3/themerc.xml
index 515015c3..b1ee489e 100644
--- a/themes/Mikachu/openbox-3/themerc.xml
+++ b/themes/Mikachu/openbox-3/themerc.xml
@@ -12,7 +12,7 @@
left
-
+
-
+
+
+
-
-
+
@@ -70,7 +73,8 @@
-
+
+
@@ -99,13 +103,16 @@
-
+
+
+
+
+
+
+
+
diff --git a/tools/themetoxml/themetoxml.c b/tools/themetoxml/themetoxml.c
index 77e91be3..43cbd6ff 100644
--- a/tools/themetoxml/themetoxml.c
+++ b/tools/themetoxml/themetoxml.c
@@ -422,8 +422,10 @@ int main(int argc, char **argv)
COLOR3("menu","inactive","primary",i,j,k,255);
if (read_color(db, "menu.items.disabled.text.color",
- &i, &j, &k))
+ &i, &j, &k)) {
COLOR3("menu","disabled","primary",i,j,k,255);
+ COLOR4("menu","activedisabled","text","primary",i,j,k,255);
+ }
if (read_color(db, "menu.items.active.text.color",
&i, &j, &k))
@@ -439,6 +441,7 @@ int main(int argc, char **argv)
APPEARANCE3("window.inactive.grip.bg", "window", "inactive", "grip");
APPEARANCE2("menu.items.bg", "menu", "entries");
APPEARANCE2("menu.items.active.bg", "menu", "active");
+ APPEARANCE2("menu.items.active.bg", "menu", "activedisabled");
APPEARANCE2("menu.title.bg", "menu", "title");
APPEARANCE4("window.active.button.disabled.bg",
@@ -538,6 +541,8 @@ int main(int argc, char **argv)
ATTR5("menu","active","text","shadow","offset","y",NUM(i));
ATTR4("menu","disabled","shadow","offset","x",NUM(i));
ATTR4("menu","disabled","shadow","offset","y",NUM(i));
+ ATTR5("menu","activedisabled","text","shadow","offset","x",NUM(i));
+ ATTR5("menu","activedisabled","text","shadow","offset","y",NUM(i));
}
if ((p = strstr(s, "shadowtint=")))
{
@@ -547,6 +552,7 @@ int main(int argc, char **argv)
COLOR4("menu","inactive","shadow","primary",j,j,j,i);
COLOR5("menu","active","text","shadow","primary",j,j,j,i);
COLOR4("menu","disabled","shadow","primary",j,j,j,i);
+ COLOR5("menu","activedisabled","text","shadow","primary",j,j,j,i);
}
}