Move make_visible method to tui_gen_win_info

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.
This commit is contained in:
Tom Tromey
2019-06-17 13:19:15 -06:00
parent c3bd716ffc
commit 48a3bd16c2
3 changed files with 28 additions and 30 deletions

View 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> 2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-winsource.c * tui/tui-winsource.c

View File

@ -51,6 +51,9 @@ struct tui_gen_win_info
/* Call to refresh this window. */ /* Call to refresh this window. */
virtual void refresh_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. */ /* Return the name of this type of window. */
virtual const char *name () const virtual const char *name () const
{ {
@ -273,9 +276,6 @@ public:
return false; return false;
} }
/* Make this window visible or invisible. */
virtual void make_visible (bool visible);
/* Refresh this window and any associated windows. */ /* Refresh this window and any associated windows. */
virtual void refresh (); virtual void refresh ();

View 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 /* We can't really make windows visible, or invisible. So we have to
delete the entire window when making it visible, and create it delete the entire window when making it visible, and create it
again when making it visible. */ again when making it visible. */
static void void
make_visible (struct tui_gen_win_info *win_info, bool visible) 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 (visible)
{ {
if (!win_info->is_visible) if (!is_visible)
{ {
tui_make_window (win_info, !tui_win_is_auxillary (win_info->type)); tui_make_window (this, !tui_win_is_auxillary (type));
win_info->is_visible = true; is_visible = true;
} }
} }
else if (!visible else if (!visible
&& win_info->is_visible && is_visible
&& win_info->handle != NULL) && handle != NULL)
{ {
win_info->is_visible = false; is_visible = false;
tui_delete_win (win_info->handle); tui_delete_win (handle);
win_info->handle = NULL; handle = NULL;
} }
return;
} }
void void
tui_make_visible (struct tui_gen_win_info *win_info) tui_make_visible (struct tui_gen_win_info *win_info)
{ {
make_visible (win_info, true); win_info->make_visible (true);
} }
void void
tui_make_invisible (struct tui_gen_win_info *win_info) tui_make_invisible (struct tui_gen_win_info *win_info)
{ {
make_visible (win_info, false); win_info->make_visible (false);
}
/* See tui-data.h. */
void
tui_win_info::make_visible (bool visible)
{
::make_visible (this, visible);
} }
/* See tui-data.h. */ /* See tui-data.h. */
@ -220,7 +206,8 @@ tui_win_info::make_visible (bool visible)
void void
tui_source_window_base::make_visible (bool visible) 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); tui_win_info::make_visible (visible);
} }