Merge pull request #2994 from RyanDwyer/respect-lone-child-border

Respect border settings when rendering lone tabbed/stacked child
This commit is contained in:
Drew DeVault 2018-10-27 05:29:47 +02:00 committed by GitHub
commit 25a8f7dcb8
Failed to generate hash of commit
2 changed files with 18 additions and 11 deletions

View file

@ -781,6 +781,13 @@ static void render_containers_stacked(struct sway_output *output,
static void render_containers(struct sway_output *output,
pixman_region32_t *damage, struct parent_data *parent) {
if (parent->children->length == 1) {
struct sway_container *child = parent->children->items[0];
if (child->view) {
render_containers_linear(output, damage, parent);
return;
}
}
switch (parent->layout) {
case L_NONE:
case L_HORIZ:

View file

@ -242,23 +242,23 @@ void view_autoconfigure(struct sway_view *view) {
view->border_bottom = bottom_y != ws->y + ws->height;
}
double x, y, width, height;
x = y = width = height = 0;
double y_offset = 0;
// In a tabbed or stacked container, the container'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.
double y_offset = 0;
enum sway_container_layout layout = container_parent_layout(con);
if (layout == L_TABBED && !container_is_floating(con)) {
y_offset = container_titlebar_height();
view->border_top = false;
} else if (layout == L_STACKED && !container_is_floating(con)) {
list_t *siblings = container_get_siblings(con);
y_offset = container_titlebar_height() * siblings->length;
view->border_top = false;
list_t *siblings = container_get_siblings(con);
if (siblings->length > 1 && !container_is_floating(con)) {
if (layout == L_TABBED) {
y_offset = container_titlebar_height();
view->border_top = false;
} else if (layout == L_STACKED) {
y_offset = container_titlebar_height() * siblings->length;
view->border_top = false;
}
}
double x, y, width, height = 0;
switch (view->border) {
case B_CSD:
case B_NONE: