Skip to content

Commit

Permalink
fix crash when resizing tiled scratchpad windows
Browse files Browse the repository at this point in the history
Splitting and then hiding a scratchpad container results in
a segfault.

fixes #6693
  • Loading branch information
bretello authored and rpigott committed Jul 23, 2023
1 parent c3e6390 commit dc634c4
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions sway/commands/resize.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ void container_resize_tiled(struct sway_container *con,
return;
}

if (container_is_scratchpad_hidden_or_child(con)) {
return;
}

// For HORIZONTAL or VERTICAL, we are growing in two directions so select
// both adjacent siblings. For RIGHT or DOWN, just select the next sibling.
// For LEFT or UP, convert it to a RIGHT or DOWN resize and reassign con to
Expand Down Expand Up @@ -249,6 +253,10 @@ static struct cmd_results *resize_adjust_tiled(uint32_t axis,
struct movement_amount *amount) {
struct sway_container *current = config->handler_context.container;

if (container_is_scratchpad_hidden_or_child(current)) {
return cmd_results_new(CMD_FAILURE, "Cannot resize a hidden scratchpad container");
}

if (amount->unit == MOVEMENT_UNIT_DEFAULT) {
amount->unit = MOVEMENT_UNIT_PPT;
}
Expand Down Expand Up @@ -292,6 +300,11 @@ static struct cmd_results *resize_adjust_tiled(uint32_t axis,
*/
static struct cmd_results *resize_set_tiled(struct sway_container *con,
struct movement_amount *width, struct movement_amount *height) {

if (container_is_scratchpad_hidden_or_child(con)) {
return cmd_results_new(CMD_FAILURE, "Cannot resize a hidden scratchpad container");
}

if (width->amount) {
if (width->unit == MOVEMENT_UNIT_PPT ||
width->unit == MOVEMENT_UNIT_DEFAULT) {
Expand Down

0 comments on commit dc634c4

Please sign in to comment.