aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbretello <bretello@distruzione.org>2023-07-17 19:31:53 +0200
committerRonan Pigott <ronan@rjp.ie>2023-07-23 11:10:26 -0700
commitdc634c4a1328668afe2b7c74e8b5828e187ebddd (patch)
tree86ae0e5711dc83c009aa72dca562eb178199c634
parentc3e6390073167bae8245d7fac9b455f9f06a5333 (diff)
fix crash when resizing tiled scratchpad windows
Splitting and then hiding a scratchpad container results in a segfault. fixes #6693
-rw-r--r--sway/commands/resize.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c
index f59e2aeb..32b746ea 100644
--- a/sway/commands/resize.c
+++ b/sway/commands/resize.c
@@ -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
@@ -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;
}
@@ -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) {