]> git.lizzy.rs Git - bspwm.git/commitdiff
Moving tiled windows to empty desktops
authorBastien Dejean <nihilhill@gmail.com>
Sun, 10 Mar 2013 08:55:09 +0000 (09:55 +0100)
committerBastien Dejean <nihilhill@gmail.com>
Sun, 10 Mar 2013 08:55:09 +0000 (09:55 +0100)
events.c

index a126524ea16d76b6088a40c3aa768372b5829308..58a2f39015a68f136f11bf3c4ac84bc0237dc7f0 100644 (file)
--- a/events.c
+++ b/events.c
@@ -421,31 +421,31 @@ void track_pointer(int root_x, int root_y)
             if (frozen_pointer->is_tiled) {
                 xcb_window_t pwin = XCB_NONE;
                 query_pointer(&pwin, NULL);
-                if (pwin != XCB_NONE) {
-                    window_location_t loc;
-                    bool is_managed = locate_window(pwin, &loc);
-                    if (is_managed && is_tiled(loc.node->client) && loc.monitor == m) {
-                        swap_nodes(d, n, loc.desktop, loc.node);
-                        arrange(m, d);
-                    } else {
-                        if (is_managed && !is_tiled(loc.node->client) && loc.monitor == m) {
+                if (pwin == win)
+                    return;
+                window_location_t loc;
+                bool is_managed = (pwin == XCB_NONE ? false : locate_window(pwin, &loc));
+                if (is_managed && is_tiled(loc.node->client) && loc.monitor == m) {
+                    swap_nodes(d, n, loc.desktop, loc.node);
+                    arrange(m, d);
+                } else {
+                    if (is_managed && loc.monitor == m) {
+                        return;
+                    } else if (!is_managed) {
+                        xcb_point_t pt = (xcb_point_t) {root_x, root_y};
+                        monitor_t *pmon = monitor_from_point(pt);
+                        if (pmon == NULL || pmon == m) {
                             return;
-                        } else if (!is_managed) {
-                            xcb_point_t pt = (xcb_point_t) {root_x, root_y};
-                            monitor_t *pmon = monitor_from_point(pt);
-                            if (pmon == NULL || pmon == m) {
-                                return;
-                            } else {
-                                loc.monitor = pmon;
-                                loc.desktop = pmon->desk;
-                            }
+                        } else {
+                            loc.monitor = pmon;
+                            loc.desktop = pmon->desk;
                         }
-                        transfer_node(m, d, loc.monitor, loc.desktop, n);
-                        arrange(m, d);
-                        arrange(loc.monitor, loc.desktop);
-                        frozen_pointer->monitor = loc.monitor;
-                        frozen_pointer->desktop = loc.desktop;
                     }
+                    transfer_node(m, d, loc.monitor, loc.desktop, n);
+                    arrange(m, d);
+                    arrange(loc.monitor, loc.desktop);
+                    frozen_pointer->monitor = loc.monitor;
+                    frozen_pointer->desktop = loc.desktop;
                 }
             } else {
                 x = rect.x + delta_x;