From: Michael Stapelberg Date: Thu, 25 Mar 2010 23:13:28 +0000 (+0100) Subject: Bugfix: Assign all workspace to new outputs as new outputs get available (Thanks... X-Git-Tag: 3.e~6^2~28 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=6fd56757f063c3d89a94c87ed35dca3ddf66e5da;p=i3%2Fi3 Bugfix: Assign all workspace to new outputs as new outputs get available (Thanks badboy) --- diff --git a/src/randr.c b/src/randr.c index f9e2a416..6d4bbef9 100644 --- a/src/randr.c +++ b/src/randr.c @@ -193,6 +193,19 @@ void initialize_output(xcb_connection_t *conn, Output *output, Workspace *worksp ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"init\"}"); DLOG("initialized output at (%d, %d) with %d x %d\n", output->rect.x, output->rect.y, output->rect.width, output->rect.height); + + DLOG("assigning configured workspaces to this output...\n"); + Workspace *ws; + TAILQ_FOREACH(ws, workspaces, workspaces) { + if (ws == workspace) + continue; + if (ws->preferred_output == NULL || + get_output_by_name(ws->preferred_output) != output) + continue; + + DLOG("assigning ws %d\n", ws->num + 1); + workspace_assign_to(ws, output, true); + } } /* diff --git a/src/workspace.c b/src/workspace.c index 3fe4751b..c950df8f 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -103,7 +103,7 @@ void workspace_set_name(Workspace *ws, const char *name) { * */ bool workspace_is_visible(Workspace *ws) { - return (ws->output->current_workspace == ws); + return (ws->output != NULL && ws->output->current_workspace == ws); } /*