Remove TUI data window special case
authorTom Tromey <tom@tromey.com>
Sat, 29 Jun 2019 05:32:05 +0000 (23:32 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 17 Jul 2019 18:19:11 +0000 (12:19 -0600)
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.

gdb/ChangeLog
gdb/tui/tui-win.c
gdb/tui/tui-wingeneral.c
gdb/tui/tui.c

index 1467352..97d5e85 100644 (file)
@@ -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.
index 083f046..9d9d9a5 100644 (file)
@@ -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 ());
index 2902b80..dc008cd 100644 (file)
@@ -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);
     }
 }
index 693c2ff..ee2c355 100644 (file)
@@ -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;