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
);