add the unfocus action

This commit is contained in:
Dana Jansens 2007-06-22 14:32:50 +00:00
parent a5c2aadf27
commit b0fa629769
5 changed files with 56 additions and 21 deletions

View file

@ -171,6 +171,7 @@ openbox_openbox_SOURCES = \
openbox/actions/restart.c \
openbox/actions/showdesktop.c \
openbox/actions/showmenu.c \
openbox/actions/unfocus.c \
openbox/actions.c \
openbox/actions.h \
openbox/client.c \

View file

@ -454,16 +454,6 @@ ActionString actionstrings[] =
action_directional_focus,
setup_action_directional_focus_northwest
},
{
"unfocus",
action_unfocus,
setup_client_action
},
{
"focustobottom",
action_focus_order_to_bottom,
setup_client_action
},
{
"kill",
action_kill,
@ -1020,12 +1010,6 @@ void action_run_string(const gchar *name, struct _ObClient *c, Time time)
action_run(l, c, 0, time);
}
void action_unfocus (union ActionData *data)
{
if (data->client.any.c == focus_client)
focus_fallback(FALSE, FALSE, TRUE);
}
void action_iconify(union ActionData *data)
{
client_action_start(data);
@ -1033,11 +1017,6 @@ void action_iconify(union ActionData *data)
client_action_end(data, config_focus_under_mouse);
}
void action_focus_order_to_bottom(union ActionData *data)
{
focus_order_to_bottom(data->client.any.c);
}
void action_unshaderaise(union ActionData *data)
{
if (data->client.any.c->shaded)

View file

@ -17,4 +17,5 @@ void action_all_startup()
action_raise_startup();
action_lower_startup();
action_raiselower_startup();
action_unfocus_startup();
}

View file

@ -18,5 +18,6 @@ void action_focus_startup();
void action_raise_startup();
void action_lower_startup();
void action_raiselower_startup();
void action_unfocus_startup();
#endif

53
openbox/actions/unfocus.c Normal file
View file

@ -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;
}