]> git.sur5r.net Git - i3/i3/commitdiff
Merge pull request #3254 from orestisf1993/issue-555
authorIngo Bürk <admin@airblader.de>
Thu, 12 Jul 2018 14:18:13 +0000 (16:18 +0200)
committerGitHub <noreply@github.com>
Thu, 12 Jul 2018 14:18:13 +0000 (16:18 +0200)
Multiple assignments of workspaces to outputs (#555)

1  2 
src/commands.c

diff --cc src/commands.c
index fb7b08bf579e6a7da4d04eae74ab0af4f15736f1,a133daa6eddc2e740ca4413059cbfc19236563a2..ad7d9770b7193c69c296fccc79650b577a2f925e
@@@ -2019,27 -2019,31 +2019,30 @@@ void cmd_rename_workspace(I3_CMD, cons
              LOG("Could not get output named \"%s\"\n", assignment->output);
              continue;
          }
+         if (!output_triggers_assignment(target_output, assignment)) {
+             continue;
+         }
          workspace_move_to_output(workspace, target_output);
  
 -        bool can_restore_focus = previously_focused != NULL;
 -        /* NB: If previously_focused is a workspace we can't
 -         * work directly with it since it might have been cleaned up by
 -         * workspace_show() already, depending on the
 -         * focus order/number of other workspaces on the output.
 -         * Instead, we loop through the available workspaces and only focus
 -         * previously_focused if we still find it. */
 -        if (previously_focused_content) {
 -            Con *workspace = NULL;
 -            GREP_FIRST(workspace, previously_focused_content, child == previously_focused);
 -            can_restore_focus &= (workspace != NULL);
 -        }
 +        break;
 +    }
  
 -        if (can_restore_focus) {
 -            /* Restore the previous focus since con_attach messes with the focus. */
 -            workspace_show(con_get_workspace(previously_focused));
 -            con_activate(previously_focused);
 -        }
 +    bool can_restore_focus = previously_focused != NULL;
 +    /* NB: If previously_focused is a workspace we can't work directly with it
 +     * since it might have been cleaned up by workspace_show() already,
 +     * depending on the focus order/number of other workspaces on the output.
 +     * Instead, we loop through the available workspaces and only focus
 +     * previously_focused if we still find it. */
 +    if (previously_focused_content) {
 +        Con *workspace = NULL;
 +        GREP_FIRST(workspace, previously_focused_content, child == previously_focused);
 +        can_restore_focus &= (workspace != NULL);
 +    }
  
 -        break;
 +    if (can_restore_focus) {
 +        /* Restore the previous focus since con_attach messes with the focus. */
 +        workspace_show(con_get_workspace(previously_focused));
 +        con_focus(previously_focused);
      }
  
      cmd_output->needs_tree_render = true;