diff options
author | Tom de Vries <tdevries@suse.de> | 2023-12-04 08:48:48 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-12-04 08:48:48 +0100 |
commit | d1a912db7fdf50c28224d20464bfa163d8438980 (patch) | |
tree | b17d70bbfa6bf7f7086c81a5dbdccd4bd7312dce /gdb/testsuite | |
parent | 6497a01d1d38ca033188702068f38cf6dad75d84 (diff) | |
download | gdb-d1a912db7fdf50c28224d20464bfa163d8438980.zip gdb-d1a912db7fdf50c28224d20464bfa163d8438980.tar.gz gdb-d1a912db7fdf50c28224d20464bfa163d8438980.tar.bz2 |
[gdb/tui] Fix wrapping strings
I noticed that after resizing to a narrow window, I got:
...
┌────────────────┐
│ │
│[ No Source Avail
able ] │
│ │
└────────────────┘
...
Fix this by adding two new functions:
- tui_win_info::display_string (int y, int x, const char *str)
- tui_win_info::display_string (const char *str)
that make sure that borders are not overwritten, which get us instead:
...
┌────────────────┐
│ │
│[ No Source Avai│
│ │
│ │
└────────────────┘
...
Tested on x86_64-linux.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/gdb.tui/narrow.exp | 49 | ||||
-rw-r--r-- | gdb/testsuite/lib/tuiterm.exp | 15 |
2 files changed, 64 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.tui/narrow.exp b/gdb/testsuite/gdb.tui/narrow.exp new file mode 100644 index 0000000..7407398 --- /dev/null +++ b/gdb/testsuite/gdb.tui/narrow.exp @@ -0,0 +1,49 @@ +# Copyright 2023 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Test narrow window. + +tuiterm_env + +# We'd like to start out here with a narrow window, but that's currently not +# possible. So instead, we start out with a large one, and resize. +Term::clean_restart 24 80 + +if {![Term::enter_tui]} { + unsupported "TUI not supported" + return +} + +# Disable resize messages. They are long and will cause wrapping. +Term::command "maint set tui-resize-message off" + +# Scroll previous command off screen. It is long and will cause wrapping. +for {set i 0} {$i < 8} {incr i} { + Term::command "echo" +} + +Term::check_box "src box" 0 0 80 15 + +# Resize to narrow screen. +Term::resize 24 20 0 + +# Instead of waiting for the resize messages, wait for the resized box. +Term::wait_for_box "narrow src box" 0 0 20 15 + +Term::command "layout asm" +Term::check_box "narrow asm box" 0 0 20 15 + +Term::command "layout regs" +Term::check_box "narrow regs box" 0 0 20 8 diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp index 854fde5..e668fe2 100644 --- a/gdb/testsuite/lib/tuiterm.exp +++ b/gdb/testsuite/lib/tuiterm.exp @@ -1102,6 +1102,21 @@ namespace eval Term { } } + # Wait until a box appears at the given coordinates. + proc wait_for_box {test_name x y width height} { + while 1 { + if { [accept_gdb_output] == 0 } { + return 0 + } + + set why [_check_box $x $y $width $height] + if {$why == ""} { + pass $test_name + break + } + } + } + # Check whether the text contents of the terminal match the # regular expression. Note that text styling is not considered. proc check_contents {test_name regexp} { |