summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-02-22 11:48:26 -0700
committerTom Tromey <tom@tromey.com>2020-02-22 11:48:28 -0700
commit427326a826888b39a38c9f1b497aa981f37b72af (patch)
tree6add38d94856d4c2677f41b60b42be8d6b68ee26 /gdb
parent3fe12b6d67182a81d2ffabbfe405fb5ffc0694b2 (diff)
downloadbinutils-gdb-427326a826888b39a38c9f1b497aa981f37b72af.tar.gz
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
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/tui/tui-layout.c7
-rw-r--r--gdb/tui/tui-layout.h3
-rw-r--r--gdb/tui/tui.c38
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,5 +1,11 @@
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
correct coordinates.
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;
}