when focus=yes in the per-app settings, then the focus request for the new window is from a user. also if allow_other_desktops is false, then always disallow other desktops (Fixes bug #4752)
This commit is contained in:
parent
385967b552
commit
29d595b178
1 changed files with 10 additions and 6 deletions
|
@ -303,8 +303,9 @@ void client_manage(Window window, ObPrompt *prompt)
|
||||||
ob_debug("Going to try activate new window? %s",
|
ob_debug("Going to try activate new window? %s",
|
||||||
try_activate ? "yes" : "no");
|
try_activate ? "yes" : "no");
|
||||||
if (try_activate)
|
if (try_activate)
|
||||||
do_activate = client_can_steal_focus(self, settings->focus,
|
do_activate = client_can_steal_focus(
|
||||||
!!launch_time,
|
self, settings->focus == 1,
|
||||||
|
(!!launch_time || settings->focus == 1),
|
||||||
event_time(), launch_time);
|
event_time(), launch_time);
|
||||||
else
|
else
|
||||||
do_activate = FALSE;
|
do_activate = FALSE;
|
||||||
|
@ -712,9 +713,11 @@ static gboolean client_can_steal_focus(ObClient *self,
|
||||||
/* This is focus stealing prevention */
|
/* This is focus stealing prevention */
|
||||||
ob_debug("Want to focus window 0x%x at time %u "
|
ob_debug("Want to focus window 0x%x at time %u "
|
||||||
"launched at %u (last user interaction time %u) "
|
"launched at %u (last user interaction time %u) "
|
||||||
"request from %s",
|
"request from %s, allow other desktop: %s",
|
||||||
self->window, steal_time, launch_time,
|
self->window, steal_time, launch_time,
|
||||||
event_last_user_time, (request_from_user ? "user" : "other"));
|
event_last_user_time,
|
||||||
|
(request_from_user ? "user" : "other"),
|
||||||
|
(allow_other_desktop ? "yes" : "no"));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if no launch time is provided for an application, make one up.
|
if no launch time is provided for an application, make one up.
|
||||||
|
@ -826,7 +829,8 @@ static gboolean client_can_steal_focus(ObClient *self,
|
||||||
}
|
}
|
||||||
/* Don't move focus if the window is not visible on the current
|
/* Don't move focus if the window is not visible on the current
|
||||||
desktop and none of its relatives are focused */
|
desktop and none of its relatives are focused */
|
||||||
else if (!screen_compare_desktops(self->desktop, screen_desktop) &&
|
else if (!allow_other_desktop &&
|
||||||
|
!screen_compare_desktops(self->desktop, screen_desktop) &&
|
||||||
!relative_focused)
|
!relative_focused)
|
||||||
{
|
{
|
||||||
steal = FALSE;
|
steal = FALSE;
|
||||||
|
|
Loading…
Reference in a new issue