aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-07-06 08:21:38 -0600
committerTom Tromey <tom@tromey.com>2019-08-15 12:29:28 -0600
commit65962b20b6df7e8961ec4002179dbd51a33a627f (patch)
treefe58f823af4202c3533085c1619c5a3267c82d89 /gdb
parent22a2ab04f58dc7c3f5fb0e6d8f0fa96ee4aa3951 (diff)
downloadgdb-65962b20b6df7e8961ec4002179dbd51a33a627f.zip
gdb-65962b20b6df7e8961ec4002179dbd51a33a627f.tar.gz
gdb-65962b20b6df7e8961ec4002179dbd51a33a627f.tar.bz2
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog16
-rw-r--r--gdb/tui/tui-command.h5
-rw-r--r--gdb/tui/tui-data.h18
-rw-r--r--gdb/tui/tui-layout.c4
-rw-r--r--gdb/tui/tui-regs.c2
-rw-r--r--gdb/tui/tui-wingeneral.c7
-rw-r--r--gdb/tui/tui-wingeneral.h2
7 files changed, 39 insertions, 15 deletions
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 <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>
* 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);