mirror of
https://github.com/swaywm/sway.git
synced 2024-11-26 18:01:29 +00:00
Merge pull request #160 from taiyu-len/master
cleaned up leaky prev_workspace_name
This commit is contained in:
commit
569c6710a9
|
@ -822,11 +822,8 @@ static bool cmd_workspace(struct sway_config *config, int argc, char **argv) {
|
|||
}
|
||||
if (strcasecmp(argv[0], "back_and_forth") == 0) {
|
||||
if (prev_workspace_name) {
|
||||
if (workspace_by_name(prev_workspace_name)) {
|
||||
workspace_switch(workspace_by_name(prev_workspace_name));
|
||||
} else {
|
||||
workspace_switch(workspace_create(prev_workspace_name));
|
||||
}
|
||||
swayc_t *ws = workspace_by_name(prev_workspace_name);
|
||||
workspace_switch(ws ? ws : workspace_create(prev_workspace_name));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include "focus.h"
|
||||
#include "util.h"
|
||||
|
||||
char *prev_workspace_name = "";
|
||||
char *prev_workspace_name = NULL;
|
||||
|
||||
char *workspace_next_name(void) {
|
||||
sway_log(L_DEBUG, "Workspace: Generating new name");
|
||||
|
@ -182,13 +182,18 @@ void workspace_switch(swayc_t *workspace) {
|
|||
if (!workspace) {
|
||||
return;
|
||||
}
|
||||
if (strcmp(prev_workspace_name, swayc_active_workspace()->name) != 0 && swayc_active_workspace() != workspace) {
|
||||
prev_workspace_name = malloc(strlen(swayc_active_workspace()->name) + 1);
|
||||
strcpy(prev_workspace_name, swayc_active_workspace()->name);
|
||||
} else if (config->auto_back_and_forth && swayc_active_workspace() == workspace && strlen(prev_workspace_name) != 0) {
|
||||
workspace = workspace_by_name(prev_workspace_name) ? workspace_by_name(prev_workspace_name) : workspace_create(prev_workspace_name);
|
||||
prev_workspace_name = malloc(strlen(swayc_active_workspace()->name) + 1);
|
||||
strcpy(prev_workspace_name, swayc_active_workspace()->name);
|
||||
swayc_t *active_ws = swayc_active_workspace();
|
||||
if (config->auto_back_and_forth && active_ws == workspace && prev_workspace_name) {
|
||||
swayc_t *new_ws = workspace_by_name(prev_workspace_name);
|
||||
workspace = new_ws ? new_ws : workspace_create(prev_workspace_name);
|
||||
}
|
||||
|
||||
if (!prev_workspace_name
|
||||
|| (strcmp(prev_workspace_name, active_ws->name)
|
||||
&& active_ws != workspace)) {
|
||||
free(prev_workspace_name);
|
||||
prev_workspace_name = malloc(strlen(active_ws->name)+1);
|
||||
strcpy(prev_workspace_name, active_ws->name);
|
||||
}
|
||||
|
||||
sway_log(L_DEBUG, "Switching to workspace %p:%s", workspace, workspace->name);
|
||||
|
|
Loading…
Reference in a new issue