#include "openbox/client.h"
#include "openbox/frame.h"
#include "openbox/screen.h"
+#include "openbox/focus.h"
#include <glib.h>
typedef struct {
gboolean maxfull_off;
gboolean iconic_on;
gboolean iconic_off;
+ gboolean focused;
+ gboolean unfocused;
GSList *thenacts;
GSList *elseacts;
} Options;
static void free_func(gpointer options);
static gboolean run_func(ObActionsData *data, gpointer options);
-void action_if_startup()
+void action_if_startup(void)
{
actions_register("If",
setup_func,
else
o->iconic_off = TRUE;
}
+ if ((n = parse_find_node("focused", node))) {
+ if (parse_bool(doc, n))
+ o->focused = TRUE;
+ else
+ o->unfocused = TRUE;
+ }
if ((n = parse_find_node("then", node))) {
xmlNodePtr m;
m = parse_find_node("action", n->xmlChildrenNode);
while (m) {
ObActionsAct *action = actions_parse(i, doc, m);
- if (action) o->thenacts = g_slist_prepend(o->thenacts, action);
+ if (action) o->thenacts = g_slist_append(o->thenacts, action);
m = parse_find_node("action", m->next);
}
}
m = parse_find_node("action", n->xmlChildrenNode);
while (m) {
ObActionsAct *action = actions_parse(i, doc, m);
- if (action) o->elseacts = g_slist_prepend(o->elseacts, action);
+ if (action) o->elseacts = g_slist_append(o->elseacts, action);
m = parse_find_node("action", m->next);
}
}
(!o->maxvert_on || (c && c->max_vert)) &&
(!o->maxvert_off || (c && !c->max_vert)) &&
(!o->maxfull_on || (c && c->max_vert && c->max_horz)) &&
- (!o->maxfull_off || (c && !(c->max_vert && c->max_horz))))
+ (!o->maxfull_off || (c && !(c->max_vert && c->max_horz))) &&
+ (!o->focused || (c && (c == focus_client))) &&
+ (!o->unfocused || (c && !(c == focus_client))))
{
acts = o->thenacts;
}