summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-04-05 22:56:10 +0000
committerDana Jansens <danakj@orodu.net>2003-04-05 22:56:10 +0000
commitd6f9bc953ac7cd29f69563c96b6c8991fed8f6d8 (patch)
tree051f0c06e6168bc90a5556f37c34144cd3d47689
parentec4e24a42269b44c9585176943f76310495536ea (diff)
allow specifying that some focus events should be ignored for the focus order list
-rw-r--r--openbox/action.c1
-rw-r--r--openbox/focus.c6
-rw-r--r--openbox/focus.h4
3 files changed, 10 insertions, 1 deletions
diff --git a/openbox/action.c b/openbox/action.c
index 53d46cde..a83d19df 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -709,6 +709,7 @@ void action_cycle_windows(union ActionData *data)
}
if (client_focus(it->data)) {
t = it->data;
+ focus_ignore_in++;
break;
}
} while (it != start);
diff --git a/openbox/focus.c b/openbox/focus.c
index 39894046..4ff85c5d 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -18,6 +18,7 @@ GList **focus_order = NULL; /* these lists are created when screen_startup
Window focus_backup = None;
gboolean focus_new = TRUE;
gboolean focus_follow = TRUE;
+int focus_ignore_in = 0;
static void parse_assign(char *name, ParseToken *value)
{
@@ -99,7 +100,10 @@ void focus_set_client(Client *client)
focus_client = client;
/* move to the top of the list */
- if (client != NULL) {
+ if (focus_ignore_in) {
+ g_assert(focus_ignore_in > 0);
+ --focus_ignore_in;
+ } else if (client != NULL) {
desktop = client->desktop;
if (desktop == DESKTOP_ALL) desktop = screen_desktop;
focus_order[desktop] = g_list_remove(focus_order[desktop], client);
diff --git a/openbox/focus.h b/openbox/focus.h
index 8a511cf3..976b50df 100644
--- a/openbox/focus.h
+++ b/openbox/focus.h
@@ -12,6 +12,10 @@ extern Window focus_backup;
/*! The client which is currently focused */
extern struct Client *focus_client;
+/* The number of FocusIn events which should be ignored for tracking the focus
+ order */
+extern int focus_ignore_in;
+
/*! The recent focus order on each desktop */
extern GList **focus_order;