]> git.sur5r.net Git - i3/i3/commitdiff
Focus new window only if it is on a visible workspace on the current focused output.
authorPeter Bui <pnutzh4x0r@gmail.com>
Fri, 14 Oct 2011 15:36:32 +0000 (11:36 -0400)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 18 Oct 2011 17:56:39 +0000 (18:56 +0100)
src/manage.c

index 22c2814fa4fcdcfb10f697e388b82a9640988d4b..ec9e7173ae07acaedb8a5e47af8d180a9cace0b5 100644 (file)
@@ -283,9 +283,13 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
     if (fs == NULL) {
         DLOG("Not in fullscreen mode, focusing\n");
         if (!cwindow->dock) {
-            /* Check that the workspace is visible. If the window was assigned
-             * to an invisible workspace, we should not steal focus. */
-            if (workspace_is_visible(ws)) {
+            /* Check that the workspace is visible and on the same output as
+             * the current focused container. If the window was assigned to an
+             * invisible workspace, we should not steal focus. */
+            Con *current_output = con_get_output(focused);
+            Con *target_output = con_get_output(ws);
+
+            if (workspace_is_visible(ws) && current_output == target_output) {
                 con_focus(nc);
             } else DLOG("workspace not visible, not focusing\n");
         } else DLOG("dock, not focusing\n");