more strict rules on what will be focused by the focusNew option in the rc3. only strictly NORMAL windows will be focused, not dialogs or anything else when they are mapped.

This commit is contained in:
Dana Jansens 2003-04-18 04:13:08 +00:00
parent e6a00eee31
commit c4fb053f2f

View file

@ -153,6 +153,7 @@ void client_manage(Window window)
XSetWindowAttributes attrib_set;
/* XWMHints *wmhint; */
guint i;
gboolean f;
grab_server(TRUE);
@ -240,22 +241,30 @@ void client_manage(Window window)
/* focus the new window? */
if (ob_state != State_Starting && client_normal(self)) {
if (config_focus_new)
client_focus(self);
else if (self->transient_for) {
f = FALSE;
if (self->transient_for) {
if (self->transient_for != TRAN_GROUP) {/* transient of a window */
if (focus_client == self->transient_for)
if (focus_client == self->transient_for) {
client_focus(self);
f = TRUE;
}
} else { /* transient of a group */
GSList *it;
for (it = self->group->members; it; it = it->next)
if (focus_client == it->data) {
client_focus(self);
f = TRUE;
break;
}
}
}
/* note the check against Type_Normal, not client_normal(self), which
would also include dialog types. in this case we want more strict
rules for focus */
if (!f && config_focus_new && self->type == Type_Normal)
client_focus(self);
}
/* update the list hints */