Introduce the refresh method

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.
This commit is contained in:
Tom Tromey
2019-06-16 14:27:28 -06:00
parent 56122977c0
commit 2042b506c8
3 changed files with 32 additions and 11 deletions

View File

@ -1,3 +1,11 @@
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> 2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui.h (tui_is_window_visible): Return bool. * tui/tui.h (tui_is_window_visible): Return bool.

View File

@ -258,6 +258,9 @@ public:
/* Make this window visible or invisible. */ /* Make this window visible or invisible. */
virtual void make_visible (bool visible); 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 /* Methods to scroll the contents of this window. Note that they
are named with "_scroll" coming at the end because the more are named with "_scroll" coming at the end because the more
obvious "scroll_forward" is defined as a macro in term.h. */ obvious "scroll_forward" is defined as a macro in term.h. */
@ -299,6 +302,7 @@ public:
} }
void make_visible (bool visible) override; void make_visible (bool visible) override;
void refresh () override;
/* Does the locator belong to this window? */ /* Does the locator belong to this window? */
bool m_has_locator = false; bool m_has_locator = false;

View File

@ -256,6 +256,25 @@ tui_make_all_invisible (void)
make_all_visible (false); 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. */ /* Function to refresh all the windows currently displayed. */
void void
@ -267,17 +286,7 @@ tui_refresh_all (struct tui_win_info **list)
for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++) for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
{ {
if (list[type] && list[type]->generic.is_visible) if (list[type] && list[type]->generic.is_visible)
{ list[type]->refresh ();
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);
}
} }
if (locator->is_visible) if (locator->is_visible)
{ {