gdb/tui: Place window titles in the center of the border

Message ID 20200110000926.21645-1-andrew.burgess@embecosm.com
State New, archived
Headers

Commit Message

Andrew Burgess Jan. 10, 2020, 12:09 a.m. UTC
  In tui-wingeneral.c:box_win () a comment suggest we should display
titles like this:

  +-WINDOW TITLE GOES HERE-+

However, we actually display them like this:

  +--WINDOW TITLE GOES HERE+

The former seems nicer to me, so that's what this commit does.  Short
titles will appear as:

  +-SHORT TITLE------------+

We previously didn't test the horizontal windows borders in the test
suite, however, I've updated things so that we do now check for the
'+-' and '-+' on the upper border, this will give us some protection.

gdb/ChangeLog:

	* tui/tui-wingeneral.c (box_win): Position the title in the center
	of the border.

gdb/testsuite/ChangeLog:

	* lib/tuiterm.exp (Term::_check_box): Check some parts of the top
	border.

Change-Id: Iead6910e3b4e68bdf6871f861f23d2efd699faf0
---
 gdb/ChangeLog                 |  5 +++++
 gdb/testsuite/ChangeLog       |  5 +++++
 gdb/testsuite/lib/tuiterm.exp | 17 ++++++++++++++---
 gdb/tui/tui-wingeneral.c      |  4 ++--
 4 files changed, 26 insertions(+), 5 deletions(-)
  

Comments

Tom Tromey Jan. 10, 2020, 2:26 p.m. UTC | #1
>>>>> "Andrew" == Andrew Burgess <andrew.burgess@embecosm.com> writes:

Andrew> In tui-wingeneral.c:box_win () a comment suggest we should display
Andrew> titles like this:
Andrew>   +-WINDOW TITLE GOES HERE-+
Andrew> However, we actually display them like this:
Andrew>   +--WINDOW TITLE GOES HERE+

Ugh, I had an off-by-one in an earlier patch and didn't notice.

Andrew> We previously didn't test the horizontal windows borders in the test
Andrew> suite, however, I've updated things so that we do now check for the
Andrew> '+-' and '-+' on the upper border, this will give us some protection.

Nice.

Andrew> gdb/ChangeLog:

Andrew> 	* tui/tui-wingeneral.c (box_win): Position the title in the center
Andrew> 	of the border.

Andrew> gdb/testsuite/ChangeLog:

Andrew> 	* lib/tuiterm.exp (Term::_check_box): Check some parts of the top
Andrew> 	border.

Looks good to me!

thanks,
Tom
  

Patch

diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index 7adaf1b71ab..da5580324a9 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -569,9 +569,20 @@  namespace eval Term {
 	    return "lr corner"
 	}
 
-	# Note we do not check the horizonal borders of the box.  The
-	# top will contain a title, and the bottom may as well, if it
-	# is overlapped by some other border.
+	# Note we do not check the full horizonal borders of the box.
+	# The top will contain a title, and the bottom may as well, if
+	# it is overlapped by some other border.  However, at most a
+	# title should appear as '+-VERY LONG TITLE-+', so we can
+	# check for the '+-' on the left, and '-+' on the right.
+	if {[get_char [expr {$x + 1}] $y] != "-"} {
+	    return "ul title padding"
+	}
+
+	if {[get_char [expr {$x2 - 1}] $y] != "-"} {
+	    return "ul title padding"
+	}
+
+	# Now check the vertical borders.
 	for {set i [expr {$y + 1}]} {$i < $y2 - 1} {incr i} {
 	    if {[get_char $x $i] != "|"} {
 		return "left side $i"
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index dae4255ada2..bf43485b0a7 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -74,13 +74,13 @@  box_win (struct tui_win_info *win_info,
       int max_len = win_info->width - 2 - 2;
 
       if (win_info->title.size () <= max_len)
-	mvwaddstr (win, 0, 3, win_info->title.c_str ());
+	mvwaddstr (win, 0, 2, win_info->title.c_str ());
       else
 	{
 	  std::string truncated
 	    = "..." + win_info->title.substr (win_info->title.size ()
 					      - max_len + 3);
-	  mvwaddstr (win, 0, 3, truncated.c_str ());
+	  mvwaddstr (win, 0, 2, truncated.c_str ());
 	}
     }
   wattroff (win, attrs);