|
|
|
@ -25,8 +25,22 @@ struct workspace_by_number_data {
|
|
|
|
|
const char *name;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
char *workspace_next_name(void) {
|
|
|
|
|
sway_log(L_DEBUG, "Workspace: Generating new name");
|
|
|
|
|
static bool workspace_valid_on_output(const char *output_name, const char *ws_name) {
|
|
|
|
|
int i;
|
|
|
|
|
for (i = 0; i < config->workspace_outputs->length; ++i) {
|
|
|
|
|
struct workspace_output *wso = config->workspace_outputs->items[i];
|
|
|
|
|
if (strcasecmp(wso->workspace, ws_name) == 0) {
|
|
|
|
|
if (strcasecmp(wso->output, output_name) != 0) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *workspace_next_name(const char *output_name) {
|
|
|
|
|
sway_log(L_DEBUG, "Workspace: Generating new workspace name for output %s", output_name);
|
|
|
|
|
int i;
|
|
|
|
|
int l = 1;
|
|
|
|
|
// Scan all workspace bindings to find the next available workspace name,
|
|
|
|
@ -73,6 +87,14 @@ char *workspace_next_name(void) {
|
|
|
|
|
free(_target);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// make sure that the workspace can appear on the given
|
|
|
|
|
// output
|
|
|
|
|
if (!workspace_valid_on_output(output_name, _target)) {
|
|
|
|
|
free(_target);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (binding->order < order) {
|
|
|
|
|
order = binding->order;
|
|
|
|
|
target = _target;
|
|
|
|
|