Introduce max_height method

This introduces the tui_win_info::max_height method and changes
new_height_ok to use it, rather than checking the window type
directly.

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

	* tui/tui-win.c (tui_win_info::max_height)
	(tui_cmd_window::max_height): New methods.
	(new_height_ok): Call max_height.
	* tui/tui-data.h (struct tui_win_info, struct tui_cmd_window)
	<max_height>: New method.
This commit is contained in:
Tom Tromey 2019-06-16 15:16:52 -06:00
parent 3f02ce1e3d
commit 8903bd8a37
3 changed files with 31 additions and 6 deletions

View File

@ -1,3 +1,11 @@
2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-win.c (tui_win_info::max_height)
(tui_cmd_window::max_height): New methods.
(new_height_ok): Call max_height.
* tui/tui-data.h (struct tui_win_info, struct tui_cmd_window)
<max_height>: New method.
2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-win.c (tui_source_window_base::set_new_height)

View File

@ -273,6 +273,9 @@ public:
{
}
/* Compute the maximum height of this window. */
virtual int max_height () const;
/* Methods to scroll the contents of this window. Note that they
are named with "_scroll" coming at the end because the more
obvious "scroll_forward" is defined as a macro in term.h. */
@ -426,6 +429,8 @@ struct tui_cmd_window : public tui_win_info
{
}
int max_height () const override;
int start_line = 0;
protected:

View File

@ -1377,6 +1377,22 @@ make_visible_with_new_height (struct tui_win_info *win_info)
}
/* See tui-data.h. */
int
tui_win_info::max_height () const
{
return tui_term_height () - 2;
}
/* See tui-data.h. */
int
tui_cmd_window::max_height () const
{
return tui_term_height () - 4;
}
static int
new_height_ok (struct tui_win_info *primary_win_info,
int new_height)
@ -1391,12 +1407,8 @@ new_height_ok (struct tui_win_info *primary_win_info,
diff = (new_height - primary_win_info->generic.height) * (-1);
if (cur_layout == SRC_COMMAND || cur_layout == DISASSEM_COMMAND)
{
ok = ((primary_win_info->generic.type == CMD_WIN
&& new_height <= (tui_term_height () - 4)
&& new_height >= MIN_CMD_WIN_HEIGHT)
|| (primary_win_info->generic.type != CMD_WIN
&& new_height <= (tui_term_height () - 2)
&& new_height >= MIN_WIN_HEIGHT));
ok = (new_height <= primary_win_info->max_height ()
&& new_height >= MIN_CMD_WIN_HEIGHT);
if (ok)
{ /* Check the total height. */
struct tui_win_info *win_info;