From b901fc94649a8004caf45f721714bd804f5969b1 Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Wed, 2 May 2018 17:43:43 +0300 Subject: [PATCH] resize set for floating: interpret 0 as 'no change' Fixes #3276 --- src/commands.c | 4 ++-- testcases/t/252-floating-size.t | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/commands.c b/src/commands.c index 0c5b8bcb..2d5ef362 100644 --- a/src/commands.c +++ b/src/commands.c @@ -644,12 +644,12 @@ void cmd_resize_set(I3_CMD, long cwidth, const char *mode_width, long cheight, c if ((floating_con = con_inside_floating(current->con))) { Con *output = con_get_output(floating_con); if (cwidth == 0) { - cwidth = output->rect.width; + cwidth = floating_con->rect.width; } else if (mode_width && strcmp(mode_width, "ppt") == 0) { cwidth = output->rect.width * ((double)cwidth / 100.0); } if (cheight == 0) { - cheight = output->rect.height; + cheight = floating_con->rect.height; } else if (mode_height && strcmp(mode_height, "ppt") == 0) { cheight = output->rect.height * ((double)cheight / 100.0); } diff --git a/testcases/t/252-floating-size.t b/testcases/t/252-floating-size.t index d3c2269b..7875cb07 100644 --- a/testcases/t/252-floating-size.t +++ b/testcases/t/252-floating-size.t @@ -79,4 +79,21 @@ do_test(int(0.44 * 1333), 111); cmd 'resize set 222 px 100 ppt'; do_test(222, 999); +################################################################################ +# Zero is interpreted as no change. +# See issue: #3276. +################################################################################ + +cmd 'resize set 0 px 333 px'; +do_test(0, 333); + +cmd 'resize set 333 px 0 ppt'; +do_test(333, 0); + +cmd 'resize set 0 px 0 ppt'; +do_test(0, 0); + +cmd 'resize set 100 ppt 0 px'; +do_test(1333, 0); + done_testing;