Simplify TUI boxing

In the TUI, whether or not a window can be boxed is a property of the
window's type.  This adds a can_box method to the window classes, and
changes tui_make_window to defer to this, removing the "box_it"
paramter.  This also lets us remove "enum tui_box", as it is no longer
used.

gdb/ChangeLog
2019-08-15  Tom Tromey  <tom@tromey.com>

	* tui/tui-wingeneral.h (tui_make_window): Update.
	* tui/tui-wingeneral.c (tui_make_window): Remove "box_it"
	parameter.
	(tui_gen_win_info::make_visible): Update.
	* tui/tui-regs.c (tui_data_window::display_registers_from):
	Update.
	* tui/tui-layout.c (show_source_disasm_command)
	(show_source_or_disasm_and_command): Update.
	* tui/tui-data.h (struct tui_gen_win_info) <can_box>: New method.
	(enum tui_box): Remove.
	(struct tui_win_info) <can_box>: New method.
	* tui/tui-command.h (struct tui_cmd_window) <can_box>: New
	method.
This commit is contained in:
Tom Tromey
2019-07-06 08:21:38 -06:00
parent 22a2ab04f5
commit 65962b20b6
7 changed files with 39 additions and 15 deletions

View File

@ -1,3 +1,19 @@
2019-08-15 Tom Tromey <tom@tromey.com>
* tui/tui-wingeneral.h (tui_make_window): Update.
* tui/tui-wingeneral.c (tui_make_window): Remove "box_it"
parameter.
(tui_gen_win_info::make_visible): Update.
* tui/tui-regs.c (tui_data_window::display_registers_from):
Update.
* tui/tui-layout.c (show_source_disasm_command)
(show_source_or_disasm_and_command): Update.
* tui/tui-data.h (struct tui_gen_win_info) <can_box>: New method.
(enum tui_box): Remove.
(struct tui_win_info) <can_box>: New method.
* tui/tui-command.h (struct tui_cmd_window) <can_box>: New
method.
2019-08-15 Tom de Vries <tdevries@suse.de> 2019-08-15 Tom de Vries <tdevries@suse.de>
* linux-nat-trad.c: Include gdbarch.h. * linux-nat-trad.c: Include gdbarch.h.

View File

@ -55,6 +55,11 @@ struct tui_cmd_window : public tui_win_info
return false; return false;
} }
bool can_box () const override
{
return false;
}
int start_line = 0; int start_line = 0;
protected: protected:

View File

@ -67,6 +67,12 @@ public:
virtual void reset (int height, int width, virtual void reset (int height, int width,
int origin_x, int origin_y); int origin_x, int origin_y);
/* Return true if this can be boxed. */
virtual bool can_box () const
{
return false;
}
/* Window handle. */ /* Window handle. */
WINDOW *handle = nullptr; WINDOW *handle = nullptr;
/* Type of window. */ /* Type of window. */
@ -85,13 +91,6 @@ public:
char *title = nullptr; char *title = nullptr;
}; };
/* Whether or not a window should be drawn with a box. */
enum tui_box
{
DONT_BOX_WINDOW = 0,
BOX_WINDOW
};
/* Constant definitions. */ /* Constant definitions. */
#define DEFAULT_TAB_LEN 8 #define DEFAULT_TAB_LEN 8
#define NO_SRC_STRING "[ No Source Available ]" #define NO_SRC_STRING "[ No Source Available ]"
@ -248,6 +247,11 @@ public:
return true; return true;
} }
bool can_box () const override
{
return true;
}
void check_and_display_highlight_if_needed (); void check_and_display_highlight_if_needed ();
/* Can this window ever be highlighted? */ /* Can this window ever be highlighted? */

View File

@ -546,7 +546,7 @@ show_source_disasm_command (void)
tui_term_height () - cmd_height); tui_term_height () - cmd_height);
/* FIXME tui_cmd_window won't recreate the handle on /* FIXME tui_cmd_window won't recreate the handle on
make_visible, so we need this instead. */ make_visible, so we need this instead. */
tui_make_window (TUI_CMD_WIN, DONT_BOX_WINDOW); tui_make_window (TUI_CMD_WIN);
current_layout = SRC_DISASSEM_COMMAND; current_layout = SRC_DISASSEM_COMMAND;
} }
@ -674,6 +674,6 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type)
src_height); src_height);
/* FIXME tui_cmd_window won't recreate the handle on /* FIXME tui_cmd_window won't recreate the handle on
make_visible, so we need this instead. */ make_visible, so we need this instead. */
tui_make_window (TUI_CMD_WIN, DONT_BOX_WINDOW); tui_make_window (TUI_CMD_WIN);
current_layout = layout_type; current_layout = layout_type;
} }

View File

@ -320,7 +320,7 @@ tui_data_window::display_registers_from (int start_element_no)
data_item_win->width = item_win_width; data_item_win->width = item_win_width;
data_item_win->origin.x = (item_win_width * j) + 1; data_item_win->origin.x = (item_win_width * j) + 1;
data_item_win->origin.y = cur_y; data_item_win->origin.y = cur_y;
tui_make_window (data_item_win, DONT_BOX_WINDOW); tui_make_window (data_item_win);
scrollok (data_item_win->handle, FALSE); scrollok (data_item_win->handle, FALSE);
} }
touchwin (data_item_win->handle); touchwin (data_item_win->handle);

View File

@ -125,7 +125,7 @@ tui_win_info::check_and_display_highlight_if_needed ()
void void
tui_make_window (struct tui_gen_win_info *win_info, enum tui_box box_it) tui_make_window (struct tui_gen_win_info *win_info)
{ {
WINDOW *handle; WINDOW *handle;
@ -136,7 +136,7 @@ tui_make_window (struct tui_gen_win_info *win_info, enum tui_box box_it)
win_info->handle = handle; win_info->handle = handle;
if (handle != NULL) if (handle != NULL)
{ {
if (box_it == BOX_WINDOW) if (win_info->can_box ())
box_win (win_info, NO_HILITE); box_win (win_info, NO_HILITE);
win_info->is_visible = true; win_info->is_visible = true;
scrollok (handle, TRUE); scrollok (handle, TRUE);
@ -155,8 +155,7 @@ tui_gen_win_info::make_visible (bool visible)
is_visible = visible; is_visible = visible;
if (visible) if (visible)
tui_make_window (this, (tui_win_is_auxiliary (type) tui_make_window (this);
? DONT_BOX_WINDOW : BOX_WINDOW));
else else
{ {
tui_delete_win (handle); tui_delete_win (handle);

View File

@ -31,7 +31,7 @@ struct tui_gen_win_info;
extern void tui_make_all_invisible (void); extern void tui_make_all_invisible (void);
extern void tui_unhighlight_win (struct tui_win_info *); extern void tui_unhighlight_win (struct tui_win_info *);
extern void tui_make_window (struct tui_gen_win_info *, enum tui_box); extern void tui_make_window (struct tui_gen_win_info *);
extern void tui_highlight_win (struct tui_win_info *); extern void tui_highlight_win (struct tui_win_info *);
extern void tui_refresh_all (); extern void tui_refresh_all ();
extern void tui_delete_win (WINDOW *window); extern void tui_delete_win (WINDOW *window);