Truncate long TUI window titles
authorTom Tromey <tom@tromey.com>
Thu, 18 Jul 2019 21:07:01 +0000 (15:07 -0600)
committerTom Tromey <tom@tromey.com>
Sun, 8 Sep 2019 20:06:54 +0000 (14:06 -0600)
If a TUI window has a long title, it can overflow the title line.
This changes the TUI to use just the tail part of the title in this
case.

gdb/ChangeLog
2019-09-08  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (box_win): Truncate long window titles.

gdb/testsuite/ChangeLog
2019-09-08  Tom Tromey  <tom@tromey.com>

* gdb.tui/resize.exp: Remove setup_xfail.
* gdb.tui/regs.exp: Remove setup_xfail.
* gdb.tui/basic.exp: Remove setup_xfail.

gdb/ChangeLog
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.tui/basic.exp
gdb/testsuite/gdb.tui/regs.exp
gdb/testsuite/gdb.tui/resize.exp
gdb/tui/tui-wingeneral.c

index d5938be9a09f0df60694ea1e1d05e300e27e10b5..af1608db9a95f9485fec24fdb8bebf6b874ad4c7 100644 (file)
@@ -1,3 +1,7 @@
+2019-09-08  Tom Tromey  <tom@tromey.com>
+
+       * tui/tui-wingeneral.c (box_win): Truncate long window titles.
+
 2019-09-07  Simon Marchi  <simon.marchi@efficios.com>
 
        * dwarf2read.c (struct dw2_symtab_iterator) <block_index>:
index a6a645b81bd2693e8caff0b0741c48055c15d8c9..6cee4787e08352b081dbb548bf1aeabc5a625c11 100644 (file)
@@ -1,3 +1,9 @@
+2019-09-08  Tom Tromey  <tom@tromey.com>
+
+       * gdb.tui/resize.exp: Remove setup_xfail.
+       * gdb.tui/regs.exp: Remove setup_xfail.
+       * gdb.tui/basic.exp: Remove setup_xfail.
+
 2019-09-06  David Blaikie  <dblaikie@gmail.com>
 
        * gdb.base/label.exp: un-XFAIL label related tests under Clang.
index f60011c386aaf3e99e5b1441c851b67465eeaf19..716c52f68a6191923fe40b37ea43cafd38506eaf 100644 (file)
@@ -35,9 +35,6 @@ gdb_assert {![string match "No Source Available" $text]} \
 Term::command "list main"
 Term::check_contents "list main" "21 *return 0"
 
-# This check fails because the file name in the title overwrites the
-# box.
-setup_xfail *-*-*
 Term::check_box "source box" 0 0 80 15
 
 Term::command "layout asm"
@@ -48,8 +45,5 @@ Term::check_box "asm box" 0 0 80 15
 Term::command "layout split"
 Term::check_contents "split layout contents" "21 *return 0.*$hex <main>"
 
-# This check fails because the file name in the title overwrites the
-# box.
-setup_xfail *-*-*
 Term::check_box "source box in split layout" 0 0 80 8
 Term::check_box "asm box in split layout" 0 7 80 8
index f17b1db8d40b6336073100768b9184f53dfa49e0..1af943dd152d775f2fbddc3d901a539dde926390 100644 (file)
@@ -38,9 +38,6 @@ Term::check_contents "source at startup" ">|21 *return 0"
 
 Term::command "layout regs"
 Term::check_box "register box" 0 0 80 8
-# This check fails because the file name in the title overwrites the
-# box.
-setup_xfail *-*-*
 Term::check_box "source box in regs layout" 0 7 80 8
 
 set text [Term::get_line 1]
index 8484e03c7177430afbc197de99ea9c9436ac2fb7..3b885e1198ef1624df8102fd50e80fe906ab214e 100644 (file)
@@ -37,6 +37,4 @@ if {![Term::enter_tui]} {
 Term::check_contents "source at startup" ">|21 *return 0"
 
 Term::resize 40 90
-# Resizing seems to be somewhat broken.
-setup_xfail *-*-*
 Term::check_box "source box after resize" 0 0 90 23
index f900eab0133cf28394de75f904611845d3d3c618..235c17c5fa28a36b68f37dd883bec32c7f89601e 100644 (file)
@@ -74,7 +74,21 @@ box_win (struct tui_win_info *win_info,
   box (win, tui_border_vline, tui_border_hline);
 #endif
   if (!win_info->title.empty ())
-    mvwaddstr (win, 0, 3, win_info->title.c_str ());
+    {
+      /* Emit "+-TITLE-+" -- so 2 characters on the right and 2 on
+        the left.  */
+      int max_len = win_info->width - 2 - 2;
+
+      if (win_info->title.size () <= max_len)
+       mvwaddstr (win, 0, 3, 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 ());
+       }
+    }
   wattroff (win, attrs);
 }