[PATCH 41/66] Move make_visible method to tui_gen_win_info

Tom Tromey tom@tromey.com
Sun Jun 23 23:25:00 GMT 2019


This moves the make_visible method from tui_win_info to its base
class, tui_gen_win_info.  This allows the removal of another window
type check.

2019-06-23  Tom Tromey  <tom@tromey.com>

	* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Rename
	from make_visible.
	(tui_make_visible, tui_make_invisible): Rewrite.
	(tui_win_info::make_visible): Remove.
	(tui_source_window_base::make_visible): Update.
	* tui/tui-data.h (struct tui_gen_win_info) <make_visible>: New
	method.  Moved from...
	(struct tui_win_info) <make_visible>: ...here.
---
 gdb/ChangeLog            | 11 +++++++++++
 gdb/tui/tui-data.h       |  6 +++---
 gdb/tui/tui-wingeneral.c | 41 ++++++++++++++--------------------------
 3 files changed, 28 insertions(+), 30 deletions(-)

diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 92bfb39fe86..d5e46fed5c0 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -51,6 +51,9 @@ struct tui_gen_win_info
   /* Call to refresh this window.  */
   virtual void refresh_window ();
 
+  /* Make this window visible or invisible.  */
+  virtual void make_visible (bool visible);
+
   /* Return the name of this type of window.  */
   virtual const char *name () const
   {
@@ -273,9 +276,6 @@ public:
     return false;
   }
 
-  /* Make this window visible or invisible.  */
-  virtual void make_visible (bool visible);
-
   /* Refresh this window and any associated windows.  */
   virtual void refresh ();
 
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index f1089a9f38a..acb8a26765b 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -168,51 +168,37 @@ tui_make_window (struct tui_gen_win_info *win_info, int box_it)
 /* We can't really make windows visible, or invisible.  So we have to
    delete the entire window when making it visible, and create it
    again when making it visible.  */
-static void
-make_visible (struct tui_gen_win_info *win_info, bool visible)
+void
+tui_gen_win_info::make_visible (bool visible)
 {
-  /* Don't tear down/recreate command window.  */
-  if (win_info->type == CMD_WIN)
-    return;
-
   if (visible)
     {
-      if (!win_info->is_visible)
+      if (!is_visible)
 	{
-	  tui_make_window (win_info, !tui_win_is_auxillary (win_info->type));
-	  win_info->is_visible = true;
+	  tui_make_window (this, !tui_win_is_auxillary (type));
+	  is_visible = true;
 	}
     }
   else if (!visible
-	   && win_info->is_visible
-	   && win_info->handle != NULL)
+	   && is_visible
+	   && handle != NULL)
     {
-      win_info->is_visible = false;
-      tui_delete_win (win_info->handle);
-      win_info->handle = NULL;
+      is_visible = false;
+      tui_delete_win (handle);
+      handle = NULL;
     }
-
-  return;
 }
 
 void
 tui_make_visible (struct tui_gen_win_info *win_info)
 {
-  make_visible (win_info, true);
+  win_info->make_visible (true);
 }
 
 void
 tui_make_invisible (struct tui_gen_win_info *win_info)
 {
-  make_visible (win_info, false);
-}
-
-/* See tui-data.h.  */
-
-void
-tui_win_info::make_visible (bool visible)
-{
-  ::make_visible (this, visible);
+  win_info->make_visible (false);
 }
 
 /* See tui-data.h.  */
@@ -220,7 +206,8 @@ tui_win_info::make_visible (bool visible)
 void
 tui_source_window_base::make_visible (bool visible)
 {
-  ::make_visible (execution_info, visible);
+  if (execution_info != nullptr)
+    execution_info->make_visible (visible);
   tui_win_info::make_visible (visible);
 }
 
-- 
2.17.2



More information about the Gdb-patches mailing list