aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-09-05 21:14:19 -0400
committerLibravatar GitHub <noreply@github.com>2018-09-05 21:14:19 -0400
commitf25588113435abdc3b6f9729897e92387f400340 (patch)
tree69d8d2b3f1e1b71fdb855ebb1074a0953154f9c7
parentMerge pull request #2580 from RyanDwyer/fix-focus-after-fullscreen (diff)
parentAdjust container box (diff)
downloadsway-f25588113435abdc3b6f9729897e92387f400340.tar.gz
sway-f25588113435abdc3b6f9729897e92387f400340.tar.zst
sway-f25588113435abdc3b6f9729897e92387f400340.zip
Merge pull request #2579 from RyanDwyer/adjust-container-box
Adjust container box
-rw-r--r--sway/tree/arrange.c11
-rw-r--r--sway/tree/view.c35
2 files changed, 27 insertions, 19 deletions
diff --git a/sway/tree/arrange.c b/sway/tree/arrange.c
index edb05f86..d50be25d 100644
--- a/sway/tree/arrange.c
+++ b/sway/tree/arrange.c
@@ -97,15 +97,14 @@ static void apply_tabbed_layout(list_t *children, struct wlr_box *parent) {
97 if (!children->length) { 97 if (!children->length) {
98 return; 98 return;
99 } 99 }
100 size_t parent_offset = container_titlebar_height();
101 size_t parent_height = parent->height - parent_offset;
102 for (int i = 0; i < children->length; ++i) { 100 for (int i = 0; i < children->length; ++i) {
103 struct sway_container *child = children->items[i]; 101 struct sway_container *child = children->items[i];
102 size_t parent_offset = child->view ? 0 : container_titlebar_height();
104 container_remove_gaps(child); 103 container_remove_gaps(child);
105 child->x = parent->x; 104 child->x = parent->x;
106 child->y = parent->y + parent_offset; 105 child->y = parent->y + parent_offset;
107 child->width = parent->width; 106 child->width = parent->width;
108 child->height = parent_height; 107 child->height = parent->height - parent_offset;
109 container_add_gaps(child); 108 container_add_gaps(child);
110 } 109 }
111} 110}
@@ -114,15 +113,15 @@ static void apply_stacked_layout(list_t *children, struct wlr_box *parent) {
114 if (!children->length) { 113 if (!children->length) {
115 return; 114 return;
116 } 115 }
117 size_t parent_offset = container_titlebar_height() * children->length;
118 size_t parent_height = parent->height - parent_offset;
119 for (int i = 0; i < children->length; ++i) { 116 for (int i = 0; i < children->length; ++i) {
120 struct sway_container *child = children->items[i]; 117 struct sway_container *child = children->items[i];
118 size_t parent_offset = child->view ? 0 :
119 container_titlebar_height() * children->length;
121 container_remove_gaps(child); 120 container_remove_gaps(child);
122 child->x = parent->x; 121 child->x = parent->x;
123 child->y = parent->y + parent_offset; 122 child->y = parent->y + parent_offset;
124 child->width = parent->width; 123 child->width = parent->width;
125 child->height = parent_height; 124 child->height = parent->height - parent_offset;
126 container_add_gaps(child); 125 container_add_gaps(child);
127 } 126 }
128} 127}
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