diff options
author | Tom Tromey <tom@tromey.com> | 2019-07-13 16:47:31 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-08-20 16:45:50 -0600 |
commit | ab0e1f1a4507f91536b583c57a492cb9d3aaf6f2 (patch) | |
tree | cea4886a288944d3af598bb3fc9d26af76dbd3ec | |
parent | 100c2bf31fa9bde80d997a5b39d1a07e0505a1cb (diff) | |
download | fsf-binutils-gdb-ab0e1f1a4507f91536b583c57a492cb9d3aaf6f2.zip fsf-binutils-gdb-ab0e1f1a4507f91536b583c57a492cb9d3aaf6f2.tar.gz fsf-binutils-gdb-ab0e1f1a4507f91536b583c57a492cb9d3aaf6f2.tar.bz2 |
Change tui_make_window to be a method
I combined several small changes into one patch here. I believe I
started by noticing that the "title" is not needed by tui_gen_win_info
and could be self-managing (i.e. std::string). Moving this revealed
that "can_box" is also a property of tui_win_info and not
tui_gen_win_info; and this in turn caused the changes to
tui_make_window and box_win.
2019-08-20 Tom Tromey <tom@tromey.com>
* tui/tui-wingeneral.h (tui_make_window): Don't declare.
* tui/tui-wingeneral.c (box_win): Change type of win_info.
(box_win): Update.
(tui_gen_win_info::make_window): Rename from tui_make_window.
(tui_win_info::make_window): New method.
(tui_gen_win_info::make_visible): Update.
* tui/tui-source.c (tui_source_window::set_contents): Update.
* tui/tui-regs.c (tui_data_window::show_register_group): Update.
(tui_data_window::display_registers_from): Update.
* tui/tui-layout.c (tui_gen_win_info::resize): Update.
* tui/tui-data.h (struct tui_gen_win_info) <make_window>:
Declare.
<can_box>: Remove.
<title>: Remove.
(struct tui_win_info) <make_window>: Declare.
<can_box>: Now virtual.
<title>: New member.
* tui/tui-data.c (~tui_gen_win_info): Don't free title.
* tui/tui-command.c (tui_cmd_window::resize): Update.
-rw-r--r-- | gdb/ChangeLog | 22 | ||||
-rw-r--r-- | gdb/tui/tui-command.c | 2 | ||||
-rw-r--r-- | gdb/tui/tui-data.c | 1 | ||||
-rw-r--r-- | gdb/tui/tui-data.h | 17 | ||||
-rw-r--r-- | gdb/tui/tui-layout.c | 2 | ||||
-rw-r--r-- | gdb/tui/tui-regs.c | 5 | ||||
-rw-r--r-- | gdb/tui/tui-source.c | 3 | ||||
-rw-r--r-- | gdb/tui/tui-wingeneral.c | 31 | ||||
-rw-r--r-- | gdb/tui/tui-wingeneral.h | 1 |
9 files changed, 49 insertions, 35 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 91e0e90..e65b84d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,27 @@ 2019-08-20 Tom Tromey <tom@tromey.com> + * tui/tui-wingeneral.h (tui_make_window): Don't declare. + * tui/tui-wingeneral.c (box_win): Change type of win_info. + (box_win): Update. + (tui_gen_win_info::make_window): Rename from tui_make_window. + (tui_win_info::make_window): New method. + (tui_gen_win_info::make_visible): Update. + * tui/tui-source.c (tui_source_window::set_contents): Update. + * tui/tui-regs.c (tui_data_window::show_register_group): Update. + (tui_data_window::display_registers_from): Update. + * tui/tui-layout.c (tui_gen_win_info::resize): Update. + * tui/tui-data.h (struct tui_gen_win_info) <make_window>: + Declare. + <can_box>: Remove. + <title>: Remove. + (struct tui_win_info) <make_window>: Declare. + <can_box>: Now virtual. + <title>: New member. + * tui/tui-data.c (~tui_gen_win_info): Don't free title. + * tui/tui-command.c (tui_cmd_window::resize): Update. + +2019-08-20 Tom Tromey <tom@tromey.com> + * tui/tui-regs.h (struct tui_data_window) <display_regs>: Remove. * tui/tui-regs.c (tui_data_window::show_registers): Update. (tui_data_window::check_register_values): Update. diff --git a/gdb/tui/tui-command.c b/gdb/tui/tui-command.c index f2040a7..6259580 100644 --- a/gdb/tui/tui-command.c +++ b/gdb/tui/tui-command.c @@ -54,7 +54,7 @@ tui_cmd_window::resize (int height_, int width_, int origin_x, int origin_y) origin.y = origin_y; if (handle == nullptr) - tui_make_window (this); + make_window (); else { /* Another reason we don't call the base class method here is diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c index 9b80aca..c11aa43 100644 --- a/gdb/tui/tui-data.c +++ b/gdb/tui/tui-data.c @@ -243,7 +243,6 @@ tui_win_info::tui_win_info (enum tui_win_type type) tui_gen_win_info::~tui_gen_win_info () { tui_delete_win (handle); - xfree (title); } void diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h index 0432a53..a5ff5e2 100644 --- a/gdb/tui/tui-data.h +++ b/gdb/tui/tui-data.h @@ -52,6 +52,8 @@ protected: { } + virtual void make_window (); + public: virtual ~tui_gen_win_info (); @@ -73,12 +75,6 @@ public: virtual void resize (int height, int width, int origin_x, int origin_y); - /* Return true if this can be boxed. */ - virtual bool can_box () const - { - return false; - } - /* Return true if this window is visible. */ bool is_visible () const { @@ -97,8 +93,6 @@ public: struct tui_point origin = {0, 0}; /* Viewport height. */ int viewport_height = 0; - /* Window title to display. */ - char *title = nullptr; }; /* Constant definitions. */ @@ -173,6 +167,8 @@ protected: void rerender () override; + void make_window () override; + public: ~tui_win_info () override @@ -213,13 +209,16 @@ public: return true; } - bool can_box () const override + virtual bool can_box () const { return true; } void check_and_display_highlight_if_needed (); + /* Window title to display. */ + std::string title; + /* Can this window ever be highlighted? */ bool can_highlight = true; diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index 08b18e5..01d50e4 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -602,7 +602,7 @@ tui_gen_win_info::resize (int height_, int width_, } if (handle == nullptr) - tui_make_window (this); + make_window (); rerender (); } diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c index f468940..71037d4 100644 --- a/gdb/tui/tui-regs.c +++ b/gdb/tui/tui-regs.c @@ -185,8 +185,7 @@ tui_data_window::show_register_group (struct reggroup *group, int regnum, pos; /* Make a new title showing which group we display. */ - xfree (title); - title = xstrprintf ("Register group: %s", reggroup_name (group)); + title = string_printf ("Register group: %s", reggroup_name (group)); /* See how many registers must be displayed. */ nr_regs = 0; @@ -302,7 +301,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); + data_item_win->make_visible (true); scrollok (data_item_win->handle, FALSE); } touchwin (data_item_win->handle); diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index 07de328..906006a 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -153,8 +153,7 @@ tui_source_window::set_contents (struct gdbarch *arch, = tui_locator_win_info_ptr (); const char *s_filename = symtab_to_filename_for_display (s); - xfree (title); - title = xstrdup (s_filename); + title = s_filename; xfree (fullname); fullname = xstrdup (symtab_to_fullname (s)); diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c index 4e565bd..5fa4cfd 100644 --- a/gdb/tui/tui-wingeneral.c +++ b/gdb/tui/tui-wingeneral.c @@ -55,7 +55,7 @@ tui_delete_win (WINDOW *window) /* Draw a border arround the window. */ static void -box_win (struct tui_gen_win_info *win_info, +box_win (struct tui_win_info *win_info, int highlight_flag) { if (win_info && win_info->handle) @@ -78,8 +78,8 @@ box_win (struct tui_gen_win_info *win_info, #else box (win, tui_border_vline, tui_border_hline); #endif - if (win_info->title) - mvwaddstr (win, 0, 3, win_info->title); + if (!win_info->title.empty ()) + mvwaddstr (win, 0, 3, win_info->title.c_str ()); wattroff (win, attrs); } } @@ -126,23 +126,20 @@ tui_win_info::check_and_display_highlight_if_needed () void -tui_make_window (struct tui_gen_win_info *win_info) +tui_gen_win_info::make_window () { - WINDOW *handle; - - handle = newwin (win_info->height, - win_info->width, - win_info->origin.y, - win_info->origin.x); - win_info->handle = handle; + handle = newwin (height, width, origin.y, origin.x); if (handle != NULL) - { - if (win_info->can_box ()) - box_win (win_info, NO_HILITE); - scrollok (handle, TRUE); - } + scrollok (handle, TRUE); } +void +tui_win_info::make_window () +{ + tui_gen_win_info::make_window (); + if (handle != NULL && can_box ()) + box_win (this, NO_HILITE); +} /* We can't really make windows visible, or invisible. So we have to delete the entire window when making it visible, and create it @@ -154,7 +151,7 @@ tui_gen_win_info::make_visible (bool visible) return; if (visible) - tui_make_window (this); + make_window (); else { tui_delete_win (handle); diff --git a/gdb/tui/tui-wingeneral.h b/gdb/tui/tui-wingeneral.h index 6a9de4c..53d7232 100644 --- a/gdb/tui/tui-wingeneral.h +++ b/gdb/tui/tui-wingeneral.h @@ -31,7 +31,6 @@ 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 *); extern void tui_highlight_win (struct tui_win_info *); extern void tui_refresh_all (); extern void tui_delete_win (WINDOW *window); |