]> git.sur5r.net Git - i3/i3/blobdiff - src/con.c
Merge branch 'release-4.16.1'
[i3/i3] / src / con.c
index d50c29be7a64003a92ad9ba0ca6eae330c4deebd..21d2f097af4d667c7ccd0b94afa7d25b209e1cb7 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -312,7 +312,7 @@ bool con_has_managed_window(Con *con) {
     return (con != NULL && con->window != NULL && con->window->id != XCB_WINDOW_NONE && con_get_workspace(con) != NULL);
 }
 
-/**
+/*
  * Returns true if this node has regular or floating children.
  *
  */
@@ -526,7 +526,7 @@ Con *con_get_fullscreen_covering_ws(Con *ws) {
     return fs;
 }
 
-/**
+/*
  * Returns true if the container is internal, such as __i3_scratch
  *
  */
@@ -896,7 +896,7 @@ int con_num_children(Con *con) {
     return children;
 }
 
-/**
+/*
  * Returns the number of visible non-floating children of this container.
  * For example, if the container contains a hsplit which has two children,
  * this will return 2 instead of 1.
@@ -1234,14 +1234,12 @@ static bool _con_move_to_con(Con *con, Con *target, bool behind_focused, bool fi
         Con *old_focus = focused;
         con_activate(con_descend_focused(con));
 
-        /* Restore focus if the output's focused workspace has changed. */
-        if (con_get_workspace(focused) != old_focus_ws) {
-            con_focus(old_focus);
-        }
-
-        /* Restore focus to the currently focused container. */
         if (old_focus_ws == current_ws && old_focus->type != CT_WORKSPACE) {
+            /* Restore focus to the currently focused container. */
             con_activate(old_focus);
+        } else if (con_get_workspace(focused) != old_focus_ws) {
+            /* Restore focus if the output's focused workspace has changed. */
+            con_focus(con_descend_focused(old_focus_ws));
         }
     }