From 65962b20b6df7e8961ec4002179dbd51a33a627f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Aug 15 2019 18:29:28 +0000 Subject: 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 * 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) : New method. (enum tui_box): Remove. (struct tui_win_info) : New method. * tui/tui-command.h (struct tui_cmd_window) : New method. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b6953b0..77f4ca0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,19 @@ +2019-08-15 Tom Tromey + + * 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) : New method. + (enum tui_box): Remove. + (struct tui_win_info) : New method. + * tui/tui-command.h (struct tui_cmd_window) : New + method. + 2019-08-15 Tom de Vries * linux-nat-trad.c: Include gdbarch.h. diff --git a/gdb/tui/tui-command.h b/gdb/tui/tui-command.h index af80b14..14d7750 100644 --- a/gdb/tui/tui-command.h +++ b/gdb/tui/tui-command.h @@ -55,6 +55,11 @@ struct tui_cmd_window : public tui_win_info return false; } + bool can_box () const override + { + return false; + } + int start_line = 0; protected: diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index 3493b5e..017e7a4 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -67,6 +67,12 @@ public: virtual void reset (int height, int width, int origin_x, int origin_y); + /* Return true if this can be boxed. */ + virtual bool can_box () const + { + return false; + } + /* Window handle. */ WINDOW *handle = nullptr; /* Type of window. */ @@ -85,13 +91,6 @@ public: 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. */ #define DEFAULT_TAB_LEN 8 #define NO_SRC_STRING "[ No Source Available ]" @@ -248,6 +247,11 @@ public: return true; } + bool can_box () const override + { + return true; + } + void check_and_display_highlight_if_needed (); /* Can this window ever be highlighted? */ diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index 3683835..69b929d 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -546,7 +546,7 @@ show_source_disasm_command (void) tui_term_height () - cmd_height); /* FIXME tui_cmd_window won't recreate the handle on 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; } @@ -674,6 +674,6 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type) src_height); /* FIXME tui_cmd_window won't recreate the handle on 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; } diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c index aaba94d..bb8d545 100644 --- a/gdb/tui/tui-regs.c +++ b/gdb/tui/tui-regs.c @@ -320,7 +320,7 @@ tui_data_window::display_registers_from (int start_element_no) data_item_win->width = item_win_width; data_item_win->origin.x = (item_win_width * j) + 1; 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); } touchwin (data_item_win->handle); diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c index 8ff5aa5..e2d06bc 100644 --- a/gdb/tui/tui-wingeneral.c +++ b/gdb/tui/tui-wingeneral.c @@ -125,7 +125,7 @@ tui_win_info::check_and_display_highlight_if_needed () 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; @@ -136,7 +136,7 @@ tui_make_window (struct tui_gen_win_info *win_info, enum tui_box box_it) win_info->handle = handle; if (handle != NULL) { - if (box_it == BOX_WINDOW) + if (win_info->can_box ()) box_win (win_info, NO_HILITE); win_info->is_visible = true; scrollok (handle, TRUE); @@ -155,8 +155,7 @@ tui_gen_win_info::make_visible (bool visible) is_visible = visible; if (visible) - tui_make_window (this, (tui_win_is_auxiliary (type) - ? DONT_BOX_WINDOW : BOX_WINDOW)); + tui_make_window (this); else { tui_delete_win (handle); diff --git a/gdb/tui/tui-wingeneral.h b/gdb/tui/tui-wingeneral.h index 54d6eb6..6a9de4c 100644 --- a/gdb/tui/tui-wingeneral.h +++ b/gdb/tui/tui-wingeneral.h @@ -31,7 +31,7 @@ struct tui_gen_win_info; extern void tui_make_all_invisible (void); 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_refresh_all (); extern void tui_delete_win (WINDOW *window);