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\"}");
}
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);