don't take KeyRelease events for menus until they receive a KeyPress event first. avoid using the key binding used to show the menu to execute something inside it.
Dana Jansens danakj@orodu.net
2 files changed,
8 insertions(+),
1 deletions(-)
M
openbox/event.c
→
openbox/event.c
@@ -1671,6 +1671,8 @@ g_assert_not_reached(); /* there is no active menu */
/* Allow control while going thru the menu */ else if (ev->type == KeyPress && (state & ~ControlMask) == 0) { + frame->got_press = TRUE; + if (keycode == ob_keycode(OB_KEY_ESCAPE)) { menu_frame_hide_all(); ret = TRUE;@@ -1704,7 +1706,7 @@ get sent to the focused application.
Allow ControlMask only, and don't bother if the menu is empty */ else if (ev->type == KeyRelease && (state & ~ControlMask) == 0 && - frame->entries) + frame->entries && frame->got_press) { if (keycode == ob_keycode(OB_KEY_RETURN)) { /* Enter runs the active item or goes into the submenu.