From 200833caaea36dd65324e5460520731f5c98ff8a Mon Sep 17 00:00:00 2001 From: mliszcz Date: Sat, 23 Mar 2019 11:32:44 +0100 Subject: Allow for workspace renaming during exec handling This change adds support for renaming a workspace when `exec` command is being processed by keeping sway_workspace and pid_workspace names in sync. The change can be verified by running following command: swaymsg exec ; swaymsg rename workspace number 1 to 5 Fixes: #3952 --- sway/tree/root.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'sway/tree/root.c') diff --git a/sway/tree/root.c b/sway/tree/root.c index 0744192b..5dde9f22 100644 --- a/sway/tree/root.c +++ b/sway/tree/root.c @@ -390,3 +390,17 @@ void root_get_box(struct sway_root *root, struct wlr_box *box) { box->width = root->width; box->height = root->height; } + +void root_rename_pid_workspaces(const char *old_name, const char *new_name) { + if (!pid_workspaces.prev && !pid_workspaces.next) { + wl_list_init(&pid_workspaces); + } + + struct pid_workspace *pw = NULL; + wl_list_for_each(pw, &pid_workspaces, link) { + if (strcmp(pw->workspace, old_name) == 0) { + free(pw->workspace); + pw->workspace = strdup(new_name); + } + } +} -- cgit v1.2.3-54-g00ecf