]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Correctly maintain focus when setting a workspace to floating
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 7 Jan 2011 23:10:30 +0000 (00:10 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 7 Jan 2011 23:10:30 +0000 (00:10 +0100)
src/floating.c

index c50cf49444792ad47f78c2e4090b657c907f6255..b342c56e167197cc74e7c745e4672289234fa954 100644 (file)
@@ -17,6 +17,8 @@
 extern xcb_connection_t *conn;
 
 void floating_enable(Con *con, bool automatic) {
+    bool set_focus = true;
+
     if (con_is_floating(con)) {
         LOG("Container is already in floating mode, not doing anything.\n");
         return;
@@ -58,6 +60,7 @@ void floating_enable(Con *con, bool automatic) {
             con_focus(old_focused);
 
         con = new;
+        set_focus = false;
     }
 
     /* 1: detach the container from its parent */
@@ -121,7 +124,8 @@ void floating_enable(Con *con, bool automatic) {
     TAILQ_INSERT_TAIL(&(nc->nodes_head), con, nodes);
     TAILQ_INSERT_TAIL(&(nc->focus_head), con, focused);
     // TODO: don’t influence focus handling when Con was not focused before.
-    con_focus(con);
+    if (set_focus)
+        con_focus(con);
 }
 
 void floating_disable(Con *con, bool automatic) {