aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2023-12-08 23:02:31 +0100
committerTom de Vries <tdevries@suse.de>2023-12-08 23:02:31 +0100
commit612f120d41e81056bf29db07f494f0cdf27b545d (patch)
tree6a496c0984771ca9894d4e527ea601404f54b6ea /gdb/tui
parent576745e26c0ec76a53ba45b20af464628a50b3e4 (diff)
downloadbinutils-612f120d41e81056bf29db07f494f0cdf27b545d.zip
binutils-612f120d41e81056bf29db07f494f0cdf27b545d.tar.gz
binutils-612f120d41e81056bf29db07f494f0cdf27b545d.tar.bz2
[gdb/tui] Show focus window in status line
The focused window is highlighted by using active-border-kind instead of border-kind. But if the focused window is the cmd window (which is an unboxed window), then no highlighting is done, and it's not obvious from looking at the screen which window has the focus. Instead, you have to notice the absence of highlighting on boxed windows, and then infer that the focus is on the unboxed window. That approach stops working if there are multiple unboxed windows. Likewise if highlighting is switched off by setting active-border-kind to the same value as border-kind. Make it more explicit which window has the focus by mentioning it in the status window, like so: ... native process 8282 (src) In: main L7 PC: 0x400525 ... Tested on x86_64-linux and ppc64le-linux. Tested-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com> Reviewed-By: Eli Zaretskii <eliz@gnu.org> Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/tui')
-rw-r--r--gdb/tui/tui-data.c2
-rw-r--r--gdb/tui/tui-stack.c16
2 files changed, 18 insertions, 0 deletions
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)
{