]> Dogcows Code - chaz/openbox/blobdiff - openbox/menuframe.c
Don't close the menu when you held control even for execute
[chaz/openbox] / openbox / menuframe.c
index 57f2943886767a15a4a11a2f842faf8431897766..afffc837cd836a2e1fb668c326c1913b315f3dca 100644 (file)
@@ -1266,7 +1266,7 @@ void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state)
 
         /* release grabs before executing the shit */
         if (!(state & ControlMask)) {
-            menu_frame_hide_all();
+            event_cancel_all_key_grabs();
             frame = NULL;
         }
 
@@ -1300,7 +1300,7 @@ void menu_frame_select_previous(ObMenuFrame *self)
             }
         }
     }
-    menu_frame_select(self, it ? it->data : NULL, TRUE);
+    menu_frame_select(self, it ? it->data : NULL, FALSE);
 }
 
 void menu_frame_select_next(ObMenuFrame *self)
@@ -1325,5 +1325,37 @@ void menu_frame_select_next(ObMenuFrame *self)
             }
         }
     }
-    menu_frame_select(self, it ? it->data : NULL, TRUE);
+    menu_frame_select(self, it ? it->data : NULL, FALSE);
+}
+
+void menu_frame_select_first(ObMenuFrame *self)
+{
+    GList *it = NULL;
+
+    if (self->entries) {
+        for (it = self->entries; it; it = g_list_next(it)) {
+            ObMenuEntryFrame *e = it->data;
+            if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
+                break;
+            if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
+                break;
+        }
+    }
+    menu_frame_select(self, it ? it->data : NULL, FALSE);
+}
+
+void menu_frame_select_last(ObMenuFrame *self)
+{
+    GList *it = NULL;
+
+    if (self->entries) {
+        for (it = g_list_last(self->entries); it; it = g_list_previous(it)) {
+            ObMenuEntryFrame *e = it->data;
+            if (e->entry->type == OB_MENU_ENTRY_TYPE_SUBMENU)
+                break;
+            if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL)
+                break;
+        }
+    }
+    menu_frame_select(self, it ? it->data : NULL, FALSE);
 }
This page took 0.021687 seconds and 4 git commands to generate.