[PATCH 34/61] Remove TUI data window special case
Tom Tromey
tom@tromey.com
Thu Jul 4 17:03:00 GMT 2019
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
More information about the Gdb-patches
mailing list