mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 23:39:35 +08:00
Introduce tui_gen_win_info::reset method
This introduces the tui_gen_win_info::reset method and changes various places to use it. This led to the realization that the can_highlight member only needs to be set during construction, so this patch makes that change as well. Finally, init_and_make_win is drastically simplified. gdb/ChangeLog 2019-06-25 Tom Tromey <tom@tromey.com> * tui/tui-layout.c (make_command_window): Don't set can_highlight. (show_source_disasm_command): Call the reset method. (show_data): Don't set can_highlight. Call the reset method. (tui_gen_win_info::reset): Rename from init_gen_win_info (init_and_make_win): Simplify. Return tui_gen_win_info. (show_source_or_disasm_and_command): Call the reset method. * tui/tui-data.h (struct tui_gen_win_info) <reset>: New method. (struct tui_cmd_window): Set can_highlight.
This commit is contained in:
@ -1,3 +1,15 @@
|
|||||||
|
2019-06-25 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* tui/tui-layout.c (make_command_window): Don't set
|
||||||
|
can_highlight.
|
||||||
|
(show_source_disasm_command): Call the reset method.
|
||||||
|
(show_data): Don't set can_highlight. Call the reset method.
|
||||||
|
(tui_gen_win_info::reset): Rename from init_gen_win_info
|
||||||
|
(init_and_make_win): Simplify. Return tui_gen_win_info.
|
||||||
|
(show_source_or_disasm_and_command): Call the reset method.
|
||||||
|
* tui/tui-data.h (struct tui_gen_win_info) <reset>: New method.
|
||||||
|
(struct tui_cmd_window): Set can_highlight.
|
||||||
|
|
||||||
2019-06-25 Tom Tromey <tom@tromey.com>
|
2019-06-25 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Rename
|
* tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Rename
|
||||||
|
@ -60,6 +60,13 @@ struct tui_gen_win_info
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reset this window. WIN_TYPE must match the existing type of this
|
||||||
|
window (it is only passed for self-test purposes). The other
|
||||||
|
parameters are used to set the window's size and position. */
|
||||||
|
void reset (enum tui_win_type win_type,
|
||||||
|
int height, int width,
|
||||||
|
int origin_x, int origin_y);
|
||||||
|
|
||||||
/* Window handle. */
|
/* Window handle. */
|
||||||
WINDOW *handle = nullptr;
|
WINDOW *handle = nullptr;
|
||||||
/* Type of window. */
|
/* Type of window. */
|
||||||
@ -309,7 +316,7 @@ public:
|
|||||||
void right_scroll (int num_to_scroll);
|
void right_scroll (int num_to_scroll);
|
||||||
|
|
||||||
/* Can this window ever be highlighted? */
|
/* Can this window ever be highlighted? */
|
||||||
bool can_highlight = false;
|
bool can_highlight = true;
|
||||||
|
|
||||||
/* Is this window highlighted? */
|
/* Is this window highlighted? */
|
||||||
bool is_highlighted = false;
|
bool is_highlighted = false;
|
||||||
@ -453,6 +460,7 @@ struct tui_cmd_window : public tui_win_info
|
|||||||
tui_cmd_window ()
|
tui_cmd_window ()
|
||||||
: tui_win_info (CMD_WIN)
|
: tui_win_info (CMD_WIN)
|
||||||
{
|
{
|
||||||
|
can_highlight = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DISABLE_COPY_AND_ASSIGN (tui_cmd_window);
|
DISABLE_COPY_AND_ASSIGN (tui_cmd_window);
|
||||||
|
@ -43,10 +43,8 @@
|
|||||||
** Static Local Decls
|
** Static Local Decls
|
||||||
********************************/
|
********************************/
|
||||||
static void show_layout (enum tui_layout_type);
|
static void show_layout (enum tui_layout_type);
|
||||||
static void init_gen_win_info (struct tui_gen_win_info *,
|
static tui_gen_win_info *init_and_make_win (tui_gen_win_info *,
|
||||||
enum tui_win_type,
|
enum tui_win_type,
|
||||||
int, int, int, int);
|
|
||||||
static void *init_and_make_win (void *, enum tui_win_type,
|
|
||||||
int, int, int, int, int);
|
int, int, int, int, int);
|
||||||
static void show_source_or_disasm_and_command (enum tui_layout_type);
|
static void show_source_or_disasm_and_command (enum tui_layout_type);
|
||||||
static struct tui_win_info *make_source_or_disasm_window (enum tui_win_type,
|
static struct tui_win_info *make_source_or_disasm_window (enum tui_win_type,
|
||||||
@ -546,7 +544,6 @@ make_command_window (int height, int origin_y)
|
|||||||
0,
|
0,
|
||||||
origin_y,
|
origin_y,
|
||||||
DONT_BOX_WINDOW);
|
DONT_BOX_WINDOW);
|
||||||
result->can_highlight = false;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,15 +618,12 @@ show_source_disasm_command (void)
|
|||||||
tui_win_list[SRC_WIN] = make_source_window (src_height, 0);
|
tui_win_list[SRC_WIN] = make_source_window (src_height, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
init_gen_win_info (TUI_SRC_WIN,
|
TUI_SRC_WIN->reset (TUI_SRC_WIN->type,
|
||||||
TUI_SRC_WIN->type,
|
|
||||||
src_height,
|
src_height,
|
||||||
TUI_SRC_WIN->width,
|
TUI_SRC_WIN->width,
|
||||||
TUI_SRC_WIN->execution_info->width,
|
TUI_SRC_WIN->execution_info->width,
|
||||||
0);
|
0);
|
||||||
TUI_SRC_WIN->can_highlight = true;
|
TUI_SRC_WIN->execution_info->reset (EXEC_INFO_WIN,
|
||||||
init_gen_win_info (TUI_SRC_WIN->execution_info,
|
|
||||||
EXEC_INFO_WIN,
|
|
||||||
src_height,
|
src_height,
|
||||||
3,
|
3,
|
||||||
0,
|
0,
|
||||||
@ -647,37 +641,32 @@ show_source_disasm_command (void)
|
|||||||
tui_win_list[DISASSEM_WIN]
|
tui_win_list[DISASSEM_WIN]
|
||||||
= make_disasm_window (asm_height, src_height - 1);
|
= make_disasm_window (asm_height, src_height - 1);
|
||||||
locator
|
locator
|
||||||
= ((struct tui_gen_win_info *)
|
= init_and_make_win (locator,
|
||||||
init_and_make_win (locator,
|
|
||||||
LOCATOR_WIN,
|
LOCATOR_WIN,
|
||||||
2 /* 1 */ ,
|
2 /* 1 */ ,
|
||||||
tui_term_width (),
|
tui_term_width (),
|
||||||
0,
|
0,
|
||||||
(src_height + asm_height) - 1,
|
(src_height + asm_height) - 1,
|
||||||
DONT_BOX_WINDOW));
|
DONT_BOX_WINDOW);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
init_gen_win_info (locator,
|
locator->reset (LOCATOR_WIN,
|
||||||
LOCATOR_WIN,
|
|
||||||
2 /* 1 */ ,
|
2 /* 1 */ ,
|
||||||
tui_term_width (),
|
tui_term_width (),
|
||||||
0,
|
0,
|
||||||
(src_height + asm_height) - 1);
|
(src_height + asm_height) - 1);
|
||||||
TUI_DISASM_WIN->m_has_locator = true;
|
TUI_DISASM_WIN->m_has_locator = true;
|
||||||
init_gen_win_info (TUI_DISASM_WIN,
|
TUI_DISASM_WIN->reset (TUI_DISASM_WIN->type,
|
||||||
TUI_DISASM_WIN->type,
|
|
||||||
asm_height,
|
asm_height,
|
||||||
TUI_DISASM_WIN->width,
|
TUI_DISASM_WIN->width,
|
||||||
TUI_DISASM_WIN->execution_info->width,
|
TUI_DISASM_WIN->execution_info->width,
|
||||||
src_height - 1);
|
src_height - 1);
|
||||||
init_gen_win_info (TUI_DISASM_WIN->execution_info,
|
TUI_DISASM_WIN->execution_info->reset (EXEC_INFO_WIN,
|
||||||
EXEC_INFO_WIN,
|
|
||||||
asm_height,
|
asm_height,
|
||||||
3,
|
3,
|
||||||
0,
|
0,
|
||||||
src_height - 1);
|
src_height - 1);
|
||||||
TUI_DISASM_WIN->can_highlight = true;
|
|
||||||
tui_make_visible (TUI_DISASM_WIN);
|
tui_make_visible (TUI_DISASM_WIN);
|
||||||
tui_make_visible (TUI_DISASM_WIN->execution_info);
|
tui_make_visible (TUI_DISASM_WIN->execution_info);
|
||||||
}
|
}
|
||||||
@ -692,13 +681,11 @@ show_source_disasm_command (void)
|
|||||||
= make_command_window (cmd_height, tui_term_height () - cmd_height);
|
= make_command_window (cmd_height, tui_term_height () - cmd_height);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
init_gen_win_info (TUI_CMD_WIN,
|
TUI_CMD_WIN->reset (TUI_CMD_WIN->type,
|
||||||
TUI_CMD_WIN->type,
|
|
||||||
TUI_CMD_WIN->height,
|
TUI_CMD_WIN->height,
|
||||||
TUI_CMD_WIN->width,
|
TUI_CMD_WIN->width,
|
||||||
0,
|
0,
|
||||||
TUI_CMD_WIN->origin.y);
|
TUI_CMD_WIN->origin.y);
|
||||||
TUI_CMD_WIN->can_highlight = false;
|
|
||||||
tui_make_visible (TUI_CMD_WIN);
|
tui_make_visible (TUI_CMD_WIN);
|
||||||
}
|
}
|
||||||
TUI_CMD_WIN->refresh_window ();
|
TUI_CMD_WIN->refresh_window ();
|
||||||
@ -723,7 +710,6 @@ show_data (enum tui_layout_type new_layout)
|
|||||||
tui_make_all_invisible ();
|
tui_make_all_invisible ();
|
||||||
tui_make_invisible (locator);
|
tui_make_invisible (locator);
|
||||||
make_data_window (&tui_win_list[DATA_WIN], data_height, 0);
|
make_data_window (&tui_win_list[DATA_WIN], data_height, 0);
|
||||||
TUI_DATA_WIN->can_highlight = true;
|
|
||||||
if (new_layout == SRC_DATA_COMMAND)
|
if (new_layout == SRC_DATA_COMMAND)
|
||||||
win_type = SRC_WIN;
|
win_type = SRC_WIN;
|
||||||
else
|
else
|
||||||
@ -739,35 +725,31 @@ show_data (enum tui_layout_type new_layout)
|
|||||||
tui_win_list[win_type]
|
tui_win_list[win_type]
|
||||||
= make_disasm_window (src_height, data_height - 1);
|
= make_disasm_window (src_height, data_height - 1);
|
||||||
locator
|
locator
|
||||||
= ((struct tui_gen_win_info *)
|
= init_and_make_win (locator,
|
||||||
init_and_make_win (locator,
|
|
||||||
LOCATOR_WIN,
|
LOCATOR_WIN,
|
||||||
2 /* 1 */ ,
|
2 /* 1 */ ,
|
||||||
tui_term_width (),
|
tui_term_width (),
|
||||||
0,
|
0,
|
||||||
total_height - 1,
|
total_height - 1,
|
||||||
DONT_BOX_WINDOW));
|
DONT_BOX_WINDOW);
|
||||||
base = (tui_source_window_base *) tui_win_list[win_type];
|
base = (tui_source_window_base *) tui_win_list[win_type];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
base = (tui_source_window_base *) tui_win_list[win_type];
|
base = (tui_source_window_base *) tui_win_list[win_type];
|
||||||
init_gen_win_info (tui_win_list[win_type],
|
tui_win_list[win_type]->reset (tui_win_list[win_type]->type,
|
||||||
tui_win_list[win_type]->type,
|
|
||||||
src_height,
|
src_height,
|
||||||
tui_win_list[win_type]->width,
|
tui_win_list[win_type]->width,
|
||||||
base->execution_info->width,
|
base->execution_info->width,
|
||||||
data_height - 1);
|
data_height - 1);
|
||||||
init_gen_win_info (base->execution_info,
|
base->execution_info->reset (EXEC_INFO_WIN,
|
||||||
EXEC_INFO_WIN,
|
|
||||||
src_height,
|
src_height,
|
||||||
3,
|
3,
|
||||||
0,
|
0,
|
||||||
data_height - 1);
|
data_height - 1);
|
||||||
tui_make_visible (tui_win_list[win_type]);
|
tui_make_visible (tui_win_list[win_type]);
|
||||||
tui_make_visible (base->execution_info);
|
tui_make_visible (base->execution_info);
|
||||||
init_gen_win_info (locator,
|
locator->reset (LOCATOR_WIN,
|
||||||
LOCATOR_WIN,
|
|
||||||
2 /* 1 */ ,
|
2 /* 1 */ ,
|
||||||
tui_term_width (),
|
tui_term_width (),
|
||||||
0,
|
0,
|
||||||
@ -781,67 +763,50 @@ show_data (enum tui_layout_type new_layout)
|
|||||||
tui_set_current_layout_to (new_layout);
|
tui_set_current_layout_to (new_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* init_gen_win_info().
|
void
|
||||||
*/
|
tui_gen_win_info::reset (enum tui_win_type win_type,
|
||||||
static void
|
int height_, int width_,
|
||||||
init_gen_win_info (struct tui_gen_win_info *win_info,
|
int origin_x_, int origin_y_)
|
||||||
enum tui_win_type type,
|
|
||||||
int height, int width,
|
|
||||||
int origin_x, int origin_y)
|
|
||||||
{
|
{
|
||||||
int h = height;
|
int h = height_;
|
||||||
|
|
||||||
win_info->type = type;
|
gdb_assert (type == win_type);
|
||||||
win_info->width = width;
|
|
||||||
win_info->height = h;
|
width = width_;
|
||||||
|
height = h;
|
||||||
if (h > 1)
|
if (h > 1)
|
||||||
{
|
{
|
||||||
win_info->viewport_height = h - 1;
|
viewport_height = h - 1;
|
||||||
if (win_info->type != CMD_WIN)
|
if (type != CMD_WIN)
|
||||||
win_info->viewport_height--;
|
viewport_height--;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
win_info->viewport_height = 1;
|
viewport_height = 1;
|
||||||
win_info->origin.x = origin_x;
|
origin.x = origin_x_;
|
||||||
win_info->origin.y = origin_y;
|
origin.y = origin_y_;
|
||||||
|
}
|
||||||
return;
|
|
||||||
} /* init_gen_win_info */
|
|
||||||
|
|
||||||
/* init_and_make_win().
|
/* init_and_make_win().
|
||||||
*/
|
*/
|
||||||
static void *
|
static tui_gen_win_info *
|
||||||
init_and_make_win (void *opaque_win_info,
|
init_and_make_win (tui_gen_win_info *win_info,
|
||||||
enum tui_win_type win_type,
|
enum tui_win_type win_type,
|
||||||
int height, int width,
|
int height, int width,
|
||||||
int origin_x, int origin_y,
|
int origin_x, int origin_y,
|
||||||
int box_it)
|
int box_it)
|
||||||
{
|
{
|
||||||
struct tui_gen_win_info *generic;
|
if (win_info == NULL)
|
||||||
|
|
||||||
if (opaque_win_info == NULL)
|
|
||||||
{
|
{
|
||||||
if (tui_win_is_auxillary (win_type))
|
if (tui_win_is_auxillary (win_type))
|
||||||
opaque_win_info = (void *) new tui_gen_win_info (win_type);
|
win_info = new tui_gen_win_info (win_type);
|
||||||
else
|
else
|
||||||
opaque_win_info = (void *) tui_alloc_win_info (win_type);
|
win_info = tui_alloc_win_info (win_type);
|
||||||
}
|
}
|
||||||
if (tui_win_is_auxillary (win_type))
|
|
||||||
generic = (struct tui_gen_win_info *) opaque_win_info;
|
|
||||||
else
|
|
||||||
generic = (struct tui_win_info *) opaque_win_info;
|
|
||||||
|
|
||||||
init_gen_win_info (generic, win_type, height, width, origin_x, origin_y);
|
win_info->reset (win_type, height, width, origin_x, origin_y);
|
||||||
if (!tui_win_is_auxillary (win_type))
|
tui_make_window (win_info, box_it);
|
||||||
{
|
|
||||||
if (generic->type == CMD_WIN)
|
|
||||||
((struct tui_win_info *) opaque_win_info)->can_highlight = false;
|
|
||||||
else
|
|
||||||
((struct tui_win_info *) opaque_win_info)->can_highlight = true;
|
|
||||||
}
|
|
||||||
tui_make_window (generic, box_it);
|
|
||||||
|
|
||||||
return opaque_win_info;
|
return win_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -910,39 +875,34 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type)
|
|||||||
else
|
else
|
||||||
*win_info_ptr = make_disasm_window (src_height - 1, 0);
|
*win_info_ptr = make_disasm_window (src_height - 1, 0);
|
||||||
locator
|
locator
|
||||||
= ((struct tui_gen_win_info *)
|
= init_and_make_win (locator,
|
||||||
init_and_make_win (locator,
|
|
||||||
LOCATOR_WIN,
|
LOCATOR_WIN,
|
||||||
2 /* 1 */ ,
|
2 /* 1 */ ,
|
||||||
tui_term_width (),
|
tui_term_width (),
|
||||||
0,
|
0,
|
||||||
src_height - 1,
|
src_height - 1,
|
||||||
DONT_BOX_WINDOW));
|
DONT_BOX_WINDOW);
|
||||||
base = (tui_source_window_base *) *win_info_ptr;
|
base = (tui_source_window_base *) *win_info_ptr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
base = (tui_source_window_base *) *win_info_ptr;
|
base = (tui_source_window_base *) *win_info_ptr;
|
||||||
init_gen_win_info (locator,
|
locator->reset (LOCATOR_WIN,
|
||||||
LOCATOR_WIN,
|
|
||||||
2 /* 1 */ ,
|
2 /* 1 */ ,
|
||||||
tui_term_width (),
|
tui_term_width (),
|
||||||
0,
|
0,
|
||||||
src_height - 1);
|
src_height - 1);
|
||||||
base->m_has_locator = true;
|
base->m_has_locator = true;
|
||||||
init_gen_win_info (*win_info_ptr,
|
(*win_info_ptr)->reset ((*win_info_ptr)->type,
|
||||||
(*win_info_ptr)->type,
|
|
||||||
src_height - 1,
|
src_height - 1,
|
||||||
(*win_info_ptr)->width,
|
(*win_info_ptr)->width,
|
||||||
base->execution_info->width,
|
base->execution_info->width,
|
||||||
0);
|
0);
|
||||||
init_gen_win_info (base->execution_info,
|
base->execution_info->reset (EXEC_INFO_WIN,
|
||||||
EXEC_INFO_WIN,
|
|
||||||
src_height - 1,
|
src_height - 1,
|
||||||
3,
|
3,
|
||||||
0,
|
0,
|
||||||
0);
|
0);
|
||||||
base->can_highlight = true;
|
|
||||||
tui_make_visible (*win_info_ptr);
|
tui_make_visible (*win_info_ptr);
|
||||||
tui_make_visible (base->execution_info);
|
tui_make_visible (base->execution_info);
|
||||||
}
|
}
|
||||||
@ -960,13 +920,11 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
init_gen_win_info (TUI_CMD_WIN,
|
TUI_CMD_WIN->reset (TUI_CMD_WIN->type,
|
||||||
TUI_CMD_WIN->type,
|
|
||||||
TUI_CMD_WIN->height,
|
TUI_CMD_WIN->height,
|
||||||
TUI_CMD_WIN->width,
|
TUI_CMD_WIN->width,
|
||||||
TUI_CMD_WIN->origin.x,
|
TUI_CMD_WIN->origin.x,
|
||||||
TUI_CMD_WIN->origin.y);
|
TUI_CMD_WIN->origin.y);
|
||||||
TUI_CMD_WIN->can_highlight = false;
|
|
||||||
tui_make_visible (TUI_CMD_WIN);
|
tui_make_visible (TUI_CMD_WIN);
|
||||||
}
|
}
|
||||||
tui_set_current_layout_to (layout_type);
|
tui_set_current_layout_to (layout_type);
|
||||||
|
Reference in New Issue
Block a user