diff options
author | Michael Stapelberg <stapelberg@users.noreply.github.com> | 2022-11-12 14:58:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-12 14:58:13 +0100 |
commit | 170a322cc2bc411257014943ad84c19cc4779e05 (patch) | |
tree | fac17b1182c74f2f68f1165320458c72e445ce86 | |
parent | d1301262048592390ff2e8e3bbc2300cd77bd917 (diff) | |
download | i3-170a322cc2bc411257014943ad84c19cc4779e05.tar.gz i3-170a322cc2bc411257014943ad84c19cc4779e05.zip |
fix: prevent gaps inside floating split containers (#5276)
Fixes https://github.com/i3/i3/issues/5272
-rw-r--r-- | src/con.c | 5 | ||||
-rw-r--r-- | src/gaps.c | 5 | ||||
-rw-r--r-- | testcases/t/319-gaps.t | 31 |
3 files changed, 40 insertions, 1 deletions
@@ -618,7 +618,10 @@ bool con_is_docked(Con *con) { * */ Con *con_inside_floating(Con *con) { - assert(con != NULL); + if (con == NULL) { + return NULL; + } + if (con->type == CT_FLOATING_CON) return con; @@ -52,6 +52,11 @@ bool gaps_should_inset_con(Con *con, int children) { return false; } + /* Floating split containers should never have gaps inside them. */ + if (con_inside_floating(con)) { + return false; + } + const bool leaf_or_stacked_tabbed = con_is_leaf(con) || (con->layout == L_STACKED || con->layout == L_TABBED); diff --git a/testcases/t/319-gaps.t b/testcases/t/319-gaps.t index 1747c37d..eefb9281 100644 --- a/testcases/t/319-gaps.t +++ b/testcases/t/319-gaps.t @@ -202,4 +202,35 @@ is_gaps(); exit_gracefully($pid); +################################################################################ +# Ensure floating split containers don’t get gaps (issue #5272). +################################################################################ + +$config = <<EOT; +# i3 config file (v4) +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 + +gaps inner 10 + +default_border pixel 0 +EOT + +$pid = launch_with_config($config); + +fresh_workspace; + +my $floating = open_floating_window; +sync_with_i3; + +my $orig_rect = $floating->rect; +cmd 'border pixel 0'; +sync_with_i3; +is_deeply(scalar $floating->rect, $orig_rect, 'floating window position unchanged after border pixel 0'); + +cmd 'layout stacking'; +sync_with_i3; +is_deeply(scalar $floating->rect, $orig_rect, 'floating window position unchanged after border pixel 0'); + +exit_gracefully($pid); + done_testing; |