summaryrefslogtreecommitdiffstats
path: root/sway
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2019-01-22 11:07:32 +0000
committerLibravatar Ian Fan <ianfan0@gmail.com>2019-01-22 11:47:48 +0000
commit34dea3d9d26a4e50c435a0fc51933fea956743cd (patch)
treed94059d2246a5d8ea9405a44952c8088dbd924d7 /sway
parentRemove assumption that noop output will be called NOOP-1 (diff)
downloadsway-34dea3d9d26a4e50c435a0fc51933fea956743cd.tar.gz
sway-34dea3d9d26a4e50c435a0fc51933fea956743cd.tar.zst
sway-34dea3d9d26a4e50c435a0fc51933fea956743cd.zip
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.
Diffstat (limited to 'sway')
-rw-r--r--sway/commands/floating.c2
-rw-r--r--sway/commands/sticky.c7
-rw-r--r--sway/tree/container.c1
3 files changed, 2 insertions, 8 deletions
diff --git a/sway/commands/floating.c b/sway/commands/floating.c
index 57bf0017..52e4ed08 100644
--- a/sway/commands/floating.c
+++ b/sway/commands/floating.c
@@ -45,7 +45,7 @@ struct cmd_results *cmd_floating(int argc, char **argv) {
45 "Cannot set floating status on a hidden scratchpad container"); 45 "Cannot set floating status on a hidden scratchpad container");
46 } 46 }
47 47
48 bool wants_floating = 48 bool wants_floating =
49 parse_boolean(argv[0], container_is_floating(container)); 49 parse_boolean(argv[0], container_is_floating(container));
50 50
51 container_set_floating(container, wants_floating); 51 container_set_floating(container, wants_floating);
diff --git a/sway/commands/sticky.c b/sway/commands/sticky.c
index 15b726cc..e79af8af 100644
--- a/sway/commands/sticky.c
+++ b/sway/commands/sticky.c
@@ -22,14 +22,9 @@ struct cmd_results *cmd_sticky(int argc, char **argv) {
22 return cmd_results_new(CMD_FAILURE, "No current container"); 22 return cmd_results_new(CMD_FAILURE, "No current container");
23 }; 23 };
24 24
25 if (!container_is_floating(container)) {
26 return cmd_results_new(CMD_FAILURE,
27 "Can't set sticky on a tiled container");
28 }
29
30 container->is_sticky = parse_boolean(argv[0], container->is_sticky); 25 container->is_sticky = parse_boolean(argv[0], container->is_sticky);
31 26
32 if (container->is_sticky && 27 if (container->is_sticky && container_is_floating_or_child(container) &&
33 (!container->scratchpad || container->workspace)) { 28 (!container->scratchpad || container->workspace)) {
34 // move container to active workspace 29 // move container to active workspace
35 struct sway_workspace *active_workspace = 30 struct sway_workspace *active_workspace =
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 97a52d91..0c0684c0 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -708,7 +708,6 @@ void container_set_floating(struct sway_container *container, bool enable) {
708 container->border = container->saved_border; 708 container->border = container->saved_border;
709 } 709 }
710 } 710 }
711 container->is_sticky = false;
712 } 711 }
713 712
714 container_end_mouse_operation(container); 713 container_end_mouse_operation(container);