]> Dogcows Code - chaz/openbox/blobdiff - openbox/menu.h
add some interesection shit, and RECT_LEFT/RIGHT/TOP/BOTTOM
[chaz/openbox] / openbox / menu.h
index f2aaf1ff8021b22108c26032c995eeee67ad0cd5..5683cb2a292974559fc799986810de9cc680d070 100644 (file)
@@ -20,11 +20,10 @@ typedef struct _ObSubmenuMenuEntry ObSubmenuMenuEntry;
 typedef struct _ObSeparatorMenuEntry ObSeparatorMenuEntry;
 
 typedef void (*ObMenuUpdateFunc)(struct _ObMenuFrame *frame, gpointer data);
-typedef void (*ObMenuExecuteFunc)(struct _ObMenuEntry *entry, gpointer data);
+typedef void (*ObMenuExecuteFunc)(struct _ObMenuEntry *entry,
+                                  guint state, gpointer data);
 typedef void (*ObMenuDestroyFunc)(struct _ObMenu *menu, gpointer data);
 
-extern ObParseInst *menu_parse_inst;
-
 struct _ObMenu
 {
     /* Name of the menu. Used in the showmenu action. */
@@ -32,6 +31,9 @@ struct _ObMenu
     /* Displayed title */
     gchar *title;
 
+    /* Command to execute to rebuild the menu */
+    gchar *execute;
+
     /* ObMenuEntry list */
     GList *entries;
 
@@ -41,6 +43,9 @@ struct _ObMenu
     ObMenuUpdateFunc update_func;
     ObMenuExecuteFunc execute_func;
     ObMenuDestroyFunc destroy_func;
+
+    /* Pipe-menu parent, we get destroyed when it is destroyed */
+    ObMenu *pipe_creator;
 };
 
 typedef enum
@@ -63,6 +68,12 @@ struct _ObNormalMenuEntry {
     gint icon_width;
     gint icon_height;
     RrPixel32 *icon_data;
+
+    /* Mask icon */
+    RrPixmapMask *mask;
+    RrColor *mask_normal_color;
+    RrColor *mask_disabled_color;
+    RrColor *mask_selected_color;
 };
 
 struct _ObSubmenuMenuEntry {
@@ -88,12 +99,15 @@ struct _ObMenuEntry
     } data;
 };
 
-void menu_startup();
-void menu_shutdown();
+void menu_startup(gboolean reconfig);
+void menu_shutdown(gboolean reconfig);
 
 ObMenu* menu_new(gchar *name, gchar *title, gpointer data);
 void menu_free(ObMenu *menu);
 
+/* Repopulate a pipe-menu by running its command */
+void menu_pipe_execute(ObMenu *self);
+
 void menu_show(gchar *name, gint x, gint y, struct _ObClient *client);
 
 void menu_set_update_func(ObMenu *menu, ObMenuUpdateFunc func);
This page took 0.026157 seconds and 4 git commands to generate.