From 22cc388e2b940608d4d759dc61c0335cfc621de1 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 19 Oct 2020 07:45:05 -0600 Subject: [PATCH] Don't erase TUI source window when switching focus PR tui/26719 points out that switching the focus can erase the TUI source window. This is a regression introduced by the patch to switch the source window to using a pad. This patch fixes the bug by arranging to call prefresh whenever the window is refreshed. 2020-10-19 Tom Tromey PR tui/26719 * tui/tui-winsource.h (struct tui_source_window_base) : Rename from refresh_pad. * tui/tui-winsource.c (tui_source_window_base::refresh_window): Rename from refresh_pad. (tui_source_window_base::show_source_content) (tui_source_window_base::do_scroll_horizontal): Update. gdb/testsuite/ChangeLog 2020-10-19 Tom Tromey PR tui/26719 * gdb.tui/list.exp: Check source window contents after focus change. --- gdb/ChangeLog | 10 ++++++++++ gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.tui/list.exp | 2 ++ gdb/tui/tui-winsource.c | 8 ++++---- gdb/tui/tui-winsource.h | 5 ++--- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 428ced4d35c..4dc1e42c3b6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2020-10-19 Tom Tromey + + PR tui/26719 + * tui/tui-winsource.h (struct tui_source_window_base) + : Rename from refresh_pad. + * tui/tui-winsource.c (tui_source_window_base::refresh_window): + Rename from refresh_pad. + (tui_source_window_base::show_source_content) + (tui_source_window_base::do_scroll_horizontal): Update. + 2020-10-19 Tankut Baris Aktemur * thread.c (_initialize_thread): Fine-tune the help text of diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d5137978a22..0a22f67864d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-10-19 Tom Tromey + + PR tui/26719 + * gdb.tui/list.exp: Check source window contents after focus + change. + 2020-10-17 Tom de Vries PR symtab/26317 diff --git a/gdb/testsuite/gdb.tui/list.exp b/gdb/testsuite/gdb.tui/list.exp index a31c912428a..8c7585b295a 100644 --- a/gdb/testsuite/gdb.tui/list.exp +++ b/gdb/testsuite/gdb.tui/list.exp @@ -40,3 +40,5 @@ Term::check_contents "list -q main" "21 *return 0" # to ensure that GDB has a valid idea of what is currently focused. Term::command "focus next" Term::check_contents "focus next" "Focus set to cmd window" +# PR tui/26719 - switching focus would clear the source window. +Term::check_contents "source is still visible" "21 *return 0" diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index 30b8f69027a..957d9310f7a 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -250,8 +250,10 @@ tui_source_window_base::show_source_line (int lineno) /* See tui-winsource.h. */ void -tui_source_window_base::refresh_pad () +tui_source_window_base::refresh_window () { + tui_win_info::refresh_window (); + int pad_width = std::max (m_max_length, width); int left_margin = 1 + TUI_EXECINFO_SIZE + extra_margin (); int view_width = width - left_margin - 1; @@ -278,8 +280,6 @@ tui_source_window_base::show_source_content () for (int lineno = 0; lineno < m_content.size (); lineno++) show_source_line (lineno); - refresh_pad (); - refresh_window (); } @@ -377,7 +377,7 @@ tui_source_window_base::do_scroll_horizontal (int num_to_scroll) if (offset < 0) offset = 0; m_horizontal_offset = offset; - refresh_pad (); + refresh_window (); } } diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h index 5fc6a6d8126..6dcf0efe4b9 100644 --- a/gdb/tui/tui-winsource.h +++ b/gdb/tui/tui-winsource.h @@ -171,6 +171,8 @@ public: /* Erase the source content. */ virtual void erase_source_content () = 0; + void refresh_window () override; + /* Return the start address and gdbarch. */ virtual void display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) = 0; @@ -179,9 +181,6 @@ private: void show_source_content (); - /* Re-display the pad in the window. */ - void refresh_pad (); - /* Called when the user "set style enabled" setting is changed. */ void style_changed (); -- 2.30.2