aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/doc/gdb.texinfo3
-rw-r--r--gdb/testsuite/gdb.tui/single-key.exp4
-rw-r--r--gdb/tui/tui-data.c2
-rw-r--r--gdb/tui/tui-stack.c16
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)
{