]> git.sur5r.net Git - i3/i3/blobdiff - src/floating.c
Merge branch 'master' into next
[i3/i3] / src / floating.c
index 4c4b954cfe4ee92780dee2d95ef3dd6b06c28ef6..13c84e47890116a3749d0d5046403757c50bf117 100644 (file)
 extern xcb_connection_t *conn;
 
 void floating_enable(Con *con, bool automatic) {
-    bool set_focus = true;
+    bool set_focus = (con == focused);
+
+    if (con->parent && con->parent->type == CT_DOCKAREA) {
+        LOG("Container is a dock window, not enabling floating mode.\n");
+        return;
+    }
 
     if (con_is_floating(con)) {
         LOG("Container is already in floating mode, not doing anything.\n");
@@ -174,7 +179,6 @@ void floating_enable(Con *con, bool automatic) {
     render_con(nc, false);
     render_con(con, false);
 
-    // TODO: don’t influence focus handling when Con was not focused before.
     if (set_focus)
         con_focus(con);
 
@@ -286,7 +290,7 @@ bool floating_maybe_reassign_ws(Con *con) {
     Con *content = output_get_content(output->con);
     Con *ws = TAILQ_FIRST(&(content->focus_head));
     DLOG("Moving con %p / %s to workspace %p / %s\n", con, con->name, ws, ws->name);
-    con_move_to_workspace(con, ws, true);
+    con_move_to_workspace(con, ws, false, true);
     con_focus(con_descend_focused(con));
     return true;
 }