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