all repos — openbox @ ddd2a4da21e5696f1fc28fee6581744d888b59a7

openbox fork - make it a bit more like ryudo

check desktop switching stuff in screen_set_desktop
Mikael Magnusson mikachu@comhem.se
commit

ddd2a4da21e5696f1fc28fee6581744d888b59a7

parent

336011efb19600107313785b56c32dd12a69dc1f

2 files changed, 12 insertions(+), 6 deletions(-)

jump to
M openbox/action.copenbox/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.copenbox/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.. */