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 void action_showmenu_startup()
14 actions_register("ShowMenu",
21 static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node)
26 o = g_new0(Options, 1);
28 if ((n = parse_find_node("menu", node)))
29 o->name = parse_string(doc, n);
33 static void free_func(gpointer options)
43 /* Always return FALSE because its not interactive */
44 static gboolean run_func(ObActionsData *data, gpointer options)
48 /* you cannot call ShowMenu from inside a menu */
49 if (data->uact == OB_USER_ACTION_MENU_SELECTION) return FALSE;
52 gboolean mouse = (data->uact == OB_USER_ACTION_MOUSE_PRESS ||
53 data->uact == OB_USER_ACTION_MOUSE_RELEASE ||
54 data->uact == OB_USER_ACTION_MOUSE_CLICK ||
55 data->uact == OB_USER_ACTION_MOUSE_DOUBLE_CLICK ||
56 data->uact == OB_USER_ACTION_MOUSE_MOTION);
58 menu_show(o->name, data->x, data->y, mouse, data->client);