]> Dogcows Code - chaz/openbox/blobdiff - openbox/menu.h
Introducing the icon cache.
[chaz/openbox] / openbox / menu.h
index 6288d870e9cd22ea66cf9725b5989e6f221e5223..7e11545de0d89318631ca9b2c763f6fb10450772 100644 (file)
@@ -19,7 +19,6 @@
 #ifndef __menu_h
 #define __menu_h
 
-#include "action.h"
 #include "window.h"
 #include "geom.h"
 #include "render/render.h"
@@ -44,7 +43,7 @@ typedef gboolean (*ObMenuUpdateFunc)(struct _ObMenuFrame *frame,
 typedef void (*ObMenuExecuteFunc)(struct _ObMenuEntry *entry,
                                   struct _ObMenuFrame *frame,
                                   struct _ObClient *client,
-                                  guint state, gpointer data, Time time);
+                                  guint state, gpointer data);
 typedef void (*ObMenuDestroyFunc)(struct _ObMenu *menu, gpointer data);
 /*! @param x is the mouse x coordinate. on return it should be the x coordinate
              for the menu
@@ -52,7 +51,7 @@ typedef void (*ObMenuDestroyFunc)(struct _ObMenu *menu, gpointer data);
              for the menu
 */
 typedef void (*ObMenuPlaceFunc)(struct _ObMenuFrame *frame, gint *x, gint *y,
-                                gint button, gpointer data);
+                                gboolean mouse, gpointer data);
 
 struct _ObMenu
 {
@@ -65,6 +64,8 @@ struct _ObMenu
     gunichar shortcut;
     /*! The shortcut's position in the string */
     guint shortcut_position;
+    /*! If the shortcut was specified by & and should always be drawn */
+    gboolean shortcut_always_show;
 
     /*! If the shortcut key should be shown in menu entries even when it
       is the first character in the string */
@@ -106,6 +107,8 @@ struct _ObNormalMenuEntry {
     gunichar shortcut;
     /*! The shortcut's position in the string */
     guint shortcut_position;
+    /*! If the shortcut was specified by & and should always be drawn */
+    gboolean shortcut_always_show;
 
     /* state */
     gboolean enabled;
@@ -113,11 +116,9 @@ struct _ObNormalMenuEntry {
     /* List of ObActions */
     GSList *actions;
 
-    /* Icon shit */
-    gint icon_width;
-    gint icon_height;
-    gint icon_alpha;
-    RrPixel32 *icon_data;
+    /* Icon stuff.  If you set this, make sure you RrImageRef() it too. */
+    RrImage *icon;
+    gint     icon_alpha;
 
     /* Mask icon */
     RrPixmapMask *mask;
@@ -125,6 +126,8 @@ struct _ObNormalMenuEntry {
     RrColor *mask_selected_color;
     RrColor *mask_disabled_color;
     RrColor *mask_disabled_selected_color;
+
+    gpointer data;
 };
 
 struct _ObSubmenuMenuEntry {
@@ -159,8 +162,6 @@ void menu_shutdown(gboolean reconfig);
 void menu_entry_ref(ObMenuEntry *self);
 void menu_entry_unref(ObMenuEntry *self);
 
-/*! @param allow_shortcut this should be false when the label is coming from
-           outside data like window or desktop titles */
 ObMenu* menu_new(const gchar *name, const gchar *title,
                  gboolean allow_shortcut_selection, gpointer data);
 void menu_free(ObMenu *menu);
@@ -172,7 +173,7 @@ void menu_clear_pipe_caches();
 
 void menu_show_all_shortcuts(ObMenu *self, gboolean show);
 
-void menu_show(gchar *name, gint x, gint y, gint button,
+void menu_show(gchar *name, gint x, gint y, gboolean mouse,
                struct _ObClient *client);
 gboolean menu_hide_delay_reached();
 
This page took 0.023599 seconds and 4 git commands to generate.