diff options
| author | Dana Jansens <danakj@orodu.net> | 2009-12-17 10:23:48 -0500 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2009-12-17 10:23:49 -0500 |
| commit | d18d9c9379e3387073fc9346e9857fdde077b985 (patch) | |
| tree | 753dd70aec47f7fc23862c3180f9b483a37ab06a /openbox/actions.h | |
| parent | 50d662681160c309ea86268c0d05794b87b75593 (diff) | |
Make it possible for an action name to choose whether it is interactive or not based on its options.
This way we can use the same name with options for an interactive action and a
non-interactive action.
Shorten the names of the ObActionsInteractive* functions to ObActionsI*
Add a ObActionsIPreFunc that is called for interactive actions
before the interactivity (key/mouse grab) is started.
Add a ObActionsIPostFunc that is called for interactive actions
after the interactiviti (key/mouse grab) has ended.
Diffstat (limited to 'openbox/actions.h')
| -rw-r--r-- | openbox/actions.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/openbox/actions.h b/openbox/actions.h index 7a09a665..de86b9e1 100644 --- a/openbox/actions.h +++ b/openbox/actions.h @@ -31,15 +31,24 @@ typedef struct _ObActionsGlobalData ObActionsGlobalData; typedef struct _ObActionsClientData ObActionsClientData; typedef struct _ObActionsSelectorData ObActionsSelectorData; -typedef gpointer (*ObActionsDataSetupFunc)(xmlNodePtr node); typedef void (*ObActionsDataFreeFunc)(gpointer options); typedef gboolean (*ObActionsRunFunc)(ObActionsData *data, gpointer options); -typedef gboolean (*ObActionsInteractiveInputFunc)(guint initial_state, +typedef gpointer (*ObActionsDataSetupFunc)(xmlNodePtr node); + +/* functions for interactive actions */ +typedef void (*ObActionsIPreFunc)(gpointer options); +typedef void (*ObActionsIPostFunc)(gpointer options); +typedef gboolean (*ObActionsIInputFunc)(guint initial_state, XEvent *e, gpointer options, gboolean *used); -typedef void (*ObActionsInteractiveCancelFunc)(gpointer options); +typedef void (*ObActionsICancelFunc)(gpointer options); +typedef gpointer (*ObActionsIDataSetupFunc)(xmlNodePtr node, + ObActionsIPreFunc *pre, + ObActionsIInputFunc *input, + ObActionsICancelFunc *cancel, + ObActionsIPostFunc *post); struct _ObActionsData { ObUserAction uact; @@ -55,14 +64,16 @@ struct _ObActionsData { 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. */ +/*! Use this if the actions created from this name may be interactive */ +gboolean actions_register_i(const gchar *name, + ObActionsIDataSetupFunc setup, + ObActionsDataFreeFunc free, + ObActionsRunFunc run); + gboolean actions_register(const gchar *name, ObActionsDataSetupFunc setup, ObActionsDataFreeFunc free, - ObActionsRunFunc run, - ObActionsInteractiveInputFunc i_input, - ObActionsInteractiveCancelFunc i_cancel); + ObActionsRunFunc run); ObActionsAct* actions_parse(xmlNodePtr node); ObActionsAct* actions_parse_string(const gchar *name); |
