Introduce tui_win_info::update_tab_width

This introduces a new tui_win_info::update_tab_width method, and
changes the TUI to call it.  This fixes another spot that was checking
the window type.

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

	* tui/tui-win.c (tui_source_window_base::update_tab_width): New
	method.
	(update_tab_width): Call update_tab_width method.
	* tui/tui-data.h (struct tui_win_info)
	(struct tui_source_window_base) <update_tab_width>: New methods.
This commit is contained in:
Tom Tromey 2019-06-17 18:48:00 -06:00
parent 17374de40e
commit d83f1fe65d
3 changed files with 32 additions and 16 deletions

View File

@ -1,3 +1,11 @@
2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-win.c (tui_source_window_base::update_tab_width): New
method.
(update_tab_width): Call update_tab_width method.
* tui/tui-data.h (struct tui_win_info)
(struct tui_source_window_base) <update_tab_width>: New methods.
2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-wingeneral.h (tui_make_window): Change type of "box_it"

View File

@ -306,6 +306,11 @@ public:
/* Compute the maximum height of this window. */
virtual int max_height () const;
/* Called after the tab width has been changed. */
virtual void update_tab_width ()
{
}
/* Set whether this window is highglighted. */
void set_highlight (bool highlight)
{
@ -362,6 +367,8 @@ public:
void set_new_height (int height) override;
void update_tab_width () override;
/* Does the locator belong to this window? */
bool m_has_locator = false;
/* Execution information window. */

View File

@ -923,29 +923,30 @@ unsigned int tui_tab_width = DEFAULT_TAB_LEN;
static unsigned int internal_tab_width = DEFAULT_TAB_LEN;
/* See tui-data.h. */
void
tui_source_window_base::update_tab_width ()
{
/* We don't really change the height of any windows, but
calling these 2 functions causes a complete regeneration
and redisplay of the window's contents, which will take
the new tab width into account. */
make_invisible_and_set_new_height (this, height);
make_visible_with_new_height (this);
}
/* After the tab width is set, call this to update the relevant
windows. */
static void
update_tab_width ()
{
/* We don't really change the height of any windows, but
calling these 2 functions causes a complete regeneration
and redisplay of the window's contents, which will take
the new tab width into account. */
if (tui_win_list[SRC_WIN]
&& tui_win_list[SRC_WIN]->is_visible)
for (int win_type = SRC_WIN; win_type < MAX_MAJOR_WINDOWS; win_type++)
{
make_invisible_and_set_new_height (TUI_SRC_WIN,
TUI_SRC_WIN->height);
make_visible_with_new_height (TUI_SRC_WIN);
}
if (tui_win_list[DISASSEM_WIN]
&& tui_win_list[DISASSEM_WIN]->is_visible)
{
make_invisible_and_set_new_height (TUI_DISASM_WIN,
TUI_DISASM_WIN->height);
make_visible_with_new_height (TUI_DISASM_WIN);
if (tui_win_list[win_type] != NULL
&& tui_win_list[win_type]->is_visible)
tui_win_list[win_type]->update_tab_width ();
}
}