X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fworkspace.c;h=8104aa89fc35d6da21765408718255e5d06a0473;hb=36583ec6ee7ada36764a492fdaae158a5cdd04c3;hp=77b5ceb2eca52b91276ecd13d3d0ce7214ef9f42;hpb=c0563af3e27543d97eb3d201c2e197cc6285cb80;p=i3%2Fi3 diff --git a/src/workspace.c b/src/workspace.c index 77b5ceb2..8104aa89 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -59,7 +59,18 @@ Con *workspace_get(const char *num, bool *created) { workspace->num = -1; else workspace->num = parsed_num; LOG("num = %d\n", workspace->num); - workspace->orientation = HORIZ; + + /* If default_orientation is set to NO_ORIENTATION we + * determine workspace orientation from workspace size. + * Otherwise we just set the orientation to default_orientation. */ + if (config.default_orientation == NO_ORIENTATION) { + workspace->orientation = (output->rect.height > output->rect.width) ? VERT : HORIZ; + DLOG("Auto orientation. Output resolution set to (%d,%d), setting orientation to %d.\n", + workspace->rect.width, workspace->rect.height, workspace->orientation); + } else { + workspace->orientation = config.default_orientation; + } + con_attach(workspace, content, false); ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"init\"}"); @@ -216,18 +227,13 @@ void workspace_show(const char *num) { } assert(old != NULL); - /* Check if the the currently focused con is on the same Output as the - * workspace we chose as 'old'. If not, use the workspace of the currently - * focused con */ - Con *ws = con_get_workspace(focused); - if (ws && ws->parent != old->parent) - old = ws; - /* enable fullscreen for the target workspace. If it happens to be the * same one we are currently on anyways, we can stop here. */ workspace->fullscreen_mode = CF_OUTPUT; - if (workspace == old) + if (workspace == con_get_workspace(focused)) { + DLOG("Not switching, already there.\n"); return; + } workspace_reassign_sticky(workspace);