diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-10-27 11:23:02 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-10-27 11:23:02 +1000 |
commit | 65328ef60c9468ae44b4b1d6316d604c47293ec3 (patch) | |
tree | 6e4e16650740ae2ad1f76bdd357d2747e7569a8e /sway/tree/view.c | |
parent | Merge pull request #2993 from mwenzkowski/fix-2992 (diff) | |
download | sway-65328ef60c9468ae44b4b1d6316d604c47293ec3.tar.gz sway-65328ef60c9468ae44b4b1d6316d604c47293ec3.tar.zst sway-65328ef60c9468ae44b4b1d6316d604c47293ec3.zip |
Respect border settings when rendering lone tabbed/stacked child
In i3, when a child of a tabbed or stacked container has no siblings,
its border settings are respected.
This patch achieves the same effect by rendering a lone tabbed/stacked
child as if it's a linear container. This makes the border settings be
respected.
Over in view_autoconfigure, we compensate for this by only adjusting
`y_offset` if there's multiple children.
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r-- | sway/tree/view.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index 4bc9e0f3..5a1b2e37 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -242,23 +242,23 @@ void view_autoconfigure(struct sway_view *view) { | |||
242 | view->border_bottom = bottom_y != ws->y + ws->height; | 242 | view->border_bottom = bottom_y != ws->y + ws->height; |
243 | } | 243 | } |
244 | 244 | ||
245 | double x, y, width, height; | ||
246 | x = y = width = height = 0; | ||
247 | double y_offset = 0; | ||
248 | |||
249 | // In a tabbed or stacked container, the container's y is the top of the | 245 | // In a tabbed or stacked container, the container's y is the top of the |
250 | // title area. We have to offset the surface y by the height of the title, | 246 | // title area. We have to offset the surface y by the height of the title, |
251 | // bar, and disable any top border because we'll always have the title bar. | 247 | // bar, and disable any top border because we'll always have the title bar. |
248 | double y_offset = 0; | ||
252 | enum sway_container_layout layout = container_parent_layout(con); | 249 | enum sway_container_layout layout = container_parent_layout(con); |
253 | if (layout == L_TABBED && !container_is_floating(con)) { | 250 | list_t *siblings = container_get_siblings(con); |
254 | y_offset = container_titlebar_height(); | 251 | if (siblings->length > 1 && !container_is_floating(con)) { |
255 | view->border_top = false; | 252 | if (layout == L_TABBED) { |
256 | } else if (layout == L_STACKED && !container_is_floating(con)) { | 253 | y_offset = container_titlebar_height(); |
257 | list_t *siblings = container_get_siblings(con); | 254 | view->border_top = false; |
258 | y_offset = container_titlebar_height() * siblings->length; | 255 | } else if (layout == L_STACKED) { |
259 | view->border_top = false; | 256 | y_offset = container_titlebar_height() * siblings->length; |
257 | view->border_top = false; | ||
258 | } | ||
260 | } | 259 | } |
261 | 260 | ||
261 | double x, y, width, height = 0; | ||
262 | switch (view->border) { | 262 | switch (view->border) { |
263 | case B_CSD: | 263 | case B_CSD: |
264 | case B_NONE: | 264 | case B_NONE: |