all repos — openbox @ 8944094f7164e2649a235fc699cc03b99355a0c8

openbox fork - make it a bit more like ryudo

Allow selecting menu entries during menuHideDelay if you click again, bug 5501
Mikael Magnusson mikachu@gmail.com
commit

8944094f7164e2649a235fc699cc03b99355a0c8

parent

28e85ea2b27100de4d737347b3460324d7e971e2

3 files changed, 16 insertions(+), 2 deletions(-)

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

@@ -1836,8 +1836,14 @@ {

if ((e = menu_entry_frame_under(ev->xbutton.x_root, ev->xbutton.y_root))) { - if (ev->type == ButtonPress && e->frame->child) - menu_frame_select(e->frame->child, NULL, TRUE); + if (ev->type == ButtonPress) { + /* We know this is a new press, so we don't have to + * block release events anymore */ + menu_hide_delay_reset(); + + if (e->frame->child) + menu_frame_select(e->frame->child, NULL, TRUE); + } menu_frame_select(e->frame, e, TRUE); if (ev->type == ButtonRelease) menu_entry_frame_execute(e, ev->xbutton.state);
M openbox/menu.copenbox/menu.c

@@ -454,6 +454,7 @@ static gboolean menu_hide_delay_func(gpointer data)

{ menu_can_hide = TRUE; menu_timeout_id = 0; + return FALSE; /* no repeat */ }

@@ -516,6 +517,12 @@

gboolean menu_hide_delay_reached(void) { return menu_can_hide; +} + +void menu_hide_delay_reset(void) +{ + if (menu_timeout_id) g_source_remove(menu_timeout_id); + menu_hide_delay_func(NULL); } static ObMenuEntry* menu_entry_new(ObMenu *menu, ObMenuEntryType type, gint id)
M openbox/menu.hopenbox/menu.h

@@ -185,6 +185,7 @@ void menu_show(gchar *name, const GravityPoint *pos, gint monitor,

gboolean mouse, gboolean user_positioned, struct _ObClient *client); gboolean menu_hide_delay_reached(void); +void menu_hide_delay_reset(void); /*! The show function is called right after a menu is shown */ void menu_set_show_func(ObMenu *menu, ObMenuShowFunc func);