Bugfix: don’t change tabbed/stacked cons to splitv/splith layout (Thanks Merovius)

To automagically do the right thing when rotating monitors with regards
to splith/splitv layout (depending on width/height of the monitor), we
change the orientation of existing workspaces and the first child.

If that first child happens to be a stacked/tabbed con, we cannot change
the layout unconditionally (previously, the orientation was not in the
layout, so we never noticed this problem).

fixes #768
This commit is contained in:
Michael Stapelberg 2012-08-17 01:53:45 +02:00
parent ba8b5c480d
commit 5257a1268f
1 changed files with 2 additions and 1 deletions

View File

@ -464,7 +464,8 @@ static void output_change_mode(xcb_connection_t *conn, Output *output) {
workspace->layout = (output->rect.height > output->rect.width) ? L_SPLITV : L_SPLITH; workspace->layout = (output->rect.height > output->rect.width) ? L_SPLITV : L_SPLITH;
DLOG("Setting workspace [%d,%s]'s layout to %d.\n", workspace->num, workspace->name, workspace->layout); DLOG("Setting workspace [%d,%s]'s layout to %d.\n", workspace->num, workspace->name, workspace->layout);
if ((child = TAILQ_FIRST(&(workspace->nodes_head)))) { if ((child = TAILQ_FIRST(&(workspace->nodes_head)))) {
child->layout = workspace->layout; if (child->layout == L_SPLITV || child->layout == L_SPLITH)
child->layout = workspace->layout;
DLOG("Setting child [%d,%s]'s layout to %d.\n", child->num, child->name, child->layout); DLOG("Setting child [%d,%s]'s layout to %d.\n", child->num, child->name, child->layout);
} }
} }