aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index f63a35b5..f9dcb11a 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -219,14 +219,17 @@ void view_autoconfigure(struct sway_view *view) {
219 x = y = width = height = 0; 219 x = y = width = height = 0;
220 double y_offset = 0; 220 double y_offset = 0;
221 221
222 // In a tabbed or stacked container, the swayc's y is the bottom of the 222 // In a tabbed or stacked container, the container's y is the top of the
223 // title area. We have to disable any top border because the title bar is 223 // title area. We have to offset the surface y by the height of the title,
224 // rendered by the parent. 224 // bar, and disable any top border because we'll always have the title bar.
225 enum sway_container_layout layout = container_parent_layout(con); 225 enum sway_container_layout layout = container_parent_layout(con);
226 if (layout == L_TABBED || layout == L_STACKED) { 226 if (layout == L_TABBED) {
227 view->border_top = false;
228 } else {
229 y_offset = container_titlebar_height(); 227 y_offset = container_titlebar_height();
228 view->border_top = false;
229 } else if (layout == L_STACKED) {
230 list_t *siblings = container_get_siblings(con);
231 y_offset = container_titlebar_height() * siblings->length;
232 view->border_top = false;
230 } 233 }
231 234
232 enum sway_container_border border = view->border; 235 enum sway_container_border border = view->border;
@@ -237,17 +240,17 @@ void view_autoconfigure(struct sway_view *view) {
237 switch (border) { 240 switch (border) {
238 case B_NONE: 241 case B_NONE:
239 x = con->x; 242 x = con->x;
240 y = con->y; 243 y = con->y + y_offset;
241 width = con->width; 244 width = con->width;
242 height = con->height; 245 height = con->height - y_offset;
243 break; 246 break;
244 case B_PIXEL: 247 case B_PIXEL:
245 x = con->x + view->border_thickness * view->border_left; 248 x = con->x + view->border_thickness * view->border_left;
246 y = con->y + view->border_thickness * view->border_top; 249 y = con->y + view->border_thickness * view->border_top + y_offset;
247 width = con->width 250 width = con->width
248 - view->border_thickness * view->border_left 251 - view->border_thickness * view->border_left
249 - view->border_thickness * view->border_right; 252 - view->border_thickness * view->border_right;
250 height = con->height 253 height = con->height - y_offset
251 - view->border_thickness * view->border_top 254 - view->border_thickness * view->border_top
252 - view->border_thickness * view->border_bottom; 255 - view->border_thickness * view->border_bottom;
253 break; 256 break;
@@ -257,9 +260,15 @@ void view_autoconfigure(struct sway_view *view) {
257 width = con->width 260 width = con->width
258 - view->border_thickness * view->border_left 261 - view->border_thickness * view->border_left
259 - view->border_thickness * view->border_right; 262 - view->border_thickness * view->border_right;
260 y = con->y + y_offset; 263 if (y_offset) {
261 height = con->height - y_offset 264 y = con->y + y_offset;
262 - view->border_thickness * view->border_bottom; 265 height = con->height - y_offset
266 - view->border_thickness * view->border_bottom;
267 } else {
268 y = con->y + container_titlebar_height();
269 height = con->height - container_titlebar_height()
270 - view->border_thickness * view->border_bottom;
271 }
263 break; 272 break;
264 } 273 }
265 274