]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
add comments explaining why we don't switch desktops immediately
[chaz/openbox] / openbox / action.c
index bcd1b60fd1f05cee66e17e7b6733d38959e11560..58952a1a8716cdc595a480a8eb96ec9928901e8d 100644 (file)
@@ -1545,9 +1545,11 @@ void action_desktop_dir(union ActionData *data)
                              data->desktopdir.inter.any.interactive,
                              data->desktopdir.inter.final,
                              data->desktopdir.inter.cancel);
+    /* only move the desktop when the action is complete. if we switch
+       desktops during the interactive action, focus will move but with
+       NotifyWhileGrabbed and applications don't like that. */
     if (!data->sendtodir.inter.any.interactive ||
-        !data->sendtodir.inter.final ||
-        data->sendtodir.inter.cancel)
+        (data->sendtodir.inter.final && !data->sendtodir.inter.cancel))
     {
         if (d != screen_desktop) screen_set_desktop(d, TRUE);
     }
@@ -1565,9 +1567,11 @@ void action_send_to_desktop_dir(union ActionData *data)
                              data->sendtodir.inter.any.interactive,
                              data->sendtodir.inter.final,
                              data->sendtodir.inter.cancel);
+    /* only move the desktop when the action is complete. if we switch
+       desktops during the interactive action, focus will move but with
+       NotifyWhileGrabbed and applications don't like that. */
     if (!data->sendtodir.inter.any.interactive ||
-        !data->sendtodir.inter.final ||
-        data->sendtodir.inter.cancel)
+        (data->sendtodir.inter.final && !data->sendtodir.inter.cancel))
     {
         client_set_desktop(c, d, data->sendtodir.follow);
         if (data->sendtodir.follow && d != screen_desktop)
This page took 0.023606 seconds and 4 git commands to generate.