Simplify TUI C-x 2 binding
The TUI "C-x 2" binding tries to switch to a different layout based on the current layout. Once user-defined layouts are available, this won't really make sense. I wasn't entirely sure how to handle this. This patch changes the binding to simply cycle through the existing layouts. I considered this a reasonable, though not ideal, compromise. gdb/ChangeLog 2020-02-22 Tom Tromey <tom@tromey.com> * tui/tui.c (tui_rl_change_windows): Call tui_next_layout. * tui/tui-layout.h (tui_next_layout): Declare. * tui/tui-layout.c (tui_next_layout): New function. Change-Id: Ic101f0e3831a4235a048b3090ef60f025f7449bb
This commit is contained in:
parent
3fe12b6d67
commit
427326a826
|
@ -1,3 +1,9 @@
|
|||
2020-02-22 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* tui/tui.c (tui_rl_change_windows): Call tui_next_layout.
|
||||
* tui/tui-layout.h (tui_next_layout): Declare.
|
||||
* tui/tui-layout.c (tui_next_layout): New function.
|
||||
|
||||
2020-02-22 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* tui/tui-regs.c (tui_data_window::display_registers_from): Use
|
||||
|
|
|
@ -278,6 +278,13 @@ tui_layout_command (const char *layout_name, int from_tty)
|
|||
tui_set_layout (new_layout);
|
||||
}
|
||||
|
||||
/* See tui-layout.h. */
|
||||
|
||||
void
|
||||
tui_next_layout ()
|
||||
{
|
||||
tui_layout_command ("next", 0);
|
||||
}
|
||||
|
||||
static void
|
||||
extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
|
||||
|
|
|
@ -181,6 +181,9 @@ extern void tui_add_win_to_layout (enum tui_win_type);
|
|||
|
||||
extern void tui_set_layout (enum tui_layout_type);
|
||||
|
||||
/* Switch to the next layout. */
|
||||
extern void tui_next_layout ();
|
||||
|
||||
/* Apply the current layout. */
|
||||
extern void tui_apply_current_layout ();
|
||||
|
||||
|
|
|
@ -140,8 +140,7 @@ tui_rl_switch_mode (int notused1, int notused2)
|
|||
/* TUI readline command.
|
||||
Change the TUI layout to show a next layout.
|
||||
This function is bound to CTRL-X 2. It is intended to provide
|
||||
a functionality close to the Emacs split-window command. We
|
||||
always show two windows (src+asm), (src+regs) or (asm+regs). */
|
||||
a functionality close to the Emacs split-window command. */
|
||||
static int
|
||||
tui_rl_change_windows (int notused1, int notused2)
|
||||
{
|
||||
|
@ -149,41 +148,8 @@ tui_rl_change_windows (int notused1, int notused2)
|
|||
tui_rl_switch_mode (0 /* notused */, 0 /* notused */);
|
||||
|
||||
if (tui_active)
|
||||
{
|
||||
enum tui_layout_type new_layout;
|
||||
tui_next_layout ();
|
||||
|
||||
new_layout = tui_current_layout ();
|
||||
|
||||
/* Select a new layout to have a rolling layout behavior with
|
||||
always two windows (except when undefined). */
|
||||
switch (new_layout)
|
||||
{
|
||||
case SRC_COMMAND:
|
||||
new_layout = SRC_DISASSEM_COMMAND;
|
||||
break;
|
||||
|
||||
case DISASSEM_COMMAND:
|
||||
new_layout = SRC_DISASSEM_COMMAND;
|
||||
break;
|
||||
|
||||
case SRC_DATA_COMMAND:
|
||||
new_layout = SRC_DISASSEM_COMMAND;
|
||||
break;
|
||||
|
||||
case SRC_DISASSEM_COMMAND:
|
||||
new_layout = DISASSEM_DATA_COMMAND;
|
||||
break;
|
||||
|
||||
case DISASSEM_DATA_COMMAND:
|
||||
new_layout = SRC_DATA_COMMAND;
|
||||
break;
|
||||
|
||||
default:
|
||||
new_layout = SRC_COMMAND;
|
||||
break;
|
||||
}
|
||||
tui_set_layout (new_layout);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue