From 6fd56757f063c3d89a94c87ed35dca3ddf66e5da Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 26 Mar 2010 00:13:28 +0100 Subject: [PATCH] Bugfix: Assign all workspace to new outputs as new outputs get available (Thanks badboy) --- src/randr.c | 13 +++++++++++++ src/workspace.c | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) 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); } /*