]> git.sur5r.net Git - i3/i3/blobdiff - src/con.c
Bugfix: Do not move focus if a container is moved across outputs
[i3/i3] / src / con.c
index 70c7d7f5a6cf8f7d07638f87376e61d9501afb18..c1e4f593e81213e62b116282b2d8404733c1a110 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -762,24 +762,18 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
             con_focus(old_focus);
     }
 
-    /* 8: when moving to a visible workspace on a different output, we keep the
-     * con focused. Otherwise, we leave the focus on the current workspace as we
-     * don’t want to focus invisible workspaces */
-    if (source_output != dest_output &&
-        workspace_is_visible(workspace) &&
-        !con_is_internal(workspace)) {
-        DLOG("Moved to a different output, focusing target\n");
-    } else {
-        /* Descend focus stack in case focus_next is a workspace which can
-         * occur if we move to the same workspace.  Also show current workspace
-         * to ensure it is focused. */
-        workspace_show(current_ws);
-
-        /* Set focus only if con was on current workspace before moving.
-         * Otherwise we would give focus to some window on different workspace. */
-        if (source_ws == current_ws)
+    /* 8: when moving to another workspace, we leave the focus on the current
+     * workspace. (see also #809) */
+
+    /* Descend focus stack in case focus_next is a workspace which can
+     * occur if we move to the same workspace.  Also show current workspace
+     * to ensure it is focused. */
+    workspace_show(current_ws);
+
+    /* Set focus only if con was on current workspace before moving.
+     * Otherwise we would give focus to some window on different workspace. */
+    if (source_ws == current_ws)
             con_focus(con_descend_focused(focus_next));
-    }
 
     /* If anything within the container is associated with a startup sequence,
      * delete it so child windows won't be created on the old workspace. */