aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2020-10-19 07:45:05 -0600
committerTom Tromey <tromey@adacore.com>2020-10-19 13:45:24 -0600
commit22cc388e2b940608d4d759dc61c0335cfc621de1 (patch)
tree359e6288d162b0178a049f6158964b115bef62a8
parent3c6eb4d439a31ec39d8c04f3b99d8a9f0bd607d2 (diff)
downloadbinutils-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/ChangeLog10
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.tui/list.exp2
-rw-r--r--gdb/tui/tui-winsource.c8
-rw-r--r--gdb/tui/tui-winsource.h5
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 ();