This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: GDB 9 TUI mode broken
- From: Eli Zaretskii <eliz at gnu dot org>
- To: Tom Tromey <tom at tromey dot com>
- Cc: midenok at gmail dot com, gdb at sourceware dot org, gdb-patches at sourceware dot org
- Date: Sat, 22 Feb 2020 13:33:44 +0200
- Subject: Re: GDB 9 TUI mode broken
- References: <CAF8BazBni=TZWTc5fbpdHU5bv1eM=24xpML46GCC2u4pFTkSAw@mail.gmail.com> <835zg5m7ib.fsf@gnu.org>
> Date: Mon, 17 Feb 2020 19:46:36 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> CC: gdb@sourceware.org
>
> > From: Aleksey Midenkov <midenok@gmail.com>
> > Date: Mon, 17 Feb 2020 19:26:07 +0300
> >
> > Now the window molders away after `winheight src +8` command.
>
> This looks like a bug, and is probably unrelated to colors. Suggest
> to make a bug report.
The patch below seems to fix some of the problem, but not all of it:
the position of the status line (the one that shows the process
information) is not updated correctly.
Tom, where's the position update of the status line supposed to be
handled?
And btw, the meaning of the 'locator' object in tui_adjust_win_heights
is unclear: to which window does it pertain, and what is the
significance of this line:
TUI_CMD_WIN->origin.y = locator->origin.y + 1;
I think we could use some additional comments in tui-stack.c or
tui-stack.h, to explain what is the meaning and expected use of
tui_locator_window.
--- gdb/tui/tui-win.c~0 2020-02-08 14:50:14.000000000 +0200
+++ gdb/tui/tui-win.c 2020-02-22 13:28:37.003625000 +0200
@@ -1077,20 +1077,25 @@ tui_adjust_win_heights (struct tui_win_i
{
struct tui_win_info *src_win_info;
- primary_win_info->resize (new_height, width,
- 0, primary_win_info->origin.y);
if (primary_win_info->type == CMD_WIN)
{
win_info = *(tui_source_windows ().begin ());
src_win_info = win_info;
+ primary_win_info->resize (new_height, width,
+ 0,
+ primary_win_info->origin.y + diff);
+ win_info->resize (win_info->height + diff, width,
+ 0, win_info->origin.y);
}
else
{
win_info = tui_win_list[CMD_WIN];
src_win_info = primary_win_info;
- }
+ primary_win_info->resize (new_height, width,
+ 0, primary_win_info->origin.y);
win_info->resize (win_info->height + diff, width,
- 0, win_info->origin.y);
+ 0, win_info->origin.y - diff);
+ }
TUI_CMD_WIN->origin.y = locator->origin.y + 1;
if ((src_win_info->type == SRC_WIN
|| src_win_info->type == DISASSEM_WIN))