GDB 9 TUI mode broken

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

GDB 9 TUI mode broken

Aleksey Midenkov
Hi!

Is it vanilla feature of making TUI frame of blue color? Now the
window molders away after `winheight src +8` command. The result is
deplorable. If the answer is "yes", what is the functional role of
blue frame? I'm not sure if the color of the frame is the culprit but
something bad happens with terminal after GDB in TUI mode and only
`reset` helps. Downgrading to 8.3 fixed the issue.



--
All the best,

Aleksey Midenkov
@midenok
Reply | Threaded
Open this post in threaded view
|

Re: GDB 9 TUI mode broken

Eli Zaretskii
> From: Aleksey Midenkov <[hidden email]>
> Date: Mon, 17 Feb 2020 19:26:07 +0300
>
> Is it vanilla feature of making TUI frame of blue color?

You can change the color using the styling commands.

> 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.

Thanks.
Reply | Threaded
Open this post in threaded view
|

Re: GDB 9 TUI mode broken

Eli Zaretskii
> Date: Mon, 17 Feb 2020 19:46:36 +0200
> From: Eli Zaretskii <[hidden email]>
> CC: [hidden email]
>
> > From: Aleksey Midenkov <[hidden email]>
> > 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))
Reply | Threaded
Open this post in threaded view
|

Re: GDB 9 TUI mode broken

Tom Tromey-2
>>>>> "Eli" == Eli Zaretskii <[hidden email]> writes:

Eli> Tom, where's the position update of the status line supposed to be
Eli> handled?

I looked at the gdb-9 branch.  In tui_adjust_win_heights, it is code
like this:

                  locator->resize (1, width,
                                   0, (second_win->origin.y
                                       + second_win->height + 1));

Eli> And btw, the meaning of the 'locator' object in tui_adjust_win_heights
Eli> is unclear: to which window does it pertain, and what is the
Eli> significance of this line:

You and Simon discussed this down-thread.  FWIW the name "locator" has
been used in the source since the beginning; but I also don't
particularly care for it (for a long time I could never remember the
name and had to search to find it whenever I needed it).  So, I would
appreciate a rename in the code here as well.

Also, thanks for pointing out that this is called "status" in the docs.
That affects my other series to make user-specified layouts.  In that
series I called the window "locator" -- but I'm going to go rename it.

Eli> TUI_CMD_WIN-> origin.y = locator->origin.y + 1;

This is a leftover and should be removed.  The resize method is the way
to modify a window's size and position.

This code is all different on git master.

Your patch looks reasonable to me.

Tom