diff options
Diffstat (limited to 'sway/commands/resize.c')
-rw-r--r-- | sway/commands/resize.c | 112 |
1 files changed, 56 insertions, 56 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c index ca36e858..425069de 100644 --- a/sway/commands/resize.c +++ b/sway/commands/resize.c | |||
@@ -57,7 +57,7 @@ struct sway_container *container_find_resize_parent(struct sway_container *con, | |||
57 | (allow_last || index < siblings->length - 1)) { | 57 | (allow_last || index < siblings->length - 1)) { |
58 | return con; | 58 | return con; |
59 | } | 59 | } |
60 | con = con->parent; | 60 | con = con->pending.parent; |
61 | } | 61 | } |
62 | 62 | ||
63 | return NULL; | 63 | return NULL; |
@@ -115,13 +115,13 @@ void container_resize_tiled(struct sway_container *con, | |||
115 | int sibling_amount = prev ? ceil((double)amount / 2.0) : amount; | 115 | int sibling_amount = prev ? ceil((double)amount / 2.0) : amount; |
116 | 116 | ||
117 | if (is_horizontal(axis)) { | 117 | if (is_horizontal(axis)) { |
118 | if (con->width + amount < MIN_SANE_W) { | 118 | if (con->pending.width + amount < MIN_SANE_W) { |
119 | return; | 119 | return; |
120 | } | 120 | } |
121 | if (next->width - sibling_amount < MIN_SANE_W) { | 121 | if (next->pending.width - sibling_amount < MIN_SANE_W) { |
122 | return; | 122 | return; |
123 | } | 123 | } |
124 | if (prev && prev->width - sibling_amount < MIN_SANE_W) { | 124 | if (prev && prev->pending.width - sibling_amount < MIN_SANE_W) { |
125 | return; | 125 | return; |
126 | } | 126 | } |
127 | if (con->child_total_width <= 0) { | 127 | if (con->child_total_width <= 0) { |
@@ -133,7 +133,7 @@ void container_resize_tiled(struct sway_container *con, | |||
133 | list_t *siblings = container_get_siblings(con); | 133 | list_t *siblings = container_get_siblings(con); |
134 | for (int i = 0; i < siblings->length; ++i) { | 134 | for (int i = 0; i < siblings->length; ++i) { |
135 | struct sway_container *con = siblings->items[i]; | 135 | struct sway_container *con = siblings->items[i]; |
136 | con->width_fraction = con->width / con->child_total_width; | 136 | con->width_fraction = con->pending.width / con->child_total_width; |
137 | } | 137 | } |
138 | 138 | ||
139 | double amount_fraction = (double)amount / con->child_total_width; | 139 | double amount_fraction = (double)amount / con->child_total_width; |
@@ -146,13 +146,13 @@ void container_resize_tiled(struct sway_container *con, | |||
146 | prev->width_fraction -= sibling_amount_fraction; | 146 | prev->width_fraction -= sibling_amount_fraction; |
147 | } | 147 | } |
148 | } else { | 148 | } else { |
149 | if (con->height + amount < MIN_SANE_H) { | 149 | if (con->pending.height + amount < MIN_SANE_H) { |
150 | return; | 150 | return; |
151 | } | 151 | } |
152 | if (next->height - sibling_amount < MIN_SANE_H) { | 152 | if (next->pending.height - sibling_amount < MIN_SANE_H) { |
153 | return; | 153 | return; |
154 | } | 154 | } |
155 | if (prev && prev->height - sibling_amount < MIN_SANE_H) { | 155 | if (prev && prev->pending.height - sibling_amount < MIN_SANE_H) { |
156 | return; | 156 | return; |
157 | } | 157 | } |
158 | if (con->child_total_height <= 0) { | 158 | if (con->child_total_height <= 0) { |
@@ -164,7 +164,7 @@ void container_resize_tiled(struct sway_container *con, | |||
164 | list_t *siblings = container_get_siblings(con); | 164 | list_t *siblings = container_get_siblings(con); |
165 | for (int i = 0; i < siblings->length; ++i) { | 165 | for (int i = 0; i < siblings->length; ++i) { |
166 | struct sway_container *con = siblings->items[i]; | 166 | struct sway_container *con = siblings->items[i]; |
167 | con->height_fraction = con->height / con->child_total_height; | 167 | con->height_fraction = con->pending.height / con->child_total_height; |
168 | } | 168 | } |
169 | 169 | ||
170 | double amount_fraction = (double)amount / con->child_total_height; | 170 | double amount_fraction = (double)amount / con->child_total_height; |
@@ -178,10 +178,10 @@ void container_resize_tiled(struct sway_container *con, | |||
178 | } | 178 | } |
179 | } | 179 | } |
180 | 180 | ||
181 | if (con->parent) { | 181 | if (con->pending.parent) { |
182 | arrange_container(con->parent); | 182 | arrange_container(con->pending.parent); |
183 | } else { | 183 | } else { |
184 | arrange_workspace(con->workspace); | 184 | arrange_workspace(con->pending.workspace); |
185 | } | 185 | } |
186 | } | 186 | } |
187 | 187 | ||
@@ -203,15 +203,15 @@ static struct cmd_results *resize_adjust_floating(uint32_t axis, | |||
203 | int min_width, max_width, min_height, max_height; | 203 | int min_width, max_width, min_height, max_height; |
204 | floating_calculate_constraints(&min_width, &max_width, | 204 | floating_calculate_constraints(&min_width, &max_width, |
205 | &min_height, &max_height); | 205 | &min_height, &max_height); |
206 | if (con->width + grow_width < min_width) { | 206 | if (con->pending.width + grow_width < min_width) { |
207 | grow_width = min_width - con->width; | 207 | grow_width = min_width - con->pending.width; |
208 | } else if (con->width + grow_width > max_width) { | 208 | } else if (con->pending.width + grow_width > max_width) { |
209 | grow_width = max_width - con->width; | 209 | grow_width = max_width - con->pending.width; |
210 | } | 210 | } |
211 | if (con->height + grow_height < min_height) { | 211 | if (con->pending.height + grow_height < min_height) { |
212 | grow_height = min_height - con->height; | 212 | grow_height = min_height - con->pending.height; |
213 | } else if (con->height + grow_height > max_height) { | 213 | } else if (con->pending.height + grow_height > max_height) { |
214 | grow_height = max_height - con->height; | 214 | grow_height = max_height - con->pending.height; |
215 | } | 215 | } |
216 | int grow_x = 0, grow_y = 0; | 216 | int grow_x = 0, grow_y = 0; |
217 | 217 | ||
@@ -227,15 +227,15 @@ static struct cmd_results *resize_adjust_floating(uint32_t axis, | |||
227 | if (grow_width == 0 && grow_height == 0) { | 227 | if (grow_width == 0 && grow_height == 0) { |
228 | return cmd_results_new(CMD_INVALID, "Cannot resize any further"); | 228 | return cmd_results_new(CMD_INVALID, "Cannot resize any further"); |
229 | } | 229 | } |
230 | con->x += grow_x; | 230 | con->pending.x += grow_x; |
231 | con->y += grow_y; | 231 | con->pending.y += grow_y; |
232 | con->width += grow_width; | 232 | con->pending.width += grow_width; |
233 | con->height += grow_height; | 233 | con->pending.height += grow_height; |
234 | 234 | ||
235 | con->content_x += grow_x; | 235 | con->pending.content_x += grow_x; |
236 | con->content_y += grow_y; | 236 | con->pending.content_y += grow_y; |
237 | con->content_width += grow_width; | 237 | con->pending.content_width += grow_width; |
238 | con->content_height += grow_height; | 238 | con->pending.content_height += grow_height; |
239 | 239 | ||
240 | arrange_container(con); | 240 | arrange_container(con); |
241 | 241 | ||
@@ -256,9 +256,9 @@ static struct cmd_results *resize_adjust_tiled(uint32_t axis, | |||
256 | float pct = amount->amount / 100.0f; | 256 | float pct = amount->amount / 100.0f; |
257 | 257 | ||
258 | if (is_horizontal(axis)) { | 258 | if (is_horizontal(axis)) { |
259 | amount->amount = (float)current->width * pct; | 259 | amount->amount = (float)current->pending.width * pct; |
260 | } else { | 260 | } else { |
261 | amount->amount = (float)current->height * pct; | 261 | amount->amount = (float)current->pending.height * pct; |
262 | } | 262 | } |
263 | } | 263 | } |
264 | 264 | ||
@@ -281,20 +281,20 @@ static struct cmd_results *resize_set_tiled(struct sway_container *con, | |||
281 | if (width->unit == MOVEMENT_UNIT_PPT || | 281 | if (width->unit == MOVEMENT_UNIT_PPT || |
282 | width->unit == MOVEMENT_UNIT_DEFAULT) { | 282 | width->unit == MOVEMENT_UNIT_DEFAULT) { |
283 | // Convert to px | 283 | // Convert to px |
284 | struct sway_container *parent = con->parent; | 284 | struct sway_container *parent = con->pending.parent; |
285 | while (parent && parent->layout != L_HORIZ) { | 285 | while (parent && parent->pending.layout != L_HORIZ) { |
286 | parent = parent->parent; | 286 | parent = parent->pending.parent; |
287 | } | 287 | } |
288 | if (parent) { | 288 | if (parent) { |
289 | width->amount = parent->width * width->amount / 100; | 289 | width->amount = parent->pending.width * width->amount / 100; |
290 | } else { | 290 | } else { |
291 | width->amount = con->workspace->width * width->amount / 100; | 291 | width->amount = con->pending.workspace->width * width->amount / 100; |
292 | } | 292 | } |
293 | width->unit = MOVEMENT_UNIT_PX; | 293 | width->unit = MOVEMENT_UNIT_PX; |
294 | } | 294 | } |
295 | if (width->unit == MOVEMENT_UNIT_PX) { | 295 | if (width->unit == MOVEMENT_UNIT_PX) { |
296 | container_resize_tiled(con, AXIS_HORIZONTAL, | 296 | container_resize_tiled(con, AXIS_HORIZONTAL, |
297 | width->amount - con->width); | 297 | width->amount - con->pending.width); |
298 | } | 298 | } |
299 | } | 299 | } |
300 | 300 | ||
@@ -302,20 +302,20 @@ static struct cmd_results *resize_set_tiled(struct sway_container *con, | |||
302 | if (height->unit == MOVEMENT_UNIT_PPT || | 302 | if (height->unit == MOVEMENT_UNIT_PPT || |
303 | height->unit == MOVEMENT_UNIT_DEFAULT) { | 303 | height->unit == MOVEMENT_UNIT_DEFAULT) { |
304 | // Convert to px | 304 | // Convert to px |
305 | struct sway_container *parent = con->parent; | 305 | struct sway_container *parent = con->pending.parent; |
306 | while (parent && parent->layout != L_VERT) { | 306 | while (parent && parent->pending.layout != L_VERT) { |
307 | parent = parent->parent; | 307 | parent = parent->pending.parent; |
308 | } | 308 | } |
309 | if (parent) { | 309 | if (parent) { |
310 | height->amount = parent->height * height->amount / 100; | 310 | height->amount = parent->pending.height * height->amount / 100; |
311 | } else { | 311 | } else { |
312 | height->amount = con->workspace->height * height->amount / 100; | 312 | height->amount = con->pending.workspace->height * height->amount / 100; |
313 | } | 313 | } |
314 | height->unit = MOVEMENT_UNIT_PX; | 314 | height->unit = MOVEMENT_UNIT_PX; |
315 | } | 315 | } |
316 | if (height->unit == MOVEMENT_UNIT_PX) { | 316 | if (height->unit == MOVEMENT_UNIT_PX) { |
317 | container_resize_tiled(con, AXIS_VERTICAL, | 317 | container_resize_tiled(con, AXIS_VERTICAL, |
318 | height->amount - con->height); | 318 | height->amount - con->pending.height); |
319 | } | 319 | } |
320 | } | 320 | } |
321 | 321 | ||
@@ -339,15 +339,15 @@ static struct cmd_results *resize_set_floating(struct sway_container *con, | |||
339 | "Cannot resize a hidden scratchpad container by ppt"); | 339 | "Cannot resize a hidden scratchpad container by ppt"); |
340 | } | 340 | } |
341 | // Convert to px | 341 | // Convert to px |
342 | width->amount = con->workspace->width * width->amount / 100; | 342 | width->amount = con->pending.workspace->width * width->amount / 100; |
343 | width->unit = MOVEMENT_UNIT_PX; | 343 | width->unit = MOVEMENT_UNIT_PX; |
344 | // Falls through | 344 | // Falls through |
345 | case MOVEMENT_UNIT_PX: | 345 | case MOVEMENT_UNIT_PX: |
346 | case MOVEMENT_UNIT_DEFAULT: | 346 | case MOVEMENT_UNIT_DEFAULT: |
347 | width->amount = fmax(min_width, fmin(width->amount, max_width)); | 347 | width->amount = fmax(min_width, fmin(width->amount, max_width)); |
348 | grow_width = width->amount - con->width; | 348 | grow_width = width->amount - con->pending.width; |
349 | con->x -= grow_width / 2; | 349 | con->pending.x -= grow_width / 2; |
350 | con->width = width->amount; | 350 | con->pending.width = width->amount; |
351 | break; | 351 | break; |
352 | case MOVEMENT_UNIT_INVALID: | 352 | case MOVEMENT_UNIT_INVALID: |
353 | sway_assert(false, "invalid width unit"); | 353 | sway_assert(false, "invalid width unit"); |
@@ -363,15 +363,15 @@ static struct cmd_results *resize_set_floating(struct sway_container *con, | |||
363 | "Cannot resize a hidden scratchpad container by ppt"); | 363 | "Cannot resize a hidden scratchpad container by ppt"); |
364 | } | 364 | } |
365 | // Convert to px | 365 | // Convert to px |
366 | height->amount = con->workspace->height * height->amount / 100; | 366 | height->amount = con->pending.workspace->height * height->amount / 100; |
367 | height->unit = MOVEMENT_UNIT_PX; | 367 | height->unit = MOVEMENT_UNIT_PX; |
368 | // Falls through | 368 | // Falls through |
369 | case MOVEMENT_UNIT_PX: | 369 | case MOVEMENT_UNIT_PX: |
370 | case MOVEMENT_UNIT_DEFAULT: | 370 | case MOVEMENT_UNIT_DEFAULT: |
371 | height->amount = fmax(min_height, fmin(height->amount, max_height)); | 371 | height->amount = fmax(min_height, fmin(height->amount, max_height)); |
372 | grow_height = height->amount - con->height; | 372 | grow_height = height->amount - con->pending.height; |
373 | con->y -= grow_height / 2; | 373 | con->pending.y -= grow_height / 2; |
374 | con->height = height->amount; | 374 | con->pending.height = height->amount; |
375 | break; | 375 | break; |
376 | case MOVEMENT_UNIT_INVALID: | 376 | case MOVEMENT_UNIT_INVALID: |
377 | sway_assert(false, "invalid height unit"); | 377 | sway_assert(false, "invalid height unit"); |
@@ -379,10 +379,10 @@ static struct cmd_results *resize_set_floating(struct sway_container *con, | |||
379 | } | 379 | } |
380 | } | 380 | } |
381 | 381 | ||
382 | con->content_x -= grow_width / 2; | 382 | con->pending.content_x -= grow_width / 2; |
383 | con->content_y -= grow_height / 2; | 383 | con->pending.content_y -= grow_height / 2; |
384 | con->content_width += grow_width; | 384 | con->pending.content_width += grow_width; |
385 | con->content_height += grow_height; | 385 | con->pending.content_height += grow_height; |
386 | 386 | ||
387 | arrange_container(con); | 387 | arrange_container(con); |
388 | 388 | ||
@@ -437,10 +437,10 @@ static struct cmd_results *cmd_resize_set(int argc, char **argv) { | |||
437 | // If 0, don't resize that dimension | 437 | // If 0, don't resize that dimension |
438 | struct sway_container *con = config->handler_context.container; | 438 | struct sway_container *con = config->handler_context.container; |
439 | if (width.amount <= 0) { | 439 | if (width.amount <= 0) { |
440 | width.amount = con->width; | 440 | width.amount = con->pending.width; |
441 | } | 441 | } |
442 | if (height.amount <= 0) { | 442 | if (height.amount <= 0) { |
443 | height.amount = con->height; | 443 | height.amount = con->pending.height; |
444 | } | 444 | } |
445 | 445 | ||
446 | if (container_is_floating(con)) { | 446 | if (container_is_floating(con)) { |