i3 - improved tiling WM


Bugfix: Do not move the focus if a container is moved on a visible output

Patch status: merged

Patch by Sebastian Rachuj

To apply this patch, use:
curl http://cr.i3wm.org/patch/40/raw.patch | git am

b/src/con.c

14
@@ -762,24 +762,18 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
15
             con_focus(old_focus);
16
     }
17
 
18
-    /* 8: when moving to a visible workspace on a different output, we keep the
19
-     * con focused. Otherwise, we leave the focus on the current workspace as we
20
-     * don’t want to focus invisible workspaces */
21
-    if (source_output != dest_output &&
22
-        workspace_is_visible(workspace) &&
23
-        !con_is_internal(workspace)) {
24
-        DLOG("Moved to a different output, focusing target\n");
25
-    } else {
26
-        /* Descend focus stack in case focus_next is a workspace which can
27
-         * occur if we move to the same workspace.  Also show current workspace
28
-         * to ensure it is focused. */
29
-        workspace_show(current_ws);
30
-
31
-        /* Set focus only if con was on current workspace before moving.
32
-         * Otherwise we would give focus to some window on different workspace. */
33
-        if (source_ws == current_ws)
34
+    /* 8: when moving to another workspace, we leave the focus on the current
35
+     * workspace. (see also #809) */
36
+
37
+    /* Descend focus stack in case focus_next is a workspace which can
38
+     * occur if we move to the same workspace.  Also show current workspace
39
+     * to ensure it is focused. */
40
+    workspace_show(current_ws);
41
+
42
+    /* Set focus only if con was on current workspace before moving.
43
+     * Otherwise we would give focus to some window on different workspace. */
44
+    if (source_ws == current_ws)
45
             con_focus(con_descend_focused(focus_next));
46
-    }
47
 
48
     /* If anything within the container is associated with a startup sequence,
49
      * delete it so child windows won't be created on the old workspace. */