From 427326a826888b39a38c9f1b497aa981f37b72af Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 22 Feb 2020 11:48:26 -0700 Subject: [PATCH] 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 * 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 --- gdb/ChangeLog | 6 ++++++ gdb/tui/tui-layout.c | 7 +++++++ gdb/tui/tui-layout.h | 3 +++ gdb/tui/tui.c | 38 ++------------------------------------ 4 files changed, 18 insertions(+), 36 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e35d5c5bc30..4ab0309dc2a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2020-02-22 Tom Tromey + + * 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 * tui/tui-regs.c (tui_data_window::display_registers_from): Use diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index ce1f6a74d08..6a998e8b7d1 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -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) diff --git a/gdb/tui/tui-layout.h b/gdb/tui/tui-layout.h index 37f07c24e4f..7e4b7b7a816 100644 --- a/gdb/tui/tui-layout.h +++ b/gdb/tui/tui-layout.h @@ -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 (); diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c index 0a598373ce6..74bf32d53b7 100644 --- a/gdb/tui/tui.c +++ b/gdb/tui/tui.c @@ -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; - - 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; + tui_next_layout (); - default: - new_layout = SRC_COMMAND; - break; - } - tui_set_layout (new_layout); - } return 0; } -- 2.30.2