fix for per-application focus settings. properly use all the possible values (1, 0, and -1)

This commit is contained in:
Dana Jansens 2007-03-02 22:44:38 +00:00
parent 07fe0980be
commit 4084f5d82d

View file

@ -330,11 +330,11 @@ void client_manage(Window window)
/* Don't worry, we won't actually both shade and undecorate the
* window when push comes to shove. */
if (settings->shade != -1)
client_shade(self, settings->shade);
client_shade(self, !!settings->shade);
if (settings->decor != -1)
client_set_undecorated(self, !settings->decor);
if (settings->iconic != -1)
client_iconify(self, settings->iconic, FALSE);
client_iconify(self, !!settings->iconic, FALSE);
if (settings->skip_pager != -1) {
self->skip_pager = !!settings->skip_pager;
client_change_state(self);
@ -371,9 +371,11 @@ void client_manage(Window window)
/* focus the new window? */
if (ob_state() != OB_STATE_STARTING &&
((settings && settings->focus == TRUE) ||
(!settings && (config_focus_new ||
client_search_focus_parent(self)))) &&
/* this means focus=true for window is same as config_focus_new=true */
((config_focus_new || (settings && settings->focus == 1)) ||
client_search_focus_parent(self)) &&
/* this checks for focus=false for the window */
(!settings || settings->focus != 0) &&
/* note the check against Type_Normal/Dialog, not client_normal(self),
which would also include other types. in this case we want more
strict rules for focus */