This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 34/61] Remove TUI data window special case
- From: Tom Tromey <tom at tromey dot com>
- To: gdb-patches at sourceware dot org
- Cc: Tom Tromey <tom at tromey dot com>
- Date: Thu, 4 Jul 2019 11:02:44 -0600
- Subject: [PATCH 34/61] Remove TUI data window special case
- References: <20190704170311.15982-1-tom@tromey.com>
The TUI has a couple of special cases for updating the data window:
one in tui_rl_other_windowand one in tui_set_focus_command. As part
of the project to remove references to globals, I wanted to remove
these calls; but when I did, some simple operations (like "C-x o")
would cause the register window to blank.
This fixes the underlying problem by arranging for the data window's
refresh_window method to call the superclass method first, and then to
refresh the child windows. Then the special cases can be removed.
2019-07-04 Tom Tromey <tom@tromey.com>
* tui/tui.c (tui_rl_other_window): Update.
* tui/tui-wingeneral.c (tui_data_window::refresh_window): Call
superclass method first. Always iterate over regs_content.
(tui_unhighlight_win, tui_highlight_win): Use refresh_window
method.
* tui/tui-win.c (tui_set_focus_command): Update.
---
gdb/ChangeLog | 9 +++++++++
gdb/tui/tui-win.c | 2 --
gdb/tui/tui-wingeneral.c | 15 ++++++---------
gdb/tui/tui.c | 2 --
4 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 083f046cafa..9d9d9a5f577 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -857,8 +857,6 @@ The window name specified must be valid and visible.\n"));
keypad (TUI_CMD_WIN->handle, (win_info != TUI_CMD_WIN));
}
- if (TUI_DATA_WIN && TUI_DATA_WIN->is_visible)
- TUI_DATA_WIN->refresh_all ();
xfree (buf_ptr);
printf_filtered (_("Focus set to %s window.\n"),
tui_win_with_focus ()->name ());
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 2902b8006b7..dc008cd7198 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -48,15 +48,12 @@ tui_gen_win_info::refresh_window ()
void
tui_data_window::refresh_window ()
{
- if (!regs_content.empty ())
+ tui_gen_win_info::refresh_window ();
+ for (auto &&win : regs_content)
{
- for (auto &&win : regs_content)
- {
- if (win != NULL)
- win->refresh_window ();
- }
+ if (win != NULL)
+ win->refresh_window ();
}
- tui_gen_win_info::refresh_window ();
}
/* Function to delete the curses window, checking for NULL. */
@@ -108,7 +105,7 @@ tui_unhighlight_win (struct tui_win_info *win_info)
&& win_info->handle != NULL)
{
box_win (win_info, NO_HILITE);
- wrefresh (win_info->handle);
+ win_info->refresh_window ();
win_info->set_highlight (false);
}
}
@@ -122,7 +119,7 @@ tui_highlight_win (struct tui_win_info *win_info)
&& win_info->handle != NULL)
{
box_win (win_info, HILITE);
- wrefresh (win_info->handle);
+ win_info->refresh_window ();
win_info->set_highlight (true);
}
}
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 693c2ff4a03..ee2c35587df 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -236,8 +236,6 @@ tui_rl_other_window (int count, int key)
if (win_info)
{
tui_set_win_focus_to (win_info);
- if (TUI_DATA_WIN && TUI_DATA_WIN->is_visible)
- TUI_DATA_WIN->refresh_all ();
keypad (TUI_CMD_WIN->handle, (win_info != TUI_CMD_WIN));
}
return 0;
--
2.17.2