aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gaps.c8
-rw-r--r--src/render.c23
2 files changed, 20 insertions, 11 deletions
diff --git a/src/gaps.c b/src/gaps.c
index cd734c8c..3babe2b3 100644
--- a/src/gaps.c
+++ b/src/gaps.c
@@ -27,7 +27,7 @@ gaps_t calculate_effective_gaps(Con *con) {
return (gaps_t){0, 0, 0, 0, 0};
gaps_t gaps = {
- .inner = (workspace->gaps.inner + config.gaps.inner) / 2,
+ .inner = (workspace->gaps.inner + config.gaps.inner),
.top = 0,
.right = 0,
.bottom = 0,
@@ -40,12 +40,6 @@ gaps_t calculate_effective_gaps(Con *con) {
gaps.left = workspace->gaps.left + config.gaps.left;
}
- /* Outer gaps are added on top of inner gaps. */
- gaps.top += 2 * gaps.inner;
- gaps.right += 2 * gaps.inner;
- gaps.bottom += 2 * gaps.inner;
- gaps.left += 2 * gaps.inner;
-
return gaps;
}
diff --git a/src/render.c b/src/render.c
index fc2cedd9..b9fa3903 100644
--- a/src/render.c
+++ b/src/render.c
@@ -49,13 +49,28 @@ void render_con(Con *con) {
DLOG("Rendering node %p / %s / layout %d / children %d\n", con, con->name,
con->layout, params.children);
+ if (con->type == CT_WORKSPACE) {
+ gaps_t gaps = calculate_effective_gaps(con);
+ Rect inset = (Rect){
+ gaps.left,
+ gaps.top,
+ -(gaps.left + gaps.right),
+ -(gaps.top + gaps.bottom),
+ };
+ con->rect = rect_add(con->rect, inset);
+ params.rect = rect_add(params.rect, inset);
+ params.x += gaps.left;
+ params.y += gaps.top;
+ }
+
if (gaps_should_inset_con(con, params.children)) {
gaps_t gaps = calculate_effective_gaps(con);
Rect inset = (Rect){
- gaps_has_adjacent_container(con, D_LEFT) ? gaps.inner : gaps.left,
- gaps_has_adjacent_container(con, D_UP) ? gaps.inner : gaps.top,
- gaps_has_adjacent_container(con, D_RIGHT) ? -gaps.inner : -gaps.right,
- gaps_has_adjacent_container(con, D_DOWN) ? -gaps.inner : -gaps.bottom};
+ gaps_has_adjacent_container(con, D_LEFT) ? gaps.inner / 2 : gaps.inner,
+ gaps_has_adjacent_container(con, D_UP) ? gaps.inner / 2 : gaps.inner,
+ gaps_has_adjacent_container(con, D_RIGHT) ? -(gaps.inner / 2) : -gaps.inner,
+ gaps_has_adjacent_container(con, D_DOWN) ? -(gaps.inner / 2) : -gaps.inner,
+ };
inset.width -= inset.x;
inset.height -= inset.y;