all repos — openbox @ 8644a47cb76a8188b39ce4c86deb96cd063e8dc4

openbox fork - make it a bit more like ryudo

handle enter/leave events in the menu
Dana Jansens danakj@orodu.net
commit

8644a47cb76a8188b39ce4c86deb96cd063e8dc4

parent

213426194f57bfcf6b0c0d1361871c7ac3ecd02b

1 files changed, 22 insertions(+), 17 deletions(-)

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

@@ -506,6 +506,11 @@ e->xconfigurerequest.value_mask, &xwc);

xerror_set_ignore(FALSE); } + /* crossing events for menu */ + if (e->type == EnterNotify || e->type == LeaveNotify) + if (menu_frame_visible) + event_handle_menu(e); + /* user input (action-bound) events */ if (e->type == ButtonPress || e->type == ButtonRelease || e->type == MotionNotify || e->type == KeyPress ||

@@ -1262,24 +1267,24 @@ else

menu_frame_hide_all(); } break; - case MotionNotify: - if ((f = menu_frame_under(ev->xmotion.x_root, - ev->xmotion.y_root))) { - 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(f, e); - } + case EnterNotify: + if ((e = g_hash_table_lookup(menu_frame_map, &ev->xcrossing.window))) { + if (e->ignore_enters) + --e->ignore_enters; + else + menu_frame_select(e->frame, e); } - { - ObMenuFrame *a; - - a = find_active_menu(); - if (a && a != f && - a->selected->entry->type != OB_MENU_ENTRY_TYPE_SUBMENU) - { - menu_frame_select(a, NULL); - } + 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); + } + 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: