check desktop switching stuff in screen_set_desktop
Mikael Magnusson mikachu@comhem.se
2 files changed,
12 insertions(+),
6 deletions(-)
M
openbox/action.c
→
openbox/action.c
@@ -1588,7 +1588,7 @@ if (data->sendto.desk < screen_num_desktops ||
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 @@ has been made to not use grabs */
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 @@ NotifyWhileGrabbed and applications don't like that. */
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 @@ (data->sendtodir.inter.final && !data->sendtodir.inter.cancel))
{ 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); } }
M
openbox/screen.c
→
openbox/screen.c
@@ -536,7 +536,11 @@
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.. */