aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/workspace.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-10-21 11:26:22 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-10-21 11:26:22 +1000
commitc5a6c37275978ddc8c221ca73ae1a39254dd68f5 (patch)
tree2255d845647357cdbe6fdfcb1c6a40210a69ddb7 /sway/commands/workspace.c
parentMerge pull request #2901 from ianyfan/swaybar (diff)
downloadsway-c5a6c37275978ddc8c221ca73ae1a39254dd68f5.tar.gz
sway-c5a6c37275978ddc8c221ca73ae1a39254dd68f5.tar.zst
sway-c5a6c37275978ddc8c221ca73ae1a39254dd68f5.zip
Make workspace back_and_forth seat-specific
* When using multiple seats, each seat has its own prev_workspace_name for the purpose of workspace back_and_forth. * Removes prev_workspace_name global variable. * Removes unused next_name_map function in tree/workspace.c. * Fixes memory leak in seat_destroy (seat was not freed).
Diffstat (limited to 'sway/commands/workspace.c')
-rw-r--r--sway/commands/workspace.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sway/commands/workspace.c b/sway/commands/workspace.c
index da597f8a..745b40c7 100644
--- a/sway/commands/workspace.c
+++ b/sway/commands/workspace.c
@@ -142,12 +142,13 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {
142 strcasecmp(argv[0], "current") == 0) { 142 strcasecmp(argv[0], "current") == 0) {
143 ws = workspace_by_name(argv[0]); 143 ws = workspace_by_name(argv[0]);
144 } else if (strcasecmp(argv[0], "back_and_forth") == 0) { 144 } else if (strcasecmp(argv[0], "back_and_forth") == 0) {
145 if (!prev_workspace_name) { 145 struct sway_seat *seat = config->handler_context.seat;
146 if (!seat->prev_workspace_name) {
146 return cmd_results_new(CMD_INVALID, "workspace", 147 return cmd_results_new(CMD_INVALID, "workspace",
147 "There is no previous workspace"); 148 "There is no previous workspace");
148 } 149 }
149 if (!(ws = workspace_by_name(argv[0]))) { 150 if (!(ws = workspace_by_name(argv[0]))) {
150 ws = workspace_create(NULL, prev_workspace_name); 151 ws = workspace_create(NULL, seat->prev_workspace_name);
151 } 152 }
152 } else { 153 } else {
153 char *name = join_args(argv, argc); 154 char *name = join_args(argv, argc);