diff options
author | Tom Tromey <tromey@adacore.com> | 2020-10-19 07:45:05 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-10-19 13:45:24 -0600 |
commit | 22cc388e2b940608d4d759dc61c0335cfc621de1 (patch) | |
tree | 359e6288d162b0178a049f6158964b115bef62a8 | |
parent | 3c6eb4d439a31ec39d8c04f3b99d8a9f0bd607d2 (diff) | |
download | binutils-22cc388e2b940608d4d759dc61c0335cfc621de1.zip binutils-22cc388e2b940608d4d759dc61c0335cfc621de1.tar.gz binutils-22cc388e2b940608d4d759dc61c0335cfc621de1.tar.bz2 |
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 <tromey@adacore.com>
PR tui/26719
* tui/tui-winsource.h (struct tui_source_window_base)
<refresh_window>: 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 <tromey@adacore.com>
PR tui/26719
* gdb.tui/list.exp: Check source window contents after focus
change.
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.tui/list.exp | 2 | ||||
-rw-r--r-- | gdb/tui/tui-winsource.c | 8 | ||||
-rw-r--r-- | gdb/tui/tui-winsource.h | 5 |
5 files changed, 24 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 428ced4..4dc1e42 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2020-10-19 Tom Tromey <tromey@adacore.com> + + PR tui/26719 + * tui/tui-winsource.h (struct tui_source_window_base) + <refresh_window>: 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 <tankut.baris.aktemur@intel.com> * thread.c (_initialize_thread): Fine-tune the help text of diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d513797..0a22f67 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-10-19 Tom Tromey <tromey@adacore.com> + + PR tui/26719 + * gdb.tui/list.exp: Check source window contents after focus + change. + 2020-10-17 Tom de Vries <tdevries@suse.de> PR symtab/26317 diff --git a/gdb/testsuite/gdb.tui/list.exp b/gdb/testsuite/gdb.tui/list.exp index a31c912..8c7585b 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 30b8f69..957d931 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 5fc6a6d..6dcf0ef 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 (); |