give focus to new windows when *any* relative already has focus..

don't give it when it will not go to the window anyway tho, like if there is already a modal child for it
This commit is contained in:
Dana Jansens 2007-05-26 14:56:53 +00:00
parent ac175e47f9
commit 7d164842e0

View file

@ -348,7 +348,7 @@ void client_manage(Window window)
!self->iconic && !self->iconic &&
/* this means focus=true for window is same as config_focus_new=true */ /* this means focus=true for window is same as config_focus_new=true */
((config_focus_new || (settings && settings->focus == 1)) || ((config_focus_new || (settings && settings->focus == 1)) ||
client_search_focus_parent(self)) && client_search_focus_tree_full(self)) &&
/* this checks for focus=false for the window */ /* this checks for focus=false for the window */
(!settings || settings->focus != 0) && (!settings || settings->focus != 0) &&
/* note the check against Type_Normal/Dialog, not client_normal(self), /* note the check against Type_Normal/Dialog, not client_normal(self),
@ -474,8 +474,8 @@ void client_manage(Window window)
"Not focusing the window because its on another " "Not focusing the window because its on another "
"desktop\n"); "desktop\n");
} }
/* If something is focused, and it's not our parent... */ /* If something is focused, and it's not our relative... */
else if (focus_client && client_search_focus_parent(self) == NULL) else if (focus_client && client_search_focus_tree_full(self) == NULL)
{ {
/* If time stamp is old, don't steal focus */ /* If time stamp is old, don't steal focus */
if (self->user_time && last_time && if (self->user_time && last_time &&
@ -509,6 +509,14 @@ void client_manage(Window window)
"Not focusing the window because a globally " "Not focusing the window because a globally "
"active client has focus\n"); "active client has focus\n");
} }
/* Don't move focus if it's not going to go to this window
anyway */
else if (client_focus_target(self) != self) {
activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because another window "
"would get the focus anyway\n");
}
} }
if (!activate) { if (!activate) {