X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=9433f3f454febc6aae878c5bcf7da91c476d03db;hb=71b7b043a2ca6fc99a41a1e47e76f96eb7218ad9;hp=3ff1fd1d877055747c7d24f188a793d40f5c45cd;hpb=549627402cd03b2120ff5c8314abfdd143218e3b;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 3ff1fd1d..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; @@ -1044,6 +1054,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) @@ -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)