From 9f353996feb8ebab74ca747d319dd3c6746afca7 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 7 Apr 2013 09:58:34 +0200 Subject: [PATCH] tabbed: floor(), put extra pixels into the last tab (Thanks xeen) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the only sane way I can think of to deal with the problem that the screen size may not be dividable by the amount of tabbed children (e.g. 1280 / 41 = 31.219512…). fixes #645 fixes #791 --- src/render.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/render.c b/src/render.c index 16bfc55b..6061838a 100644 --- a/src/render.c +++ b/src/render.c @@ -372,10 +372,16 @@ void render_con(Con *con, bool render_fullscreen) { child->rect.width = rect.width; child->rect.height = rect.height; - child->deco_rect.width = ceil((float)child->rect.width / children); + child->deco_rect.width = floor((float)child->rect.width / children); child->deco_rect.x = x - con->rect.x + i * child->deco_rect.width; child->deco_rect.y = y - con->rect.y; + /* Since the tab width may be something like 31,6 px per tab, we + * let the last tab have all the extra space (0,6 * children). */ + if (i == (children-1)) { + child->deco_rect.width += (child->rect.width - (child->deco_rect.x + child->deco_rect.width)); + } + if (children > 1 || (child->border_style != BS_PIXEL && child->border_style != BS_NONE)) { child->rect.y += deco_height; child->rect.height -= deco_height;