all repos — openbox @ 81cc0749f8fe6e5a1f3474c07b26de2c49648526

openbox fork - make it a bit more like ryudo

Menus put themselves into the stacking list.
Clicking on the menu (but not on an entry) will raise it.
Dana Jansens danakj@orodu.net
commit

81cc0749f8fe6e5a1f3474c07b26de2c49648526

parent

58cfbb7f8419e084af6b6b8b00c88ed270c29e88

2 files changed, 12 insertions(+), 1 deletions(-)

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

@@ -874,6 +874,11 @@ case ButtonPress:

g_message("BUTTON PRESS"); if (e->xbutton.button == 3) menu_hide(menu); + else if (e->xbutton.button == 1) { + entry = menu_find_entry(menu, e->xbutton.window); + if (!entry) + stacking_raise(MENU_AS_WINDOW(menu)); + } break; case ButtonRelease: g_message("BUTTON RELEASED");

@@ -894,6 +899,7 @@ e->xbutton.x < (signed)(w+b) &&

e->xbutton.y < (signed)(h+b)) { menu_entry_fire(entry); } + } break; case EnterNotify:

@@ -909,7 +915,6 @@

menu_entry_render(entry); } break; - } } }
M openbox/menu.copenbox/menu.c

@@ -38,6 +38,8 @@ g_hash_table_remove(menu_map, &self->title);

g_hash_table_remove(menu_map, &self->frame); g_hash_table_remove(menu_map, &self->items); + stacking_remove(self); + appearance_free(self->a_title); XDestroyWindow(ob_display, self->title); XDestroyWindow(ob_display, self->frame);

@@ -197,6 +199,9 @@ g_hash_table_insert(menu_map, &self->frame, self);

g_hash_table_insert(menu_map, &self->title, self); g_hash_table_insert(menu_map, &self->items, self); g_hash_table_insert(menu_hash, g_strdup(name), self); + + stacking_add(self); + return self; }

@@ -355,6 +360,7 @@ /* XXX gotta add to the stacking list first!

stacking_raise(MENU_AS_WINDOW(self)); */ XMapWindow(ob_display, self->frame); + stacking_raise(MENU_AS_WINDOW(self)); self->shown = TRUE; } else if (self->shown && self->open_submenu) { menu_hide(self->open_submenu);