diff options
author | 2021-03-10 21:13:07 +0100 | |
---|---|---|
committer | 2021-03-10 21:13:07 +0100 | |
commit | 7eb512774862d44772c43f9843f586bfcfa2aa89 (patch) | |
tree | 34d64096302f59f8cb6daf35a131d8ba42f46905 /native/src/widget/text_input | |
parent | 939fcfe9dbe8c08a286c6328da6053b5fd577adf (diff) | |
parent | 17dcfa8faf68afe3cbad1151f41eb35230ef83e1 (diff) | |
download | iced-7eb512774862d44772c43f9843f586bfcfa2aa89.tar.gz iced-7eb512774862d44772c43f9843f586bfcfa2aa89.tar.bz2 iced-7eb512774862d44772c43f9843f586bfcfa2aa89.zip |
Merge pull request #770 from hecrj/feature/clipboard-write
Write clipboard support and `TextInput` copy and cut behavior
Diffstat (limited to 'native/src/widget/text_input')
-rw-r--r-- | native/src/widget/text_input/cursor.rs | 21 | ||||
-rw-r--r-- | native/src/widget/text_input/value.rs | 9 |
2 files changed, 21 insertions, 9 deletions
diff --git a/native/src/widget/text_input/cursor.rs b/native/src/widget/text_input/cursor.rs index e630e293..1e7aee83 100644 --- a/native/src/widget/text_input/cursor.rs +++ b/native/src/widget/text_input/cursor.rs @@ -48,6 +48,18 @@ impl Cursor { } } + /// Returns the current selection of the [`Cursor`] for the given [`Value`]. + /// + /// `start` is guaranteed to be <= than `end`. + pub fn selection(&self, value: &Value) -> Option<(usize, usize)> { + match self.state(value) { + State::Selection { start, end } => { + Some((start.min(end), start.max(end))) + } + _ => None, + } + } + pub(crate) fn move_to(&mut self, position: usize) { self.state = State::Index(position); } @@ -161,15 +173,6 @@ impl Cursor { end.min(value.len()) } - pub(crate) fn selection(&self, value: &Value) -> Option<(usize, usize)> { - match self.state(value) { - State::Selection { start, end } => { - Some((start.min(end), start.max(end))) - } - _ => None, - } - } - fn left(&self, value: &Value) -> usize { match self.state(value) { State::Index(index) => index, diff --git a/native/src/widget/text_input/value.rs b/native/src/widget/text_input/value.rs index 86be2790..2034cca4 100644 --- a/native/src/widget/text_input/value.rs +++ b/native/src/widget/text_input/value.rs @@ -73,6 +73,15 @@ impl Value { .unwrap_or(self.len()) } + /// Returns a new [`Value`] containing the graphemes from `start` until the + /// given `end`. + pub fn select(&self, start: usize, end: usize) -> Self { + let graphemes = + self.graphemes[start.min(self.len())..end.min(self.len())].to_vec(); + + Self { graphemes } + } + /// Returns a new [`Value`] containing the graphemes until the given /// `index`. pub fn until(&self, index: usize) -> Self { |