From 5ab4930185d32c5ac1adbf56f7b74525a2bab98d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 20 May 2018 15:34:08 +1000 Subject: Fix tab border issues --- sway/tree/view.c | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) (limited to 'sway/tree/view.c') diff --git a/sway/tree/view.c b/sway/tree/view.c index 51316507..64597c02 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -167,32 +167,53 @@ void view_autoconfigure(struct sway_view *view) { double x, y, width, height; x = y = width = height = 0; + double y_offset = 0; + + // In a tabbed or stacked container, the swayc's y is the top of the title + // area. We have to offset the surface y by the height of the title bar, and + // disable any top border because we'll always have the title bar. + if (view->swayc->parent->layout == L_TABBED) { + y_offset = config->border_thickness * 2 + config->font_height; + view->border_top = 0; + } else if (view->swayc->parent->layout == L_STACKED) { + y_offset = config->border_thickness * 2 + config->font_height; + y_offset *= view->swayc->parent->children->length; + view->border_top = 0; + } + switch (view->border) { case B_NONE: x = view->swayc->x; - y = view->swayc->y; + y = view->swayc->y + y_offset; width = view->swayc->width; - height = view->swayc->height; + height = view->swayc->height - y_offset; break; case B_PIXEL: x = view->swayc->x + view->border_thickness * view->border_left; - y = view->swayc->y + view->border_thickness * view->border_top; + y = view->swayc->y + view->border_thickness * view->border_top + y_offset; width = view->swayc->width - view->border_thickness * view->border_left - view->border_thickness * view->border_right; - height = view->swayc->height + height = view->swayc->height - y_offset - view->border_thickness * view->border_top - view->border_thickness * view->border_bottom; break; case B_NORMAL: // Height is: border + title height + border + view height + border x = view->swayc->x + view->border_thickness * view->border_left; - y = view->swayc->y + config->font_height + view->border_thickness * 2; width = view->swayc->width - view->border_thickness * view->border_left - view->border_thickness * view->border_right; - height = view->swayc->height - config->font_height - - view->border_thickness * (2 + view->border_bottom); + if (y_offset) { + y = view->swayc->y + y_offset; + height = view->swayc->height - y_offset + - view->border_thickness * view->border_bottom; + } else { + y = view->swayc->y + config->font_height + view->border_thickness * 2 + + y_offset; + height = view->swayc->height - config->font_height + - view->border_thickness * (2 + view->border_bottom); + } break; } -- cgit v1.2.3-54-g00ecf