summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-05 22:26:59 +0000
committerDana Jansens <danakj@orodu.net>2007-05-05 22:26:59 +0000
commit526560b8a0871cd93f27c32442b3e470ec42ecb3 (patch)
tree80035096ded29fa52d77da71414f2f011920cb23 /openbox
parent8a99fedecd593b7be4b01c053c0d246785ea8b80 (diff)
changes to the client menu, which entries are there, and reorganizing, and renaming.
let you highlight disabled menu entries, they just aren't runable of course, and add the activedisabled theme element for these entries. add the all desktops button picture to "All desktops" in the client menu update the themes for the new element, and some changes to make things more readable-better contrast. CLEARLOOKS-OLIVE is now DIFFERENT FROM THE 3.4 BRANCH SO DON'T RE-RUN THEMETOXML ON IT :( :( yeah.. i think that is everything?
Diffstat (limited to 'openbox')
-rw-r--r--openbox/client_menu.c82
-rw-r--r--openbox/event.c6
-rw-r--r--openbox/menu.c6
-rw-r--r--openbox/menu.h3
-rw-r--r--openbox/menuframe.c74
-rw-r--r--openbox/menuframe.h6
6 files changed, 111 insertions, 66 deletions
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,57 +266,66 @@ 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);
+ acts = g_slist_prepend(NULL, action_from_string
+ ("ToggleMaximizeFull",
+ OB_USER_ACTION_MENU_SELECTION));
+ 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_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;
- menu_add_submenu(menu, CLIENT_LAYER, LAYER_MENU_NAME);
+ acts = g_slist_prepend(NULL, action_from_string
+ ("Move", OB_USER_ACTION_MENU_SELECTION));
+ menu_add_normal(menu, CLIENT_MOVE, _("&Move"), acts, TRUE);
+
+ acts = g_slist_prepend(NULL, action_from_string
+ ("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_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;
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 = 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_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);
+ 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"), acts, TRUE);
+ 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_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;
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_normal(menu, CLIENT_DECORATE, _("Un/&Decorate"), acts, TRUE);
menu_add_separator(menu, -1, NULL);
- acts = g_slist_prepend(NULL, action_from_string
- ("Move", OB_USER_ACTION_MENU_SELECTION));
- menu_add_normal(menu, CLIENT_MOVE, _("&Move"), acts, TRUE);
+ menu_add_submenu(menu, CLIENT_SEND_TO, SEND_TO_MENU_NAME);
- acts = g_slist_prepend(NULL, action_from_string
- ("Resize", OB_USER_ACTION_MENU_SELECTION));
- menu_add_normal(menu, CLIENT_RESIZE, _("Resi&ze"), acts, TRUE);
+ menu_add_submenu(menu, CLIENT_LAYER, LAYER_MENU_NAME);
menu_add_separator(menu, -1, NULL);
@@ -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_disabled_selected : self->a_text_disabled) :
+ /* enabled */
(self == self->frame->selected ?
- self->a_text_selected :
- self->a_text_normal));
+ 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_disabled_selected : e->a_text_disabled) :
+ /* enabled */
(e == self->selected ?
- e->a_text_selected :
- e->a_text_normal));
+ 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;
};