diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-06-22 14:32:50 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-06-22 14:32:50 +0000 |
| commit | b0fa629769ef17cae28f137aad80f8c4798f7592 (patch) | |
| tree | fa46c6b63a4ebe1081cb25e9cc525f2b0b5951fa /openbox/actions/unfocus.c | |
| parent | a5c2aadf2778d6ab4105abd457cd2ab21a1172ec (diff) | |
add the unfocus action
Diffstat (limited to 'openbox/actions/unfocus.c')
| -rw-r--r-- | openbox/actions/unfocus.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/openbox/actions/unfocus.c b/openbox/actions/unfocus.c new file mode 100644 index 00000000..d581864e --- /dev/null +++ b/openbox/actions/unfocus.c @@ -0,0 +1,53 @@ +#include "openbox/actions.h" +#include "openbox/focus.h" + +typedef struct { + gboolean tobottom; +} Options; + +static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); +static void free_func(gpointer options); +static gboolean run_func(ObActionsData *data, gpointer options); + +void action_unfocus_startup() +{ + actions_register("Unfocus", + setup_func, + free_func, + run_func, + NULL, NULL); +} + +static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +{ + xmlNodePtr n; + Options *o; + + o = g_new0(Options, 1); + o->tobottom = TRUE; + + if ((n = parse_find_node("tobottom", node))) + o->tobottom = parse_bool(doc, n); + return o; +} + +static void free_func(gpointer options) +{ + Options *o = options; + + g_free(o); +} + +/* Always return FALSE because its not interactive */ +static gboolean run_func(ObActionsData *data, gpointer options) +{ + Options *o = options; + + if (data->client && data->client == focus_client) { + if (o->tobottom) + focus_order_to_bottom(data->client); + focus_fallback(FALSE, FALSE, TRUE); + } + + return FALSE; +} |
