dont give focus to transients when the situation is ambiguous

This commit is contained in:
Dana Jansens 2007-05-24 21:01:19 +00:00
parent 33d48c5271
commit f9cf8fcea8

View file

@ -486,10 +486,24 @@ void client_manage(Window window)
"Not focusing the window because the time is " "Not focusing the window because the time is "
"too old\n"); "too old\n");
} }
/* If its a transient (and parents aren't focused) and the time
is ambiguous (either the current focus target doesn't have
a timestamp, or they are the same (we probably inherited it
from them) */
else if (self->transient_for != NULL &&
(!last_time || self->user_time == last_time))
{
activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because it is a "
"transient, and the time is very ambiguous\n");
}
/* Don't steal focus from globally active clients. /* Don't steal focus from globally active clients.
I stole this idea from KWin. It seems nice. I stole this idea from KWin. It seems nice.
*/ */
if (!(focus_client->can_focus || focus_client->focus_notify)) { else if (!(focus_client->can_focus ||
focus_client->focus_notify))
{
activate = FALSE; activate = FALSE;
ob_debug_type(OB_DEBUG_FOCUS, ob_debug_type(OB_DEBUG_FOCUS,
"Not focusing the window because a globally " "Not focusing the window because a globally "