diff options
author | Tom Tromey <tom@tromey.com> | 2019-06-28 23:32:05 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-07-17 12:19:11 -0600 |
commit | cf82af058d2f1488d8f8a096d7e3b76d1d5a4f46 (patch) | |
tree | b132b125d3a4ec0227664a8a0343e57be99160c4 | |
parent | 01aeb396d0e7a2d76f5f2391a30328dcdd5bed1e (diff) | |
download | binutils-cf82af058d2f1488d8f8a096d7e3b76d1d5a4f46.zip binutils-cf82af058d2f1488d8f8a096d7e3b76d1d5a4f46.tar.gz binutils-cf82af058d2f1488d8f8a096d7e3b76d1d5a4f46.tar.bz2 |
Remove TUI data window special case
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.
gdb/ChangeLog
2019-07-17 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.
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/tui/tui-win.c | 2 | ||||
-rw-r--r-- | gdb/tui/tui-wingeneral.c | 15 | ||||
-rw-r--r-- | gdb/tui/tui.c | 2 |
4 files changed, 15 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1467352..97d5e85 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2019-07-17 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. + +2019-07-17 Tom Tromey <tom@tromey.com> + * tui/tui-win.c (tui_set_focus_command): Rename from tui_set_focus. Call tui_enable. (tui_set_focus_command): Remove. diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c index 083f046..9d9d9a5 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 2902b80..dc008cd 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 693c2ff..ee2c355 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; |