all repos — openbox @ f37a9190959279d0f3c1cd7e62099e74930d36d2

openbox fork - make it a bit more like ryudo

Menu stuff.
Testing may begin.
Scott Moynes smoynes@nexus.carleton.ca
commit

f37a9190959279d0f3c1cd7e62099e74930d36d2

parent

632b2af7a8283eff025456d3bb39a362311f4182

3 files changed, 23 insertions(+), 13 deletions(-)

jump to
M openbox/event.copenbox/event.c

@@ -1008,6 +1008,7 @@ e->xbutton.x_root,

e->xbutton.y_root); break; } + break; } }
M openbox/menu.copenbox/menu.c

@@ -297,7 +297,7 @@ void menu_show_full(ObMenu *self, int x, int y, ObClient *client)

{ g_assert(self != NULL); - menu_render(self); + self->update(self); self->client = client;

@@ -319,7 +319,6 @@ self->shown = FALSE;

if (self->open_submenu) menu_hide(self->open_submenu); if (self->parent && self->parent->open_submenu == self) { - self->over = NULL; self->parent->open_submenu = NULL; }

@@ -328,6 +327,11 @@ grab_keyboard(FALSE);

grab_pointer(FALSE, None); } menu_visible = g_list_remove(menu_visible, self); + if (self->over) { + ((ObMenuEntry *)self->over->data)->hilite = FALSE; + menu_entry_render(self->over->data); + self->over = NULL; + } } }

@@ -385,7 +389,7 @@ unsigned int y)

{ ObMenu *m; - if (button > 3) return; + if (button != 1) return; if (self->action) { self->action->data.any.c = self->parent->client;

@@ -461,7 +465,7 @@ x = self->parent->location.x + self->parent->size.width +

ob_rr_theme->bwidth - ob_rr_theme->menu_overlap; /* need to get the width. is this bad?*/ - menu_render(self->submenu); + self->parent->update(self->submenu); a = screen_physical_area_monitor(self->parent->xin_area);

@@ -485,6 +489,7 @@

void menu_control_keyboard_nav(unsigned int key) { static ObMenu *current_menu = NULL; + ObMenuEntry *e = NULL; ObKey obkey = OB_NUM_KEYS;

@@ -532,24 +537,28 @@

break; } case OB_KEY_RIGHT: { - ObMenuEntry *e; if (current_menu->over == NULL) return; - e = (ObMenuEntry *)current_menu->over->data; if (e->submenu) { current_menu = e->submenu; current_menu->over = current_menu->entries; if (current_menu->over) current_menu->mouseover(current_menu->over->data, TRUE); - } else { - current_menu->mouseover(e, FALSE); - current_menu->over = NULL; - - /* zero is enter */ - menu_entry_fire(e, 0, 0, 0); } break; + } + + case OB_KEY_RETURN: { + if (current_menu->over == NULL) + return; + e = (ObMenuEntry *)current_menu->over->data; + + current_menu->mouseover(e, FALSE); + current_menu->over = NULL; + /* zero is enter */ + menu_entry_fire(e, 0, 0, 0); + } case OB_KEY_LEFT: { if (current_menu->over != NULL) {
M plugins/menu/client_menu.cplugins/menu/client_menu.c

@@ -52,7 +52,7 @@ e = menu_entry_new(screen_desktop_names[i], a);

menu_add_entry(self, e); } - self->update(self); + menu_render(self); } }