commands: allow tiled sticky containers to be moved

Namely, to a workspace on the same output.
However, tiled sticky children of floating containers are still restricted.
This commit is contained in:
Ian Fan 2019-03-11 16:50:52 +00:00 committed by Brian Ashworth
parent 076257a978
commit 055d662baa

View file

@ -473,7 +473,7 @@ static struct cmd_results *cmd_move_container(int argc, char **argv) {
// We have to create the workspace, but if the container is // We have to create the workspace, but if the container is
// sticky and the workspace is going to be created on the same // sticky and the workspace is going to be created on the same
// output, we'll bail out first. // output, we'll bail out first.
if (container->is_sticky) { if (container->is_sticky && container_is_floating_or_child(container)) {
struct sway_output *new_output = struct sway_output *new_output =
workspace_get_initial_output(ws_name); workspace_get_initial_output(ws_name);
if (old_output == new_output) { if (old_output == new_output) {
@ -507,8 +507,8 @@ static struct cmd_results *cmd_move_container(int argc, char **argv) {
return cmd_results_new(CMD_INVALID, expected_syntax); return cmd_results_new(CMD_INVALID, expected_syntax);
} }
if (container->is_sticky && old_output && if (container->is_sticky && container_is_floating_or_child(container) &&
node_has_ancestor(destination, &old_output->node)) { old_output && node_has_ancestor(destination, &old_output->node)) {
return cmd_results_new(CMD_FAILURE, "Can't move sticky " return cmd_results_new(CMD_FAILURE, "Can't move sticky "
"container to another workspace on the same output"); "container to another workspace on the same output");
} }