X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions.h;h=477e4ba19e85c902e85997bb1d8ee3bba5cef5c5;hb=1d9991a0cd9b04dfa96a19bc73b40f01651de478;hp=b55a7f077ce6b851f60829dba7bc5336fb31aa02;hpb=8becd1f93f9a8a448ca61372e50bd8bf79e7ab9d;p=chaz%2Fopenbox diff --git a/openbox/actions.h b/openbox/actions.h index b55a7f07..477e4ba1 100644 --- a/openbox/actions.h +++ b/openbox/actions.h @@ -37,54 +37,27 @@ typedef gboolean (*ObActionsRunFunc)(ObActionsData *data, gpointer options); typedef gboolean (*ObActionsInteractiveInputFunc)(guint initial_state, XEvent *e, - gpointer options); + gpointer options, + 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; -}; - -struct _ObActionsClientData { - ObActionsType type; - ObActionsAnyData any; + gint button; - 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, @@ -106,9 +79,17 @@ void actions_act_unref(ObActionsAct *act); */ void actions_run_acts(GSList *acts, ObUserAction uact, - Time time, guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client); + +gboolean actions_interactive_act_running(); +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);