[gdb/tui] Fix fingerprint for cmd-only layout
authorTom de Vries <tdevries@suse.de>
Wed, 31 May 2023 05:39:31 +0000 (07:39 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 31 May 2023 05:39:31 +0000 (07:39 +0200)
commit9d66d71cdddec9075c6832054ba07e5469aeca84
treea137e284c20c419ddcbe06866350361f434b6213
parent2fee907cfd3dd9d8a8c0df7aa8ec29e7d2d1575e
[gdb/tui] Fix fingerprint for cmd-only layout

I added a cmd-only layout:
...
(gdb) tui new-layout cmd cmd 1
...
and set it:
...
(gdb) layout cmd
...
which gave me the expect result: only the cmd window in the screen.

However, after going back to layout src:
...
(gdb) layout src
...
I got a source window with only one line in it, and the cmd window taking most
of the screen.

I traced this back to tui_set_layout, where for both the old and the new
layout the fingerprint of the cmd window in the layout is taken.  If the
fingerprint is the same, an effort will be done to preserve the command
window size.

The fingerprint is "VC" for both the old (cmd) and new (src) layouts, which
explains the behaviour.

I think this is essentially a bug in the finger print calculation, and it
should be "C" for the cmd layout.

Fix this by not adding a V or H in the fingerprint if the list size is one.

Tested on x86_64-linux.

Reviewed-By: Tom Tromey <tom@tromey.com>
gdb/testsuite/gdb.tui/new-layout.exp
gdb/tui/tui-layout.c
gdb/tui/tui-layout.h