From b5ff370e964a5a794a6b5791ca55ac103ebffe70 Mon Sep 17 00:00:00 2001 From: Hannes Domani Date: Mon, 21 Dec 2020 13:16:24 +0100 Subject: [PATCH] Fix TUI source window drawing 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 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 | 8 ++++++++ gdb/tui/tui-winsource.c | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7ece6c75d9c..7716ff9b1aa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2021-01-05 Hannes Domani + + 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 * bfin-tdep.c (bfin_push_dummy_call): Use align_up. diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index adbd2777fc7..55b66e1bc16 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -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 ()); -- 2.30.2