From df980bffa4efbb7f37af876292177a6507334c84 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Thu, 27 Oct 2011 21:46:15 +0100 Subject: [PATCH] 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 --- src/cmdparse.y | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) 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(); } -- 2.39.5