aboutsummaryrefslogtreecommitdiffstats
path: root/src/row.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-11 13:07:08 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-11 13:07:08 -0500
commit28cb645786aa233b975975173cff5f66c9b629c8 (patch)
treedd440e8aededee708e7b323633e77253afcacb78 /src/row.rs
parent3ff771c00eee3028757f474b546e23ff2bcbc481 (diff)
downloadvt100-rust-28cb645786aa233b975975173cff5f66c9b629c8.tar.gz
vt100-rust-28cb645786aa233b975975173cff5f66c9b629c8.zip
factor out cursor movement logic
Diffstat (limited to 'src/row.rs')
-rw-r--r--src/row.rs38
1 files changed, 11 insertions, 27 deletions
diff --git a/src/row.rs b/src/row.rs
index 640f4ec..51fab96 100644
--- a/src/row.rs
+++ b/src/row.rs
@@ -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;
}