aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/row.rs8
-rw-r--r--tests/text.rs4
2 files changed, 10 insertions, 2 deletions
diff --git a/src/row.rs b/src/row.rs
index 90e92db..36d7d34 100644
--- a/src/row.rs
+++ b/src/row.rs
@@ -167,7 +167,9 @@ impl Row {
if pos != prev_pos {
if !wrapping
|| prev_pos.row + 1 != pos.row
- || prev_pos.col != self.cols()
+ || prev_pos.col
+ < self.cols()
+ - if cell.is_wide() { 1 } else { 0 }
|| pos.col != 0
{
crate::term::MoveFromTo::new(prev_pos, pos)
@@ -260,7 +262,9 @@ impl Row {
if pos != prev_pos {
if !wrapping
|| prev_pos.row + 1 != pos.row
- || prev_pos.col != self.cols()
+ || prev_pos.col
+ < self.cols()
+ - if cell.is_wide() { 1 } else { 0 }
|| pos.col != 0
{
crate::term::MoveFromTo::new(prev_pos, pos)
diff --git a/tests/text.rs b/tests/text.rs
index 51ee297..d153f11 100644
--- a/tests/text.rs
+++ b/tests/text.rs
@@ -226,6 +226,10 @@ fn wrap() {
assert_eq!(parser.screen().cell(1, 2).unwrap().contents(), "a");
assert_eq!(parser.screen().cell(1, 3).unwrap().contents(), "");
+ let mut new_parser = vt100::Parser::default();
+ new_parser.process(&parser.screen().contents_formatted());
+ assert_eq!(new_parser.screen().contents(), parser.screen().contents());
+
parser.process(b"\x1b[H\x1b[J");
assert_eq!(parser.screen().contents(), "");
parser.process(b" ");