Bugfix: Use the appropriate number when assigning numbered workspaces in randr.c

This commit is contained in:
Michael Stapelberg 2011-08-04 00:10:23 +02:00
parent c883e7050a
commit d0741975f1
1 changed files with 27 additions and 14 deletions

View File

@ -392,12 +392,24 @@ void init_ws_for_output(Output *output, Con *content) {
GREP_FIRST(current, output_get_content(out), !strcasecmp(child->name, ws->name)); GREP_FIRST(current, output_get_content(out), !strcasecmp(child->name, ws->name));
exists = (current != NULL); exists = (current != NULL);
if (!exists) if (!exists) {
/* Set ->num to the number of the workspace, if the name actually
* is a number or starts with a number */
long parsed_num = strtol(ws->name, NULL, 10);
if (parsed_num == LONG_MIN ||
parsed_num == LONG_MAX ||
parsed_num <= 0)
ws->num = -1;
else ws->num = parsed_num;
LOG("Used number %d for workspace with name %s\n", ws->num, ws->name);
break; break;
} }
}
if (exists) {
/* get the next unused workspace number */ /* get the next unused workspace number */
DLOG("Getting next unused workspace\n"); DLOG("Getting next unused workspace by number\n");
int c = 0; int c = 0;
while (exists) { while (exists) {
c++; c++;
@ -413,6 +425,7 @@ void init_ws_for_output(Output *output, Con *content) {
DLOG("result for ws %s / %d: exists = %d\n", ws->name, c, exists); DLOG("result for ws %s / %d: exists = %d\n", ws->name, c, exists);
} }
ws->num = c; ws->num = c;
}
con_attach(ws, content, false); con_attach(ws, content, false);
asprintf(&name, "[i3 con] workspace %s", ws->name); asprintf(&name, "[i3 con] workspace %s", ws->name);