Deny moving a sticky container to workspace if it's the same output

Rationale: Sticky containers are always assigned to the visible
workspace.

The basic idea here is to check the destination's output (move.c:190).
But if the command was `move container to workspace x` then a workspace
might have been created for it. We could destroy the workspace in this
case, but that results in unnecessary IPC events.

To avoid this, the logic for `move container to workspace x` has been
adjusted. It now delays creating the workspace until the end, and uses
`workspace_get_initial_output` to determine and check the output before
creating it.
This commit is contained in:
Ryan Dwyer 2018-08-08 10:04:11 +10:00
parent a0649190de
commit 5653fc754b
3 changed files with 36 additions and 10 deletions

View file

@ -16,6 +16,8 @@ struct sway_workspace {
extern char *prev_workspace_name;
struct sway_container *workspace_get_initial_output(const char *name);
char *workspace_next_name(const char *output_name);
bool workspace_switch(struct sway_container *workspace,