From 7270b747325e16d35ccd8bc2dacba82dc25ebb99 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 23 Jan 2010 18:57:29 +0100 Subject: [PATCH] Implement resize command for floating clients --- src/commands.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/commands.c b/src/commands.c index 8205d224..1bec7a84 100644 --- a/src/commands.c +++ b/src/commands.c @@ -806,7 +806,34 @@ static void parse_resize_command(xcb_connection_t *conn, Client *last_focused, c int first, second; resize_orientation_t orientation = O_VERTICAL; Container *con = last_focused->container; - Workspace *ws = con->workspace; + Workspace *ws = last_focused->workspace; + + if (client_is_floating(last_focused)) { + DLOG("Resizing a floating client\n"); + if (STARTS_WITH(command, "left")) { + command += strlen("left"); + last_focused->rect.width += atoi(command); + last_focused->rect.x -= atoi(command); + } else if (STARTS_WITH(command, "right")) { + command += strlen("right"); + last_focused->rect.width += atoi(command); + } else if (STARTS_WITH(command, "top")) { + command += strlen("top"); + last_focused->rect.height += atoi(command); + last_focused->rect.y -= atoi(command); + } else if (STARTS_WITH(command, "bottom")) { + command += strlen("bottom"); + last_focused->rect.height += atoi(command); + } else { + ELOG("Syntax: resize [+|-]\n"); + return; + } + + /* resize_client flushes */ + resize_client(conn, last_focused); + + return; + } if (STARTS_WITH(command, "left")) { if (con->col == 0) -- 2.39.5