Split workspace instead of changing orientation

Move all children of the workspace into a new container if there is more
than one otherwise simply change the orientation.

fixes #922
This commit is contained in:
Mats
2013-01-24 17:56:03 +01:00
committed by Michael Stapelberg
parent 1e3075e69b
commit fa4301e06d
2 changed files with 33 additions and 7 deletions

View File

@ -373,17 +373,23 @@ void tree_close_con(kill_window_t kill_window) {
*
*/
void tree_split(Con *con, orientation_t orientation) {
/* for a workspace, we just need to change orientation */
if (con->type == CT_WORKSPACE) {
DLOG("Workspace, simply changing orientation to %d\n", orientation);
con->layout = (orientation == HORIZ) ? L_SPLITH : L_SPLITV;
return;
}
else if (con->type == CT_FLOATING_CON) {
if (con->type == CT_FLOATING_CON) {
DLOG("Floating containers can't be split.\n");
return;
}
if (con->type == CT_WORKSPACE) {
if (con_num_children(con) < 2) {
DLOG("Just changing orientation of workspace\n");
con->layout = (orientation == HORIZ) ? L_SPLITH : L_SPLITV;
return;
} else {
/* if there is more than one container on the workspace
* move them into a new container and handle this instead */
con = workspace_encapsulate(con);
}
}
Con *parent = con->parent;
/* Force re-rendering to make the indicator border visible. */