-MenuEntry *menu_entry_new_full(const char *label, Action *action,
- const MenuEntryRenderType render_type,
- gpointer render_data, gpointer submenu);
+void menu_startup();
+void menu_shutdown();
+
+void menu_noop();
+
+#define menu_new(l, n, p) \
+ menu_new_full(l, n, p, menu_show_full, menu_render, menu_entry_fire, \
+ menu_hide, menu_control_mouseover)
+
+ObMenu *menu_new_full(char *label, char *name, ObMenu *parent,
+ menu_controller_show show, menu_controller_update update,
+ menu_controller_selected selected,
+ menu_controller_hide hide,
+ menu_controller_mouseover mouseover);
+
+void menu_free(char *name);
+
+void menu_show(char *name, int x, int y, struct _ObClient *client);
+void menu_show_full(ObMenu *menu, int x, int y, struct _ObClient *client);
+
+void menu_hide(ObMenu *self);
+
+void menu_clear(ObMenu *self);
+
+ObMenuEntry *menu_entry_new_full(char *label, Action *action,
+ ObMenuEntryRenderType render_type,
+ gpointer submenu);