summaryrefslogtreecommitdiff
path: root/openbox/event.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbox/event.c')
-rw-r--r--openbox/event.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/openbox/event.c b/openbox/event.c
index e198eaa1..15a7a479 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -2006,6 +2006,20 @@ static void event_handle_menu(ObMenuFrame *frame, XEvent *ev)
ObMenuEntryFrame *e;
switch (ev->type) {
+ case MotionNotify:
+ // We need to catch MotionNotify in addition to EnterNotify because
+ // it is possible for the menu to be opened under the mouse cursor, and
+ // moving the mouse should select the item.
+ if ((e = g_hash_table_lookup(menu_frame_map, &ev->xmotion.window))) {
+ if (e->ignore_enters)
+ --e->ignore_enters;
+ else if (!(f = find_active_menu()) ||
+ f == e->frame ||
+ f->parent == e->frame ||
+ f->child == e->frame)
+ menu_frame_select(e->frame, e, FALSE);
+ }
+ break;
case EnterNotify:
if ((e = g_hash_table_lookup(menu_frame_map, &ev->xcrossing.window))) {
if (e->ignore_enters)