Fix sneaky overflow in TextInput
when pasting
This commit is contained in:
parent
938177e225
commit
c04dff99da
@ -310,7 +310,10 @@ where
|
|||||||
self.value
|
self.value
|
||||||
.insert_many(cursor_position, content.clone());
|
.insert_many(cursor_position, content.clone());
|
||||||
|
|
||||||
self.state.cursor_position += content.len();
|
self.state.move_cursor_right_by_amount(
|
||||||
|
&self.value,
|
||||||
|
content.len(),
|
||||||
|
);
|
||||||
self.state.is_pasting = Some(content);
|
self.state.is_pasting = Some(content);
|
||||||
|
|
||||||
let message =
|
let message =
|
||||||
@ -461,6 +464,7 @@ pub struct State {
|
|||||||
is_focused: bool,
|
is_focused: bool,
|
||||||
is_pasting: Option<Value>,
|
is_pasting: Option<Value>,
|
||||||
cursor_position: usize,
|
cursor_position: usize,
|
||||||
|
// TODO: Add stateful horizontal scrolling offset
|
||||||
}
|
}
|
||||||
|
|
||||||
impl State {
|
impl State {
|
||||||
@ -513,10 +517,19 @@ impl State {
|
|||||||
///
|
///
|
||||||
/// [`TextInput`]: struct.TextInput.html
|
/// [`TextInput`]: struct.TextInput.html
|
||||||
pub(crate) fn move_cursor_right(&mut self, value: &Value) {
|
pub(crate) fn move_cursor_right(&mut self, value: &Value) {
|
||||||
let current = self.cursor_position(value);
|
self.move_cursor_right_by_amount(value, 1)
|
||||||
|
}
|
||||||
|
|
||||||
if current < value.len() {
|
pub(crate) fn move_cursor_right_by_amount(
|
||||||
self.cursor_position = current + 1;
|
&mut self,
|
||||||
|
value: &Value,
|
||||||
|
amount: usize,
|
||||||
|
) {
|
||||||
|
let current = self.cursor_position(value);
|
||||||
|
let new_position = current.saturating_add(amount);
|
||||||
|
|
||||||
|
if new_position < value.len() + 1 {
|
||||||
|
self.cursor_position = new_position;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user