Move make_visible method to tui_gen_win_info
authorTom Tromey <tom@tromey.com>
Mon, 17 Jun 2019 19:19:15 +0000 (13:19 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 25 Jun 2019 13:48:41 +0000 (07:48 -0600)
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.

gdb/ChangeLog
2019-06-25  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
gdb/tui/tui-data.h
gdb/tui/tui-wingeneral.c

index 2e6b47e93e9f5b5bea01f6879ca638eb77a8ba84..3780b965e93834a9d8dd16df704bc8fd0243d061 100644 (file)
@@ -1,3 +1,14 @@
+2019-06-25  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.
+
 2019-06-25  Tom Tromey  <tom@tromey.com>
 
        * tui/tui-winsource.c
index 59d1900c2bb59976fb9f49219b0a6de3abfabf20..74efddee0f04b8916528d9512ec0fad1b786efc9 100644 (file)
@@ -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 ();
 
index f1089a9f38a09f09ffdc65aea282784f68f7c312..acb8a26765bc533ab1f20ba88f6e5f5bf545b13a 100644 (file)
@@ -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);
 }