refactor some places to use output_get_content()

next
Michael Stapelberg 2011-02-21 01:55:36 +01:00
parent a92b9dca73
commit 9719b21243
2 changed files with 38 additions and 57 deletions

View File

@ -288,50 +288,44 @@ IPC_HANDLER(get_workspaces) {
Con *output;
TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
Con *child;
TAILQ_FOREACH(child, &(output->nodes_head), nodes) {
if (child->type != CT_CON)
continue;
Con *ws;
TAILQ_FOREACH(ws, &(output_get_content(output)->nodes_head), nodes) {
assert(ws->type == CT_WORKSPACE);
y(map_open);
Con *ws;
TAILQ_FOREACH(ws, &(child->nodes_head), nodes) {
assert(ws->type == CT_WORKSPACE);
y(map_open);
ystr("num");
if (ws->num == -1)
y(null);
else y(integer, ws->num);
ystr("num");
if (ws->num == -1)
y(null);
else y(integer, ws->num);
ystr("name");
ystr(ws->name);
ystr("name");
ystr(ws->name);
ystr("visible");
y(bool, workspace_is_visible(ws));
ystr("visible");
y(bool, workspace_is_visible(ws));
ystr("focused");
y(bool, ws == focused_ws);
ystr("focused");
y(bool, ws == focused_ws);
ystr("rect");
y(map_open);
ystr("x");
y(integer, ws->rect.x);
ystr("y");
y(integer, ws->rect.y);
ystr("width");
y(integer, ws->rect.width);
ystr("height");
y(integer, ws->rect.height);
y(map_close);
ystr("rect");
y(map_open);
ystr("x");
y(integer, ws->rect.x);
ystr("y");
y(integer, ws->rect.y);
ystr("width");
y(integer, ws->rect.width);
ystr("height");
y(integer, ws->rect.height);
y(map_close);
ystr("output");
ystr(output->name);
ystr("output");
ystr(output->name);
ystr("urgent");
y(bool, ws->urgent);
ystr("urgent");
y(bool, ws->urgent);
y(map_close);
}
y(map_close);
}
}

View File

@ -18,39 +18,26 @@
*
*/
Con *workspace_get(const char *num) {
Con *output, *workspace = NULL, *current, *child;
Con *output, *workspace = NULL, *child;
/* TODO: could that look like this in the future?
GET_MATCHING_NODE(workspace, croot, strcasecmp(current->name, num) != 0);
*/
TAILQ_FOREACH(output, &(croot->nodes_head), nodes) {
TAILQ_FOREACH(current, &(output->nodes_head), nodes) {
if (current->type != CT_CON)
TAILQ_FOREACH(output, &(croot->nodes_head), nodes)
TAILQ_FOREACH(child, &(output_get_content(output)->nodes_head), nodes) {
if (strcasecmp(child->name, num) != 0)
continue;
TAILQ_FOREACH(child, &(current->nodes_head), nodes) {
if (strcasecmp(child->name, num) != 0)
continue;
workspace = child;
break;
}
workspace = child;
break;
}
}
LOG("getting ws %s\n", num);
if (workspace == NULL) {
LOG("need to create this one\n");
output = con_get_output(focused);
Con *child, *content = NULL;
TAILQ_FOREACH(child, &(output->nodes_head), nodes) {
if (child->type == CT_CON) {
content = child;
break;
}
}
assert(content != NULL);
LOG("got output %p with child %p\n", output, content);
Con *content = output_get_content(output);
LOG("got output %p with content %p\n", output, content);
/* We need to attach this container after setting its type. con_attach
* will handle CT_WORKSPACEs differently */
workspace = con_new(NULL);