diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-11 13:07:08 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-11 13:07:08 -0500 |
commit | 28cb645786aa233b975975173cff5f66c9b629c8 (patch) | |
tree | dd440e8aededee708e7b323633e77253afcacb78 /src/row.rs | |
parent | 3ff771c00eee3028757f474b546e23ff2bcbc481 (diff) | |
download | vt100-rust-28cb645786aa233b975975173cff5f66c9b629c8.tar.gz vt100-rust-28cb645786aa233b975975173cff5f66c9b629c8.zip |
factor out cursor movement logic
Diffstat (limited to 'src/row.rs')
-rw-r--r-- | src/row.rs | 38 |
1 files changed, 11 insertions, 27 deletions
@@ -127,20 +127,13 @@ impl Row { }; if cell != &default_cell { if pos != prev_pos { - if pos.row == prev_pos.row + 1 { - if !wrapping - || prev_pos.col != self.cols() - || pos.col != 0 - { - crate::term::CRLF::default().write_buf(contents); - crate::term::MoveRight::new(pos.col) - .write_buf(contents); - } - } else if prev_pos.row == pos.row { - crate::term::MoveRight::new(pos.col - prev_pos.col) + if !wrapping + || prev_pos.row + 1 != pos.row + || prev_pos.col != self.cols() + || pos.col != 0 + { + crate::term::MoveFromTo::new(prev_pos, pos) .write_buf(contents); - } else { - crate::term::MoveTo::new(pos).write_buf(contents); } prev_pos = pos; } @@ -198,22 +191,13 @@ impl Row { }; if cell != prev_cell { if pos != prev_pos { - if pos.row == prev_pos.row + 1 { - if !wrapping - || prev_pos.col != self.cols() - || pos.col != 0 - { - crate::term::CRLF::default().write_buf(contents); - crate::term::MoveRight::new(pos.col) - .write_buf(contents); - } - } else if prev_pos.row == pos.row - && prev_pos.col < pos.col + if !wrapping + || prev_pos.row + 1 != pos.row + || prev_pos.col != self.cols() + || pos.col != 0 { - crate::term::MoveRight::new(pos.col - prev_pos.col) + crate::term::MoveFromTo::new(prev_pos, pos) .write_buf(contents); - } else { - crate::term::MoveTo::new(pos).write_buf(contents); } prev_pos = pos; } |