diff options
-rw-r--r-- | gdb/doc/gdb.texinfo | 3 | ||||
-rw-r--r-- | gdb/testsuite/gdb.tui/single-key.exp | 4 | ||||
-rw-r--r-- | gdb/tui/tui-data.c | 2 | ||||
-rw-r--r-- | gdb/tui/tui-stack.c | 16 |
4 files changed, 23 insertions, 2 deletions
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 15c7199..58685a7 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -30340,6 +30340,9 @@ Indicates the current @value{GDBN} target. Gives the current process or thread number. When no process is being debugged, this field is set to @code{No process}. +@item focus +Shows the name of the TUI window that has the focus. + @item function Gives the current function name for the selected frame. The name is demangled if demangling is turned on (@pxref{Print Settings}). diff --git a/gdb/testsuite/gdb.tui/single-key.exp b/gdb/testsuite/gdb.tui/single-key.exp index 07c9b00..3925a81 100644 --- a/gdb/testsuite/gdb.tui/single-key.exp +++ b/gdb/testsuite/gdb.tui/single-key.exp @@ -25,12 +25,12 @@ set status_win { 0 15 80 1 } set command_win { 0 16 80 8 } # Check that the status window doesn't show Singlekey. -set re "No process In:" +set re [string_to_regexp "No process (src) In:"] Term::check_region_contents "status window: initial" {*}$status_win $re # Enter single-key mode. Check that the status window does show Singlekey. send_gdb "\030s" -set re "No process \\(SingleKey\\) In:" +set re [string_to_regexp "No process (SingleKey) (src) In:"] gdb_assert { [Term::wait_for_region_contents {*}$status_win $re] } \ "status window: single-key mode" diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c index c51bd11..f5a9823 100644 --- a/gdb/tui/tui-data.c +++ b/gdb/tui/tui-data.c @@ -26,6 +26,7 @@ #include "tui/tui-win.h" #include "tui/tui-wingeneral.h" #include "tui/tui-winsource.h" +#include "tui/tui-stack.h" #include "gdb_curses.h" #include <algorithm> @@ -69,6 +70,7 @@ tui_set_win_focus_to (struct tui_win_info *win_info) tui_unhighlight_win (win_with_focus); win_with_focus = win_info; tui_highlight_win (win_info); + tui_show_locator_content (); } } diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 723d626..8bf65ea 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -106,6 +106,12 @@ tui_locator_window::make_status_line () const const char *pc_buf = pc_out.c_str (); int pc_width = pc_out.size (); + /* Width of the field showing the window with current focus. For a window + named "src" we show "(src)". */ + int focus_width = (tui_win_with_focus () != nullptr + ? 1 + strlen (tui_win_with_focus ()->name ()) + 1 + : 0); + /* First determine the amount of proc name width we have available. The +1 are for a space separator between fields. */ proc_width = (status_size @@ -116,6 +122,9 @@ tui_locator_window::make_status_line () const - (PC_PREFIX.size () + pc_width + 1) - (tui_current_key_mode == TUI_SINGLE_KEY_MODE ? (SINGLE_KEY.size () + 1) + : 0) + - (focus_width > 0 + ? focus_width + 1 : 0)); /* If there is no room to print the function name, try by removing @@ -159,6 +168,13 @@ tui_locator_window::make_status_line () const string.puts (" "); } + if (tui_win_with_focus () != nullptr) + { + string.puts ("("); + string.puts (tui_win_with_focus ()->name ()); + string.puts (") "); + } + /* Procedure/class name. */ if (proc_width > 0) { |