]> Dogcows Code - chaz/openbox/blobdiff - openbox/event.c
Handle menu events a little better: don't bother updating a submenu on
[chaz/openbox] / openbox / event.c
index 3ff1fd1d877055747c7d24f188a793d40f5c45cd..9433f3f454febc6aae878c5bcf7da91c476d03db 100644 (file)
@@ -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)
This page took 0.027856 seconds and 4 git commands to generate.