Introduce the refresh method
authorTom Tromey <tom@tromey.com>
Sun, 16 Jun 2019 20:27:28 +0000 (14:27 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 25 Jun 2019 13:48:33 +0000 (07:48 -0600)
This adds tui_win_info::refresh and updates tui_source_window_base to
implement it as well.  This lets us simplify tui_refresh_all, removing
a check of the window type.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (tui_win_info::refresh)
(tui_source_window_base::refresh): New methods.
(tui_refresh_all): Call the refresh method.
* tui/tui-data.h (struct tui_win_info)
(struct tui_source_window_base) <refresh>: New method.

gdb/ChangeLog
gdb/tui/tui-data.h
gdb/tui/tui-wingeneral.c

index b47b6ce..1fea395 100644 (file)
@@ -1,5 +1,13 @@
 2019-06-25  Tom Tromey  <tom@tromey.com>
 
+       * tui/tui-wingeneral.c (tui_win_info::refresh)
+       (tui_source_window_base::refresh): New methods.
+       (tui_refresh_all): Call the refresh method.
+       * tui/tui-data.h (struct tui_win_info)
+       (struct tui_source_window_base) <refresh>: New method.
+
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
        * tui/tui.h (tui_is_window_visible): Return bool.
        * tui/tui.c (tui_is_window_visible): Return bool.
        * tui/tui-wingeneral.c (tui_make_window, make_visible)
index 3799ab4..e4a9b04 100644 (file)
@@ -258,6 +258,9 @@ public:
   /* Make this window visible or invisible.  */
   virtual void make_visible (bool visible);
 
+  /* Refresh this window and any associated windows.  */
+  virtual void refresh ();
+
   /* Methods to scroll the contents of this window.  Note that they
      are named with "_scroll" coming at the end because the more
      obvious "scroll_forward" is defined as a macro in term.h.  */
@@ -299,6 +302,7 @@ public:
   }
 
   void make_visible (bool visible) override;
+  void refresh () override;
 
   /* Does the locator belong to this window?  */
   bool m_has_locator = false;
index e802e52..4d168af 100644 (file)
@@ -256,6 +256,25 @@ tui_make_all_invisible (void)
   make_all_visible (false);
 }
 
+/* See tui-data.h.  */
+
+void
+tui_win_info::refresh ()
+{
+  touchwin (generic.handle);
+  tui_refresh_win (&generic);
+}
+
+/* See tui-data.h.  */
+
+void
+tui_source_window_base::refresh ()
+{
+  touchwin (execution_info->handle);
+  tui_refresh_win (execution_info);
+  tui_win_info::refresh ();
+}
+
 /* Function to refresh all the windows currently displayed.  */
 
 void
@@ -267,17 +286,7 @@ tui_refresh_all (struct tui_win_info **list)
   for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
     {
       if (list[type] && list[type]->generic.is_visible)
-       {
-         if (type == SRC_WIN || type == DISASSEM_WIN)
-           {
-             tui_source_window_base *base
-               = (tui_source_window_base *) list[type];
-             touchwin (base->execution_info->handle);
-             tui_refresh_win (base->execution_info);
-           }
-         touchwin (list[type]->generic.handle);
-         tui_refresh_win (&list[type]->generic);
-       }
+       list[type]->refresh ();
     }
   if (locator->is_visible)
     {