]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
when un-showing the desktop if a window is getting shown, iconify the others so just...
[chaz/openbox] / openbox / action.c
index bcd1b60fd1f05cee66e17e7b6733d38959e11560..804fe0be76506ba55cf87d9609c6adb9ddf90eac 100644 (file)
@@ -1245,7 +1245,7 @@ void action_unfocus (union ActionData *data)
 void action_iconify(union ActionData *data)
 {
     client_action_start(data);
-    client_iconify(data->client.any.c, TRUE, TRUE);
+    client_iconify(data->client.any.c, TRUE, TRUE, FALSE);
     client_action_end(data);
 }
 
@@ -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)
@@ -1902,17 +1906,17 @@ void action_toggle_dockautohide(union ActionData *data)
 
 void action_toggle_show_desktop(union ActionData *data)
 {
-    screen_show_desktop(!screen_showing_desktop, TRUE);
+    screen_show_desktop(!screen_showing_desktop, NULL);
 }
 
 void action_show_desktop(union ActionData *data)
 {
-    screen_show_desktop(TRUE, TRUE);
+    screen_show_desktop(TRUE, NULL);
 }
 
 void action_unshow_desktop(union ActionData *data)
 {
-    screen_show_desktop(FALSE, TRUE);
+    screen_show_desktop(FALSE, NULL);
 }
 
 void action_break_chroot(union ActionData *data)
This page took 0.022508 seconds and 4 git commands to generate.