Make TUI borders respect "set style enabled"

Message ID 20200104213701.14414-1-tom@tromey.com
State New
Headers show
Series
  • Make TUI borders respect "set style enabled"
Related show

Commit Message

Tom Tromey Jan. 4, 2020, 9:37 p.m.
When adding support for styling the TUI borders, I neglected to have
this code check cli_styling.  As a result, "set style enabled off"
does not affect the borders.

This patch fixes this oversight.  While doing this, I found that
running gdb without an executable, enabling the TUI, and then trying
"set style enabled off" would fail with the mysterious "No registers".
The fix for this is to use deprecated_safe_get_selected_frame in
tui_source_window_base::refill.

gdb/ChangeLog
2020-01-04  Tom Tromey  <tom@tromey.com>

	* tui/tui-wingeneral.c (box_win): Check cli_styling.
	* tui/tui-winsource.c (tui_source_window_base::refill): Use
	deprecated_safe_get_selected_frame.

Change-Id: I36acda25dd9014d994d366b4a0e8faee9d95d0f8
---
 gdb/ChangeLog            | 6 ++++++
 gdb/tui/tui-wingeneral.c | 7 ++++---
 gdb/tui/tui-winsource.c  | 6 +++++-
 3 files changed, 15 insertions(+), 4 deletions(-)

-- 
2.17.2

Comments

Simon Marchi via Gdb-patches Jan. 4, 2020, 9:44 p.m. | #1
On Sat, Jan 4, 2020 at 4:37 PM Tom Tromey <tom@tromey.com> wrote:
>

> When adding support for styling the TUI borders, I neglected to have

> this code check cli_styling.  As a result, "set style enabled off"

> does not affect the borders.

>

> This patch fixes this oversight.  While doing this, I found that

> running gdb without an executable, enabling the TUI, and then trying

> "set style enabled off" would fail with the mysterious "No registers".

> The fix for this is to use deprecated_safe_get_selected_frame in

> tui_source_window_base::refill.


So I don't know this code, but if you have to add a call to that
function maybe it shouldn't be deprecated?

Christian
Tom Tromey Jan. 6, 2020, 2:55 p.m. | #2
>>>>> "Christian" == Christian Biesinger <cbiesinger@google.com> writes:


Christian> So I don't know this code, but if you have to add a call to that
Christian> function maybe it shouldn't be deprecated?

I tend to think we should just un-deprecate this particular call.
It's useful to be able to see if there's a frame without having to
handle an exception.

Tom
Tom Tromey Jan. 11, 2020, 7:41 p.m. | #3
>>>>> "Tom" == Tom Tromey <tom@tromey.com> writes:


Tom> gdb/ChangeLog
Tom> 2020-01-04  Tom Tromey  <tom@tromey.com>

Tom> 	* tui/tui-wingeneral.c (box_win): Check cli_styling.
Tom> 	* tui/tui-winsource.c (tui_source_window_base::refill): Use
Tom> 	deprecated_safe_get_selected_frame.

I'm checking this in now.

Tom

Patch

diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index dae4255ada2..0a9fc5238d6 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -55,9 +55,10 @@  box_win (struct tui_win_info *win_info,
 
   /* tui_apply_style resets the style entirely, so be sure to call it
      before applying ATTRS.  */
-  tui_apply_style (win, (highlight_flag
-			 ? tui_active_border_style.style ()
-			 : tui_border_style.style ()));
+  if (cli_styling)
+    tui_apply_style (win, (highlight_flag
+			   ? tui_active_border_style.style ()
+			   : tui_border_style.style ()));
   wattron (win, attrs);
 #ifdef HAVE_WBORDER
   wborder (win, tui_border_vline, tui_border_vline,
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 69070115ec6..fbee2e3e181 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -352,7 +352,11 @@  tui_source_window_base::refill ()
     {
       sal = get_current_source_symtab_and_line ();
       if (sal.symtab == NULL)
-	sal = find_pc_line (get_frame_pc (get_selected_frame (NULL)), 0);
+	{
+	  struct frame_info *fi = deprecated_safe_get_selected_frame ();
+	  if (fi != nullptr)
+	    sal = find_pc_line (get_frame_pc (fi), 0);
+	}
     }
 
   if (sal.pspace == nullptr)