Fix TUI source window drawing
authorHannes Domani <ssbssa@yahoo.de>
Mon, 21 Dec 2020 12:16:24 +0000 (13:16 +0100)
committerHannes Domani <ssbssa@yahoo.de>
Tue, 5 Jan 2021 13:08:26 +0000 (14:08 +0100)
The smaxrow and smaxcol parameters of prefresh are the bottom right corner
of the text area inclusive, not exclusive.

And if the source window grows bigger in height, the pad has to grow as
well.

gdb/ChangeLog:

2021-01-05  Hannes Domani  <ssbssa@yahoo.de>

PR tui/26927
* tui/tui-winsource.c (tui_source_window_base::refresh_window):
Fix source pad size in prefresh.
(tui_source_window_base::show_source_content): Grow source pad
if necessary.

gdb/ChangeLog
gdb/tui/tui-winsource.c

index 7ece6c75d9cd9df119b1f44d69cc5faf3b5c7c41..7716ff9b1aad49a508ab8d154aba4b5a3b18f0e6 100644 (file)
@@ -1,3 +1,11 @@
+2021-01-05  Hannes Domani  <ssbssa@yahoo.de>
+
+       PR tui/26927
+       * tui/tui-winsource.c (tui_source_window_base::refresh_window):
+       Fix source pad size in prefresh.
+       (tui_source_window_base::show_source_content): Grow source pad
+       if necessary.
+
 2021-01-04  Mike Frysinger  <vapier@gentoo.org>
 
        * bfin-tdep.c (bfin_push_dummy_call): Use align_up.
index adbd2777fc799518e9b6e070b301f0282a110fde..55b66e1bc1670f20b7b692be21ab2873972243d0 100644 (file)
@@ -262,7 +262,7 @@ tui_source_window_base::refresh_window ()
      scrolled beyond where we clip.  */
   m_horizontal_offset = pad_x;
   prefresh (m_pad.get (), 0, pad_x, y + 1, x + left_margin,
-           y + 1 + m_content.size (), x + left_margin + view_width - 1);
+           y + m_content.size (), x + left_margin + view_width - 1);
 }
 
 void
@@ -273,7 +273,8 @@ tui_source_window_base::show_source_content ()
   check_and_display_highlight_if_needed ();
 
   int pad_width = std::max (m_max_length, width);
-  if (m_pad == nullptr || pad_width > getmaxx (m_pad.get ()))
+  if (m_pad == nullptr || pad_width > getmaxx (m_pad.get ())
+      || m_content.size () > getmaxy (m_pad.get ()))
     m_pad.reset (newpad (m_content.size (), pad_width));
 
   werase (m_pad.get ());