Improve menu behaviour when clicking on grandparents.
authorMikael Magnusson <mikachu@comhem.se>
Mon, 10 Dec 2007 03:28:55 +0000 (04:28 +0100)
committerMikael Magnusson <mikachu@comhem.se>
Thu, 7 Feb 2008 15:06:36 +0000 (16:06 +0100)
Some time ago the menus were changed to not trigger on mouseover on a grandparent or higher
so that you wouldn't lose a carefully navigated menu structure. Clicking on an item opens
it though. It used to be on ButtonRelease but now it is on ButtonPress. Additionally, a Press
now causes grandchildren to be closed when clicking on already selected parts of the hierarchy.

openbox/event.c

index 4fbb97c..cedac2e 100644 (file)
@@ -1701,7 +1701,7 @@ static gboolean event_handle_menu_input(XEvent *ev)
 {
     gboolean ret = FALSE;
 
-    if (ev->type == ButtonRelease) {
+    if (ev->type == ButtonRelease || ev->type == ButtonPress) {
         ObMenuEntryFrame *e;
 
         if (menu_hide_delay_reached() &&
@@ -1710,10 +1710,13 @@ static gboolean event_handle_menu_input(XEvent *ev)
             if ((e = menu_entry_frame_under(ev->xbutton.x_root,
                                             ev->xbutton.y_root)))
             {
+                if (ev->type == ButtonPress && e->frame->child)
+                    menu_frame_select(e->frame->child, NULL, TRUE);
                 menu_frame_select(e->frame, e, TRUE);
-                menu_entry_frame_execute(e, ev->xbutton.state);
+                if (ev->type == ButtonRelease)
+                    menu_entry_frame_execute(e, ev->xbutton.state);
             }
-            else
+            else if (ev->type == ButtonRelease)
                 menu_frame_hide_all();
         }
         ret = TRUE;