gdb/tui: Place window titles in the center of the border
Commit Message
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
>>>>> "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
@@ -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"
@@ -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);