diff --git a/src/history.rs b/src/history.rs index b0a0587..9c89a16 100644 --- a/src/history.rs +++ b/src/history.rs @@ -54,6 +54,7 @@ impl EditKind { } } +#[derive(Clone)] pub struct Edit { kind: EditKind, cursor_before: (usize, usize), @@ -92,6 +93,7 @@ impl Edit { } } +#[derive(Clone)] pub struct History { index: usize, max_items: usize, diff --git a/src/search.rs b/src/search.rs index 3f17bf3..b6aa53f 100644 --- a/src/search.rs +++ b/src/search.rs @@ -1,6 +1,7 @@ use regex::Regex; use tui::style::{Color, Style}; +#[derive(Clone)] pub struct Search { pub pat: Option, pub style: Style, diff --git a/src/textarea.rs b/src/textarea.rs index 8f541bd..91a3801 100644 --- a/src/textarea.rs +++ b/src/textarea.rs @@ -31,6 +31,7 @@ use tui::widgets::{Block, Widget}; /// // Get lines as String. /// println!("Lines: {:?}", textarea.lines()); /// ``` +#[derive(Clone)] pub struct TextArea<'a> { lines: Vec, block: Option>, diff --git a/src/widget.rs b/src/widget.rs index b9cd6ec..89cf1e6 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -17,6 +17,13 @@ use tui::widgets::{Block, Paragraph, Widget}; #[derive(Default)] pub struct ScrollTop(AtomicU32); +impl Clone for ScrollTop { + fn clone(&self) -> Self { + let u = self.0.load(Ordering::Relaxed); + ScrollTop(AtomicU32::new(u)) + } +} + impl ScrollTop { fn load(&self) -> (u16, u16) { let u = self.0.load(Ordering::Relaxed);