all repos — openbox @ b6897feb409e14b3bfb71724a72f52e798f5a3ef

openbox fork - make it a bit more like ryudo

better event handling for menus
Dana Jansens danakj@orodu.net
commit

b6897feb409e14b3bfb71724a72f52e798f5a3ef

parent

957963e272be1fba1e06dd2bdcfa9a4348121baf

2 files changed, 7 insertions(+), 11 deletions(-)

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

@@ -1276,17 +1276,12 @@ menu_frame_select(e->frame, e);

} break; case LeaveNotify: - if ((e = g_hash_table_lookup(menu_frame_map, &ev->xcrossing.window))) { - if (e->entry->type != OB_MENU_ENTRY_TYPE_SUBMENU) - menu_frame_select(e->frame, NULL); + if ((e = g_hash_table_lookup(menu_frame_map, &ev->xcrossing.window)) && + (f = find_active_menu()) && f->selected == e && + e->entry->type != OB_MENU_ENTRY_TYPE_SUBMENU) + { + menu_frame_select(e->frame, NULL); } - case MotionNotify: - if ((e = menu_entry_frame_under(ev->xmotion.x_root, - ev->xmotion.y_root))) { - /* XXX menu_frame_entry_move_on_screen(f); */ - menu_frame_select(e->frame, e); - } - break; case KeyPress: if (ev->xkey.keycode == ob_keycode(OB_KEY_ESCAPE)) menu_frame_hide_all();
M openbox/menuframe.copenbox/menuframe.c

@@ -738,7 +738,8 @@ }

XMapWindow(ob_display, self->window); - if (screen_pointer_pos(&dx, &dy) && (e = menu_entry_frame_under(dx, dy))) + if (screen_pointer_pos(&dx, &dy) && (e = menu_entry_frame_under(dx, dy)) && + e->frame == self) ++e->ignore_enters; return TRUE;