add the unfocus action
This commit is contained in:
parent
a5c2aadf27
commit
b0fa629769
5 changed files with 56 additions and 21 deletions
|
@ -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 \
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -17,4 +17,5 @@ void action_all_startup()
|
|||
action_raise_startup();
|
||||
action_lower_startup();
|
||||
action_raiselower_startup();
|
||||
action_unfocus_startup();
|
||||
}
|
||||
|
|
|
@ -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
53
openbox/actions/unfocus.c
Normal 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;
|
||||
}
|
Loading…
Reference in a new issue