summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 2f93a2e..b94b274 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -161,7 +161,8 @@ impl Ivy {
       terminal.stdout.write_all("\n~".as_bytes()).await?;
     }
 
-    terminal.stdout.write_all("\n        status goes here".as_bytes()).await?;
+    terminal.do_cursor_position(0, height).await?;
+    terminal.stdout.write_all("        status goes here".as_bytes()).await?;
 
     let window = self.window.read().await;
     terminal.do_cursor_position(*window.cursor_column.read().await,
@@ -385,9 +386,15 @@ impl Ivy {
     }
 
     let new_scroll_top = *self.window.read().await.scroll_top.read().await;
-    if old_scroll_top != new_scroll_top {
-      self.terminal.write().await.clear().await?;
-      self.draw().await?;
+    let height = *self.terminal.read().await.height.read().await - 1;
+    if new_scroll_top != old_scroll_top {
+      let difference = new_scroll_top as isize - old_scroll_top as isize;
+      if (difference.abs() as usize) < height {
+        self.terminal.write().await.scroll(difference).await?;
+      } else {
+        self.terminal.write().await.clear().await?;
+        self.draw().await?;
+      }
     }
 
     Ok(())