if (e->type == ButtonPress || e->type == ButtonRelease) {
ObWindow *w;
static guint pressed = 0;
- static Window pressed_win = None;
event_sourcetime = event_curtime;
if (prompt && !used)
used = event_handle_prompt(prompt, e);
- if (e->type == ButtonPress) {
+ if (e->type == ButtonPress)
pressed = e->xbutton.button;
- pressed_win = e->xbutton.subwindow;
- }
}
}
else if (e->type == KeyPress || e->type == KeyRelease ||
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)
}
break;
case LeaveNotify:
- /*ignore leaves when we're already in the window */
+ /* ignore leaves when we're already in the window */
if (ev->xcrossing.detail == NotifyInferior)
break;