diff options
| -rw-r--r-- | include/sway/tree/workspace.h | 6 | ||||
| -rw-r--r-- | sway/commands/workspace.c | 11 | ||||
| -rw-r--r-- | sway/tree/workspace.c | 30 | 
3 files changed, 14 insertions, 33 deletions
diff --git a/include/sway/tree/workspace.h b/include/sway/tree/workspace.h index 65ba247f..b3d93a81 100644 --- a/include/sway/tree/workspace.h +++ b/include/sway/tree/workspace.h @@ -69,13 +69,11 @@ struct sway_workspace *workspace_by_number(const char* name);  struct sway_workspace *workspace_by_name(const char*); -struct sway_workspace *workspace_output_next( -		struct sway_workspace *current, bool create); +struct sway_workspace *workspace_output_next(struct sway_workspace *current);  struct sway_workspace *workspace_next(struct sway_workspace *current); -struct sway_workspace *workspace_output_prev( -		struct sway_workspace *current, bool create); +struct sway_workspace *workspace_output_prev(struct sway_workspace *current);  struct sway_workspace *workspace_prev(struct sway_workspace *current); diff --git a/sway/commands/workspace.c b/sway/commands/workspace.c index 67db08ff..a6a0beda 100644 --- a/sway/commands/workspace.c +++ b/sway/commands/workspace.c @@ -187,12 +187,7 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {  			++argv;  		} -		bool create = argc > 1 && strcasecmp(argv[1], "--create") == 0;  		struct sway_seat *seat = config->handler_context.seat; -		struct sway_workspace *current = seat_get_focused_workspace(seat); -		if (!current) { -			return cmd_results_new(CMD_FAILURE, "No workspace to switch from"); -		}  		struct sway_workspace *ws = NULL;  		if (strcasecmp(argv[0], "number") == 0) { @@ -214,12 +209,10 @@ struct cmd_results *cmd_workspace(int argc, char **argv) {  			}  		} else if (strcasecmp(argv[0], "next") == 0 ||  				strcasecmp(argv[0], "prev") == 0 || +				strcasecmp(argv[0], "next_on_output") == 0 || +				strcasecmp(argv[0], "prev_on_output") == 0 ||  				strcasecmp(argv[0], "current") == 0) {  			ws = workspace_by_name(argv[0]); -		} else if (strcasecmp(argv[0], "next_on_output") == 0) { -			ws = workspace_output_next(current, create); -		} else if (strcasecmp(argv[0], "prev_on_output") == 0) { -			ws = workspace_output_prev(current, create);  		} else if (strcasecmp(argv[0], "back_and_forth") == 0) {  			if (!seat->prev_workspace_name) {  				return cmd_results_new(CMD_INVALID, diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index 7e98dc92..8dd7789d 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -222,10 +222,8 @@ static void workspace_name_from_binding(const struct sway_binding * binding,  		// not a command about workspaces  		if (strcmp(_target, "next") == 0 ||  				strcmp(_target, "prev") == 0 || -				strncmp(_target, "next_on_output", -					strlen("next_on_output")) == 0 || -				strncmp(_target, "prev_on_output", -					strlen("next_on_output")) == 0 || +				strcmp(_target, "next_on_output") == 0 || +				strcmp(_target, "prev_on_output") == 0 ||  				strcmp(_target, "number") == 0 ||  				strcmp(_target, "back_and_forth") == 0 ||  				strcmp(_target, "current") == 0) { @@ -363,11 +361,11 @@ struct sway_workspace *workspace_by_name(const char *name) {  	if (current && strcmp(name, "prev") == 0) {  		return workspace_prev(current);  	} else if (current && strcmp(name, "prev_on_output") == 0) { -		return workspace_output_prev(current, false); +		return workspace_output_prev(current);  	} else if (current && strcmp(name, "next") == 0) {  		return workspace_next(current);  	} else if (current && strcmp(name, "next_on_output") == 0) { -		return workspace_output_next(current, false); +		return workspace_output_next(current);  	} else if (strcmp(name, "current") == 0) {  		return current;  	} else if (strcasecmp(name, "back_and_forth") == 0) { @@ -530,7 +528,7 @@ struct sway_workspace *workspace_next(struct sway_workspace *workspace) {   * otherwise the next one is returned.   */  static struct sway_workspace *workspace_output_prev_next_impl( -		struct sway_output *output, int dir, bool create) { +		struct sway_output *output, int dir) {  	struct sway_seat *seat = input_manager_current_seat();  	struct sway_workspace *workspace = seat_get_focused_workspace(seat);  	if (!workspace) { @@ -540,25 +538,17 @@ static struct sway_workspace *workspace_output_prev_next_impl(  	}  	int index = list_find(output->workspaces, workspace); -	if (!workspace_is_empty(workspace) && create && -			(index + dir < 0 || index + dir == output->workspaces->length)) { -		struct sway_output *output = workspace->output; -		char *next = workspace_next_name(output->wlr_output->name); -		workspace_create(output, next); -		free(next); -	}  	size_t new_index = wrap(index + dir, output->workspaces->length);  	return output->workspaces->items[new_index];  } -struct sway_workspace *workspace_output_next( -		struct sway_workspace *current, bool create) { -	return workspace_output_prev_next_impl(current->output, 1, create); + +struct sway_workspace *workspace_output_next(struct sway_workspace *current) { +	return workspace_output_prev_next_impl(current->output, 1);  } -struct sway_workspace *workspace_output_prev( -		struct sway_workspace *current, bool create) { -	return workspace_output_prev_next_impl(current->output, -1, create); +struct sway_workspace *workspace_output_prev(struct sway_workspace *current) { +	return workspace_output_prev_next_impl(current->output, -1);  }  struct sway_workspace *workspace_auto_back_and_forth(  | 
