Merge branch 'fix-wsnum'

This commit is contained in:
Michael Stapelberg 2011-08-04 00:10:56 +02:00
commit 8287a94292
7 changed files with 28 additions and 20 deletions

View File

@ -23,6 +23,7 @@
#include <err.h>
#include <stdint.h>
#include <math.h>
#include <limits.h>
#include <xcb/xcb.h>
#include <xcb/xcb_aux.h>

View File

@ -8,7 +8,6 @@
#include <sys/wait.h>
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>
#include "all.h"

View File

@ -13,7 +13,6 @@
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>
#include <float.h>
#include "all.h"

View File

@ -6,7 +6,6 @@
*
*/
#include <time.h>
#include <limits.h>
#include <xcb/randr.h>

View File

@ -3,7 +3,6 @@
*/
#include <ev.h>
#include <fcntl.h>
#include <limits.h>
#include "all.h"
static int xkb_event_base;

View File

@ -392,27 +392,40 @@ void init_ws_for_output(Output *output, Con *content) {
GREP_FIRST(current, output_get_content(out), !strcasecmp(child->name, ws->name));
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;
}
}
/* get the next unused workspace number */
DLOG("Getting next unused workspace\n");
int c = 0;
while (exists) {
c++;
if (exists) {
/* get the next unused workspace number */
DLOG("Getting next unused workspace by number\n");
int c = 0;
while (exists) {
c++;
FREE(ws->name);
asprintf(&(ws->name), "%d", c);
FREE(ws->name);
asprintf(&(ws->name), "%d", c);
current = NULL;
TAILQ_FOREACH(out, &(croot->nodes_head), nodes)
GREP_FIRST(current, output_get_content(out), !strcasecmp(child->name, ws->name));
exists = (current != NULL);
current = NULL;
TAILQ_FOREACH(out, &(croot->nodes_head), nodes)
GREP_FIRST(current, output_get_content(out), !strcasecmp(child->name, ws->name));
exists = (current != NULL);
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);
asprintf(&name, "[i3 con] workspace %s", ws->name);

View File

@ -7,8 +7,6 @@
* workspace.c: Functions for modifying workspaces
*
*/
#include <limits.h>
#include "all.h"
/*