mirror of
https://github.com/swaywm/sway.git
synced 2024-12-30 17:06:40 +01:00
resize set: fix units for floating containers
This commit fixes the default size units for floating containers, so that pixels are used if the units are not specified.
This commit is contained in:
parent
d440468d2d
commit
a7b9e63cbc
1 changed files with 14 additions and 10 deletions
|
@ -512,34 +512,38 @@ static struct cmd_results *resize_set_floating(struct sway_container *con,
|
|||
calculate_constraints(&min_width, &max_width, &min_height, &max_height);
|
||||
|
||||
if (width->amount) {
|
||||
if (width->unit == RESIZE_UNIT_PPT ||
|
||||
width->unit == RESIZE_UNIT_DEFAULT) {
|
||||
switch (width->unit) {
|
||||
case RESIZE_UNIT_PPT:
|
||||
// Convert to px
|
||||
width->amount = con->workspace->width * width->amount / 100;
|
||||
width->unit = RESIZE_UNIT_PX;
|
||||
}
|
||||
if (width->unit == RESIZE_UNIT_PX) {
|
||||
// Falls through
|
||||
case RESIZE_UNIT_PX:
|
||||
case RESIZE_UNIT_DEFAULT:
|
||||
width->amount = fmax(min_width, fmin(width->amount, max_width));
|
||||
grow_width = width->amount - con->width;
|
||||
|
||||
con->x -= grow_width / 2;
|
||||
con->width = width->amount;
|
||||
case RESIZE_UNIT_INVALID:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (height->amount) {
|
||||
if (height->unit == RESIZE_UNIT_PPT ||
|
||||
height->unit == RESIZE_UNIT_DEFAULT) {
|
||||
switch (height->unit) {
|
||||
case RESIZE_UNIT_PPT:
|
||||
// Convert to px
|
||||
height->amount = con->workspace->height * height->amount / 100;
|
||||
height->unit = RESIZE_UNIT_PX;
|
||||
}
|
||||
if (height->unit == RESIZE_UNIT_PX) {
|
||||
// Falls through
|
||||
case RESIZE_UNIT_PX:
|
||||
case RESIZE_UNIT_DEFAULT:
|
||||
height->amount = fmax(min_height, fmin(height->amount, max_height));
|
||||
grow_height = height->amount - con->height;
|
||||
|
||||
con->y -= grow_height / 2;
|
||||
con->height = height->amount;
|
||||
case RESIZE_UNIT_INVALID:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue