Make 'move' handle floating windows properly

This means you can now specify an amount of pixels for the move command. The
default is 10. Note that this of course only works for floating windows.

Example:
  move left 20 px
This commit is contained in:
Michael Stapelberg 2011-10-27 21:46:15 +01:00
parent edfa9febae
commit df980bffa4
1 changed files with 20 additions and 3 deletions

View File

@ -734,10 +734,27 @@ border_style:
;
move:
TOK_MOVE direction
TOK_MOVE direction resize_px
{
printf("moving in direction %d\n", $2);
tree_move($2);
int direction = $2;
int px = $3;
/* TODO: make 'move' work with criteria. */
printf("moving in direction %d\n", direction);
if (con_is_floating(focused)) {
printf("floating move with %d pixels\n", px);
if (direction == TOK_LEFT) {
focused->parent->rect.x -= px;
} else if (direction == TOK_RIGHT) {
focused->parent->rect.x += px;
} else if (direction == TOK_UP) {
focused->parent->rect.y -= px;
} else if (direction == TOK_DOWN) {
focused->parent->rect.y += px;
}
} else {
tree_move(direction);
}
tree_render();
}