+typedef struct _ObMenu ObMenu;
+typedef struct _ObMenuEntry ObMenuEntry;
+
+typedef void(*menu_controller_show)(ObMenu *self, int x, int y,
+ struct _ObClient *);
+typedef void(*menu_controller_update)(ObMenu *self);
+typedef void(*menu_controller_mouseover)(ObMenuEntry *self, gboolean enter);
+typedef void(*menu_controller_selected)(ObMenuEntry *entry,
+ unsigned int button,
+ unsigned int x, unsigned int y);
+typedef void(*menu_controller_hide)(ObMenu *self);
+
+
+extern GHashTable *menu_hash;
+extern GList *menu_visible;
+
+struct _ObMenu
+{
+ ObWindow obwin;
+
+ /* The title displayed above the menu.
+ NULL for no titlebar */
+ gchar *label;
+
+ /* Name of the menu.
+ Used in the action showmenu */
+ gchar *name;
+
+ /* ObMenuEntry list */