1 #include "openbox/actions.h"
8 static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node);
9 static void free_func(gpointer options);
10 static gboolean run_func(ObActionsData *data, gpointer options);
12 static gboolean i_input_func(guint initial_state,
16 static void i_cancel_func(gpointer options);
19 void action_showmenu_startup()
21 actions_register("ShowMenu",
28 static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
33 o = g_new0(Options, 1);
35 if ((n = parse_find_node("menu", node)))
36 o->name = parse_string(doc, n);
40 static void free_func(gpointer options)
50 /* Always return FALSE because its not interactive */
51 static gboolean run_func(ObActionsData *data, gpointer options)
55 /* you cannot call ShowMenu from inside a menu */
56 if (data->uact == OB_USER_ACTION_MENU_SELECTION) return FALSE;
59 gboolean mouse = (data->uact == OB_USER_ACTION_MOUSE_PRESS ||
60 data->uact == OB_USER_ACTION_MOUSE_RELEASE ||
61 data->uact == OB_USER_ACTION_MOUSE_CLICK ||
62 data->uact == OB_USER_ACTION_MOUSE_DOUBLE_CLICK ||
63 data->uact == OB_USER_ACTION_MOUSE_MOTION);
65 menu_show(o->name, data->x, data->y, mouse, data->client);