From: Tom de Vries Date: Sat, 9 Dec 2023 13:44:49 +0000 (+0100) Subject: [gdb/tui] Handle shared border in fixed-sized layout X-Git-Tag: binutils-2_42~647 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2540e3a87edcb734ef448c3a68ac4827e298f76f;p=thirdparty%2Fbinutils-gdb.git [gdb/tui] Handle shared border in fixed-sized layout In tui_layout_split::apply I noticed that for variable-size layouts we take share_box into account by decreasing used_size: ... used_size += info[i].size; if (info[i].share_box) --used_size; ... but not for fixed-size layouts: ... if (info[i].min_size == info[i].max_size) available_size -= info[i].min_size; ... Fix this by increasing available_size for fixed-size layouts with shared box. Tested on x86_64-linux. Approved-By: Tom Tromey --- diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index a4cb5a8b7bf..bb539498969 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -855,21 +855,27 @@ tui_layout_split::apply (int x_, int y_, int width_, int height_, continue; } + /* Two adjacent boxed windows will share a border. */ + if (prev != -1 + && m_splits[prev].layout->last_edge_has_border_p () + && m_splits[i].layout->first_edge_has_border_p ()) + info[i].share_box = true; + if (info[i].min_size == info[i].max_size) - available_size -= info[i].min_size; + { + available_size -= info[i].min_size; + if (info[i].share_box) + { + /* A shared border makes a bit more size available. */ + ++available_size; + } + } else { last_index = i; total_weight += m_splits[i].weight; } - /* Two adjacent boxed windows will share a border, making a bit - more size available. */ - if (prev != -1 - && m_splits[prev].layout->last_edge_has_border_p () - && m_splits[i].layout->first_edge_has_border_p ()) - info[i].share_box = true; - prev = i; } @@ -900,7 +906,10 @@ tui_layout_split::apply (int x_, int y_, int width_, int height_, this function. */ used_size += info[i].size; if (info[i].share_box) - --used_size; + { + /* A shared border makes a bit more size available. */ + --used_size; + } } else info[i].size = info[i].min_size;