]> git.sur5r.net Git - i3/i3/blobdiff - src/manage.c
Merge pull request #3260 from orestisf1993/cmd_border
[i3/i3] / src / manage.c
index 8087d563faf264ce2f0d6b3722d31bbd84c21ec6..9dcc93f5131249fbc193520cdfac53b2617d0606 100644 (file)
@@ -265,13 +265,9 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
 
             Con *assigned_ws = NULL;
             if (assignment->type == A_TO_WORKSPACE_NUMBER) {
-                Con *output = NULL;
                 long parsed_num = ws_name_to_number(assignment->dest.workspace);
 
-                /* This will only work for workspaces that already exist. */
-                TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
-                    GREP_FIRST(assigned_ws, output_get_content(output), child->num == parsed_num);
-                }
+                assigned_ws = get_existing_workspace_by_num(parsed_num);
             }
             /* A_TO_WORKSPACE type assignment or fallback from A_TO_WORKSPACE_NUMBER
              * when the target workspace number does not exist yet. */
@@ -322,6 +318,10 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
             } else
                 nc = tree_open_con(NULL, cwindow);
         }
+
+        if ((assignment = assignment_for(cwindow, A_TO_OUTPUT))) {
+            con_move_to_output_name(nc, assignment->dest.output, true);
+        }
     } else {
         /* M_BELOW inserts the new window as a child of the one which was
          * matched (e.g. dock areas) */
@@ -642,7 +642,7 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
      * proper window event sequence. */
     if (set_focus && nc->mapped) {
         DLOG("Now setting focus.\n");
-        con_focus(nc);
+        con_activate(nc);
     }
 
     tree_render();