move focus consistantly when changing desktops with different mouse-focus options - while still being not annoying with omnipresent windows
This commit is contained in:
parent
b8e78bba16
commit
03d1c08dfe
1 changed files with 7 additions and 5 deletions
|
@ -543,6 +543,7 @@ void screen_set_desktop(guint num, gboolean dofocus)
|
||||||
GList *it;
|
GList *it;
|
||||||
guint old;
|
guint old;
|
||||||
gulong ignore_start;
|
gulong ignore_start;
|
||||||
|
gboolean allow_omni;
|
||||||
|
|
||||||
g_assert(num < screen_num_desktops);
|
g_assert(num < screen_num_desktops);
|
||||||
|
|
||||||
|
@ -574,10 +575,11 @@ void screen_set_desktop(guint num, gboolean dofocus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (focus_client && ((client_normal(focus_client) &&
|
/* only allow omnipresent windows to get focus on desktop change if
|
||||||
focus_client->desktop == DESKTOP_ALL) ||
|
an omnipresent window is already focused (it'll keep focus probably, but
|
||||||
focus_client->desktop == screen_desktop))
|
maybe not depending on mouse-focus options) */
|
||||||
dofocus = FALSE;
|
allow_omni = focus_client && (client_normal(focus_client) &&
|
||||||
|
focus_client->desktop == DESKTOP_ALL);
|
||||||
|
|
||||||
/* have to try focus here because when you leave an empty desktop
|
/* have to try focus here because when you leave an empty desktop
|
||||||
there is no focus out to watch for. also, we have different rules
|
there is no focus out to watch for. also, we have different rules
|
||||||
|
@ -587,7 +589,7 @@ void screen_set_desktop(guint num, gboolean dofocus)
|
||||||
do this before hiding the windows so if helper windows are coming
|
do this before hiding the windows so if helper windows are coming
|
||||||
with us, they don't get hidden
|
with us, they don't get hidden
|
||||||
*/
|
*/
|
||||||
if (dofocus && (c = focus_fallback(TRUE, !config_focus_last, FALSE)))
|
if (dofocus && (c = focus_fallback(TRUE, !config_focus_last, allow_omni)))
|
||||||
{
|
{
|
||||||
/* only do the flicker reducing stuff ahead of time if we are going
|
/* only do the flicker reducing stuff ahead of time if we are going
|
||||||
to call xsetinputfocus on the window ourselves. otherwise there is
|
to call xsetinputfocus on the window ourselves. otherwise there is
|
||||||
|
|
Loading…
Reference in a new issue