check desktop switching stuff in screen_set_desktop
This commit is contained in:
parent
336011efb1
commit
ddd2a4da21
2 changed files with 12 additions and 6 deletions
|
@ -1588,7 +1588,7 @@ void action_send_to_desktop(union ActionData *data)
|
|||
data->sendto.desk == DESKTOP_ALL) {
|
||||
client_set_desktop(c, data->sendto.desk, data->sendto.follow);
|
||||
if (data->sendto.follow && data->sendto.desk != screen_desktop)
|
||||
screen_set_desktop(data->sendto.desk, c != focus_client);
|
||||
screen_set_desktop(data->sendto.desk, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1599,9 +1599,10 @@ void action_desktop(union ActionData *data)
|
|||
if (data->desktop.desk < screen_num_desktops ||
|
||||
data->desktop.desk == DESKTOP_ALL)
|
||||
{
|
||||
screen_set_desktop(data->desktop.desk, TRUE);
|
||||
screen_set_desktop(data->desktop.desk, !focus_client
|
||||
|| focus->client.desktop != DESKTOP_ALL);
|
||||
if (data->inter.any.interactive)
|
||||
screen_desktop_popup(data->desktop.desk, focus_client->desktop != DESKTOP_ALL);
|
||||
screen_desktop_popup(data->desktop.desk, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1621,7 +1622,8 @@ void action_desktop_dir(union ActionData *data)
|
|||
if (!data->sendtodir.inter.any.interactive ||
|
||||
(data->sendtodir.inter.final && !data->sendtodir.inter.cancel))
|
||||
{
|
||||
if (d != screen_desktop) screen_set_desktop(d, focus_client->desktop != DESKTOP_ALL);
|
||||
if (d != screen_desktop)
|
||||
screen_set_desktop(d, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1645,7 +1647,7 @@ void action_send_to_desktop_dir(union ActionData *data)
|
|||
{
|
||||
client_set_desktop(c, d, data->sendtodir.follow);
|
||||
if (data->sendtodir.follow && d != screen_desktop)
|
||||
screen_set_desktop(d, c != focus_client);
|
||||
screen_set_desktop(d, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -536,7 +536,11 @@ void screen_set_desktop(guint num, gboolean dofocus)
|
|||
do this before hiding the windows so if helper windows are coming
|
||||
with us, they don't get hidden
|
||||
*/
|
||||
if (dofocus && (c = focus_fallback(TRUE))) {
|
||||
if (dofocus
|
||||
&& (!focus_client || (focus->client.desktop != DESKTOP_ALL
|
||||
&& focus->client.desktop != num))
|
||||
&& (c = focus_fallback(TRUE)))
|
||||
{
|
||||
/* only do the flicker reducing stuff ahead of time if we are going
|
||||
to call xsetinputfocus on the window ourselves. otherwise there is
|
||||
no guarantee the window will actually take focus.. */
|
||||
|
|
Loading…
Reference in a new issue