diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-06-22 02:01:45 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-06-22 02:01:45 +0000 |
| commit | 8becd1f93f9a8a448ca61372e50bd8bf79e7ab9d (patch) | |
| tree | 7f0e16879788922122f18c8d01edb6d2a5ae3f90 /openbox/actions.h | |
| parent | 314c0566371d83305d723c883884555a24cc0ad8 (diff) | |
add interactive action functions. some other changes to stuff that wasnt going to work
Diffstat (limited to 'openbox/actions.h')
| -rw-r--r-- | openbox/actions.h | 50 |
1 files changed, 17 insertions, 33 deletions
diff --git a/openbox/actions.h b/openbox/actions.h index 2cafa306..b55a7f07 100644 --- a/openbox/actions.h +++ b/openbox/actions.h @@ -30,31 +30,19 @@ typedef struct _ObActionsGlobalData ObActionsGlobalData; typedef struct _ObActionsClientData ObActionsClientData; typedef struct _ObActionsSelectorData ObActionsSelectorData; -typedef enum { - OB_ACTION_DONE, - OB_ACTION_CANCELLED, - OB_ACTION_INTERACTING, - OB_NUM_ACTIONS_INTERACTIVE_STATES -} ObActionsInteractiveState; - typedef gpointer (*ObActionsDataSetupFunc)(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); typedef void (*ObActionsDataFreeFunc)(gpointer options); -typedef void (*ObActionsRunFunc)(ObActionsData *data, +typedef gboolean (*ObActionsRunFunc)(ObActionsData *data, gpointer options); - -/* - The theory goes: - - 06:10 (@dana) hm i think there are 3 types of actions - 06:10 (@dana) global actions, window actions, and selector actions - 06:11 (@dana) eg show menu/exit, raise/focus, and cycling/directional/expose -*/ +typedef gboolean (*ObActionsInteractiveInputFunc)(guint initial_state, + XEvent *e, + gpointer options); +typedef void (*ObActionsInteractiveCancelFunc)(gpointer options); typedef enum { OB_ACTION_TYPE_GLOBAL, - OB_ACTION_TYPE_CLIENT, - OB_ACTION_TYPE_SELECTOR + OB_ACTION_TYPE_CLIENT } ObActionsType; /* These structures are all castable as eachother */ @@ -63,7 +51,6 @@ struct _ObActionsAnyData { ObUserAction uact; Time time; guint state; - guint button; gint x; gint y; }; @@ -81,14 +68,6 @@ struct _ObActionsClientData { ObFrameContext context; }; -struct _ObActionsSelectorData { - ObActionsType type; - ObActionsAnyData any; - - ObActionsInteractiveState interactive; - GSList *actions; -}; - struct _ObActionsData { ObActionsType type; @@ -96,35 +75,40 @@ struct _ObActionsData { ObActionsAnyData any; ObActionsGlobalData global; ObActionsClientData client; - ObActionsSelectorData selector; }; }; 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); + ObActionsRunFunc run, + ObActionsInteractiveInputFunc i_input, + ObActionsInteractiveCancelFunc i_cancel); ObActionsAct* actions_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); ObActionsAct* actions_parse_string(const gchar *name); +gboolean actions_act_is_interactive(ObActionsAct *act); + void actions_act_ref(ObActionsAct *act); void actions_act_unref(ObActionsAct *act); -/*! Pass in a GSList of ObActionsAct's to be run */ +/*! Pass in a GSList of ObActionsAct's to be run. + @return TRUE if an action is in interactive state, FALSE is none are +*/ void actions_run_acts(GSList *acts, ObUserAction uact, Time time, guint state, - guint button, gint x, gint y, ObFrameContext con, - struct _ObClient *client, - ObActionsInteractiveState interactive); + struct _ObClient *client); |
