summaryrefslogtreecommitdiffstats
path: root/sway/commands/move.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/commands/move.c')
-rw-r--r--sway/commands/move.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sway/commands/move.c b/sway/commands/move.c
index aede3d6c..1aae3838 100644
--- a/sway/commands/move.c
+++ b/sway/commands/move.c
@@ -298,10 +298,25 @@ static struct cmd_results *move_to_position(struct sway_container *container,
298} 298}
299 299
300static struct cmd_results *move_to_scratchpad(struct sway_container *con) { 300static struct cmd_results *move_to_scratchpad(struct sway_container *con) {
301 if (con->type != C_CONTAINER && con->type != C_VIEW) { 301 if (con->type == C_WORKSPACE && con->children->length == 0) {
302 return cmd_results_new(CMD_INVALID, "move", 302 return cmd_results_new(CMD_INVALID, "move",
303 "Only views and containers can be moved to the scratchpad"); 303 "Can't move an empty workspace to the scratchpad");
304 } 304 }
305 if (con->type == C_WORKSPACE) {
306 // Wrap the workspace's children in a container
307 struct sway_container *workspace = con;
308 con = container_wrap_children(con);
309 workspace->layout = L_HORIZ;
310 }
311
312 // If the container is in a floating split container,
313 // operate on the split container instead of the child.
314 if (container_is_floating_or_child(con)) {
315 while (con->parent->layout != L_FLOATING) {
316 con = con->parent;
317 }
318 }
319
305 if (con->scratchpad) { 320 if (con->scratchpad) {
306 return cmd_results_new(CMD_INVALID, "move", 321 return cmd_results_new(CMD_INVALID, "move",
307 "Container is already in the scratchpad"); 322 "Container is already in the scratchpad");