From: Michael Stapelberg Date: Thu, 27 Oct 2011 20:46:15 +0000 (+0100) Subject: Make 'move' handle floating windows properly X-Git-Tag: 4.1~40^2~1 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=df980bffa4efbb7f37af876292177a6507334c84;p=i3%2Fi3 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 --- diff --git a/src/cmdparse.y b/src/cmdparse.y index 3eb33426..0144524b 100644 --- a/src/cmdparse.y +++ b/src/cmdparse.y @@ -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(); }