floating: use con_fix_percent

This commit is contained in:
Michael Stapelberg 2010-06-28 22:36:08 +02:00
parent 574e6b51d1
commit 2f4210d3cf
1 changed files with 3 additions and 11 deletions

View File

@ -22,17 +22,7 @@ void floating_enable(Con *con, bool automatic) {
TAILQ_REMOVE(&(con->parent->nodes_head), con, nodes); TAILQ_REMOVE(&(con->parent->nodes_head), con, nodes);
TAILQ_REMOVE(&(con->parent->focus_head), con, focused); TAILQ_REMOVE(&(con->parent->focus_head), con, focused);
Con *child; con_fix_percent(con->parent, WINDOW_REMOVE);
int children = 0;
TAILQ_FOREACH(child, &(con->parent->nodes_head), nodes)
children++;
/* TODO: better document why this math works */
double fix = 1.0 / (1.0 - (1.0 / (children+1)));
TAILQ_FOREACH(child, &(con->parent->nodes_head), nodes) {
if (child->percent <= 0.0)
continue;
child->percent *= fix;
}
/* 2: create a new container to render the decoration on, add /* 2: create a new container to render the decoration on, add
* it as a floating window to the workspace */ * it as a floating window to the workspace */
@ -72,6 +62,8 @@ void floating_disable(Con *con, bool automatic) {
TAILQ_INSERT_TAIL(&(con->parent->focus_head), con, focused); TAILQ_INSERT_TAIL(&(con->parent->focus_head), con, focused);
con->floating = FLOATING_USER_OFF; con->floating = FLOATING_USER_OFF;
con_fix_percent(con->parent, WINDOW_ADD);
} }