gboolean *used);
typedef void (*ObActionsInteractiveCancelFunc)(gpointer options);
-typedef enum {
- OB_ACTION_TYPE_GLOBAL,
- OB_ACTION_TYPE_CLIENT
-} ObActionsType;
-
-/* These structures are all castable as eachother */
-
-struct _ObActionsAnyData {
+struct _ObActionsData {
ObUserAction uact;
- Time time;
guint state;
gint x;
gint y;
-};
-
-struct _ObActionsGlobalData {
- ObActionsType type;
- ObActionsAnyData any;
-};
+ gint button;
-struct _ObActionsClientData {
- ObActionsType type;
- ObActionsAnyData any;
-
- struct _ObClient *c;
+ struct _ObClient *client;
ObFrameContext context;
};
-struct _ObActionsData {
- ObActionsType type;
-
- union {
- ObActionsAnyData any;
- ObActionsGlobalData global;
- ObActionsClientData client;
- };
-};
-
void actions_startup(gboolean reconfigure);
void actions_shutdown(gboolean reconfigure);
/*! If the action is interactive, then i_input and i_cancel are not NULL.
Otherwise, they should both be NULL. */
gboolean actions_register(const gchar *name,
- ObActionsType type,
ObActionsDataSetupFunc setup,
ObActionsDataFreeFunc free,
ObActionsRunFunc run,
*/
void actions_run_acts(GSList *acts,
ObUserAction uact,
- Time time,
guint state,
gint x,
gint y,
+ gint button,
ObFrameContext con,
struct _ObClient *client);
void actions_interactive_cancel_act();
gboolean actions_interactive_input_event(XEvent *e);
+
+/*! Function for actions to call when they are moving a client around */
+void actions_client_move(ObActionsData *data, gboolean start);