Pass the GravityPoint as const* instead of by value
[mikachu/openbox.git] / openbox / menuframe.h
index 1d5dd0c..7b295b6 100644 (file)
@@ -22,7 +22,8 @@
 
 #include "geom.h"
 #include "window.h"
-#include "render/render.h"
+#include "obrender/render.h"
+#include "obt/keyboard.h"
 
 #include <glib.h>
 
@@ -50,6 +51,7 @@ struct _ObMenuFrame
     ObMenuFrame *parent;
     ObMenuEntryFrame *parent_entry;
     ObMenuFrame *child;
+    ObMenuEntryFrame *child_entry;
 
     GList *entries;
     ObMenuEntryFrame *selected;
@@ -80,6 +82,10 @@ struct _ObMenuFrame
                            menu until it has seen a KeyPress.  this is to
                            avoid having the keybinding used to show the menu
                            end up running something inside the menu */
+    guint press_keycode; /* the KeyCode that was used in the last KeyPress */
+    gboolean press_doexec; /* if the upcoming KeyRelease should be used to
+                              execute the menu item that was selected by the
+                              KeyPress */
 };
 
 struct _ObMenuEntryFrame
@@ -108,12 +114,15 @@ ObMenuFrame* menu_frame_new(struct _ObMenu *menu,
                             struct _ObClient *client);
 void menu_frame_free(ObMenuFrame *self);
 
+ObtIC* menu_frame_ic(ObMenuFrame *self);
+
 void menu_frame_move(ObMenuFrame *self, gint x, gint y);
 void menu_frame_move_on_screen(ObMenuFrame *self, gint x, gint y,
                                gint *dx, gint *dy);
 
-gboolean menu_frame_show_topmenu(ObMenuFrame *self, gint x, gint y,
-                                 gint button);
+gboolean menu_frame_show_topmenu(ObMenuFrame *self, const GravityPoint *pos,
+                                 gint monitor, gboolean mouse,
+                                 gboolean user_positioned);
 gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent,
                                  ObMenuEntryFrame *parent_entry);
 
@@ -126,6 +135,8 @@ void menu_frame_select(ObMenuFrame *self, ObMenuEntryFrame *entry,
                        gboolean immediate);
 void menu_frame_select_previous(ObMenuFrame *self);
 void menu_frame_select_next(ObMenuFrame *self);
+void menu_frame_select_first(ObMenuFrame *self);
+void menu_frame_select_last(ObMenuFrame *self);
 
 ObMenuFrame* menu_frame_under(gint x, gint y);
 ObMenuEntryFrame* menu_entry_frame_under(gint x, gint y);