allow specifying that some focus events should be ignored for the focus order list

This commit is contained in:
Dana Jansens 2003-04-05 22:56:10 +00:00
parent ec4e24a422
commit d6f9bc953a
3 changed files with 10 additions and 1 deletions

View file

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

View file

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

View file

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