diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-06 13:11:22 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-06 13:11:22 -0500 |
commit | d778408be8b12fcc16a8fcaccde49bef927f22e0 (patch) | |
tree | 0cfbe005a54ca3146d335c98b91203a1e114c392 /src/row.rs | |
parent | 07ecf81b095cc1f23428f05079d65aa5d1677ca4 (diff) | |
download | vt100-rust-d778408be8b12fcc16a8fcaccde49bef927f22e0.tar.gz vt100-rust-d778408be8b12fcc16a8fcaccde49bef927f22e0.zip |
make row.contents_diff not require the row index
Diffstat (limited to 'src/row.rs')
-rw-r--r-- | src/row.rs | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -125,11 +125,10 @@ impl Row { pub fn contents_diff( &self, - row_idx: u16, prev: &Self, attrs: crate::attrs::Attrs, ) -> (Vec<u8>, crate::attrs::Attrs, u16) { - let mut needs_move = true; + let mut skip = 0; let mut contents = vec![]; let mut prev_attrs = attrs; let mut final_col = 0; @@ -137,14 +136,11 @@ impl Row { self.cells().zip(prev.cells()).enumerate() { if cell == prev_cell { - needs_move = true; + skip += 1; } else { - if needs_move { - contents.extend( - format!("\x1b[{};{}H", row_idx + 1, idx + 1) - .as_bytes(), - ); - needs_move = false; + if skip > 0 { + contents.extend(format!("\x1b[{}C", skip).as_bytes()); + skip = 0; } let attrs = cell.attrs(); |