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:
parent
ac175e47f9
commit
7d164842e0
1 changed files with 11 additions and 3 deletions
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue