commands: allow tiled containers to be stickied

This also stops stickied containers from losing its sticky status when
it is tiled, allowing it to be immediately stickied when floated again.
master
Ian Fan 6 years ago
parent 42f8a038c9
commit 34dea3d9d2

@ -45,7 +45,7 @@ struct cmd_results *cmd_floating(int argc, char **argv) {
"Cannot set floating status on a hidden scratchpad container");
}
bool wants_floating =
bool wants_floating =
parse_boolean(argv[0], container_is_floating(container));
container_set_floating(container, wants_floating);

@ -22,14 +22,9 @@ struct cmd_results *cmd_sticky(int argc, char **argv) {
return cmd_results_new(CMD_FAILURE, "No current container");
};
if (!container_is_floating(container)) {
return cmd_results_new(CMD_FAILURE,
"Can't set sticky on a tiled container");
}
container->is_sticky = parse_boolean(argv[0], container->is_sticky);
if (container->is_sticky &&
if (container->is_sticky && container_is_floating_or_child(container) &&
(!container->scratchpad || container->workspace)) {
// move container to active workspace
struct sway_workspace *active_workspace =

@ -708,7 +708,6 @@ void container_set_floating(struct sway_container *container, bool enable) {
container->border = container->saved_border;
}
}
container->is_sticky = false;
}
container_end_mouse_operation(container);

Loading…
Cancel
Save