diff options
author | 2021-03-10 01:59:02 +0100 | |
---|---|---|
committer | 2021-03-10 01:59:02 +0100 | |
commit | 21971e0037c2ddcb96fd48ea96332445de4137bb (patch) | |
tree | 7cc1dc9147923a45c25f70d187cdecf08ab33497 /native/src/widget/text_input | |
parent | 35425001edcb54d861a42ec6d23f9e57b37745fd (diff) | |
download | iced-21971e0037c2ddcb96fd48ea96332445de4137bb.tar.gz iced-21971e0037c2ddcb96fd48ea96332445de4137bb.tar.bz2 iced-21971e0037c2ddcb96fd48ea96332445de4137bb.zip |
Make `Clipboard` argument in `Widget` trait mutable
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 { |