X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=9433f3f454febc6aae878c5bcf7da91c476d03db;hb=1ff042579e2cbe367807ed6c8a15e71dfae2a526;hp=e9e85f0be2c3ef7efbc576f9955573aba888aa57;hpb=7af1c6a9c3a57f3ded34fad3f9f4a30fe377a65e;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index e9e85f0b..9433f3f4 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1001,6 +1001,7 @@ static void event_handle_menu(Client *client, XEvent *e) else menu_control_mouseover(over, FALSE); menu_entry_render(over); + over = NULL; } /* if (top->hide) @@ -1032,6 +1033,15 @@ static void event_handle_menu(Client *client, XEvent *e) m->location.x, e->xbutton.y_root - m->location.y))) { + if (over) { + if (over->parent->mouseover) + over->parent->mouseover(over, FALSE); + else + menu_control_mouseover(over, FALSE); + menu_entry_render(over); + over = NULL; + } + /* this hides the menu */ menu_entry_fire(entry); } break; @@ -1042,9 +1052,10 @@ static void event_handle_menu(Client *client, XEvent *e) if (over->parent->mouseover) over->parent->mouseover(over, FALSE); else - menu_control_mouseover(over, FALSE); + menu_control_mouseover(over, FALSE); + menu_entry_render(over); + over = NULL; } - menu_entry_render(over); /* if (top->hide) top->hide(top); @@ -1093,31 +1104,32 @@ static void event_handle_menu(Client *client, XEvent *e) } void event_add_fd_handler(event_fd_handler *h) { - g_datalist_id_set_data(&fd_handler_list, h->fd, h); - FD_SET(h->fd, &allset); - max_fd = MAX(max_fd, h->fd); + g_datalist_id_set_data(&fd_handler_list, h->fd, h); + FD_SET(h->fd, &allset); + max_fd = MAX(max_fd, h->fd); } static void find_max_fd_foreach(GQuark n, gpointer data, gpointer max) { - *((unsigned int *)max) = MAX(*((unsigned int *)max), n); + *((unsigned int *)max) = MAX(*((unsigned int *)max), n); } static void find_max_fd() { - int tmpmax = -1; - g_datalist_foreach(&fd_handler_list, find_max_fd_foreach, (gpointer)&tmpmax); - max_fd = MAX(x_fd, tmpmax); + int tmpmax = -1; + g_datalist_foreach(&fd_handler_list, find_max_fd_foreach, + (gpointer)&tmpmax); + max_fd = MAX(x_fd, tmpmax); #ifdef USE_SM - max_fd = MAX(ice_fd, tmpmax); + max_fd = MAX(ice_fd, tmpmax); #endif } void event_remove_fd(int n) { - FD_CLR(n, &allset); - g_datalist_id_remove_data(&fd_handler_list, (GQuark)n); - find_max_fd(); + FD_CLR(n, &allset); + g_datalist_id_remove_data(&fd_handler_list, (GQuark)n); + find_max_fd(); } static void fd_event_handle_foreach(GQuark n, gpointer data, gpointer user_data)