]> Dogcows Code - chaz/openbox/blobdiff - openbox/menuframe.c
perhaps fix problems of being left in menus without being able to control openbox
[chaz/openbox] / openbox / menuframe.c
index 95168d4e7ea908af1d3f947c3ded8044d4719191..09fce0511a7ec6941952b067ecaec64b6351af99 100644 (file)
@@ -591,6 +591,16 @@ void menu_frame_show(ObMenuFrame *self, ObMenuFrame *parent)
     if (g_list_find(menu_frame_visible, self))
         return;
 
+    if (menu_frame_visible == NULL) {
+        /* no menus shown yet */
+        if (!grab_pointer(TRUE, OB_CURSOR_NONE))
+            return;
+        if (!grab_keyboard(TRUE)) {
+            grab_pointer(FALSE, OB_CURSOR_NONE);
+            return;
+        }
+    }
+
     if (parent) {
         if (parent->child)
             menu_frame_hide(parent->child);
@@ -598,12 +608,6 @@ void menu_frame_show(ObMenuFrame *self, ObMenuFrame *parent)
     }
     self->parent = parent;
 
-    if (menu_frame_visible == NULL) {
-        /* no menus shown yet */
-        grab_pointer(TRUE, OB_CURSOR_NONE);
-        grab_keyboard(TRUE);
-    }
-
     /* determine if the underlying menu is already visible */
     for (it = menu_frame_visible; it; it = g_list_next(it)) {
         ObMenuFrame *f = it->data;
This page took 0.022922 seconds and 4 git commands to generate.