Make Clipboard argument in Widget trait mutable
This commit is contained in:
parent
35425001ed
commit
21971e0037
31 changed files with 173 additions and 127 deletions
|
|
@ -243,9 +243,9 @@ where
|
|||
event: Event,
|
||||
layout: Layout<'_>,
|
||||
cursor_position: Point,
|
||||
messages: &mut Vec<Message>,
|
||||
renderer: &Renderer,
|
||||
clipboard: Option<&dyn Clipboard>,
|
||||
clipboard: &mut dyn Clipboard,
|
||||
messages: &mut Vec<Message>,
|
||||
) -> event::Status {
|
||||
match event {
|
||||
Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left))
|
||||
|
|
@ -503,43 +503,42 @@ where
|
|||
}
|
||||
keyboard::KeyCode::V => {
|
||||
if self.state.keyboard_modifiers.is_command_pressed() {
|
||||
if let Some(clipboard) = clipboard {
|
||||
let content = match self.state.is_pasting.take()
|
||||
{
|
||||
Some(content) => content,
|
||||
None => {
|
||||
let content: String = clipboard
|
||||
.read()
|
||||
.unwrap_or(String::new())
|
||||
.chars()
|
||||
.filter(|c| !c.is_control())
|
||||
.collect();
|
||||
let content = match self.state.is_pasting.take() {
|
||||
Some(content) => content,
|
||||
None => {
|
||||
let content: String = clipboard
|
||||
.read()
|
||||
.unwrap_or(String::new())
|
||||
.chars()
|
||||
.filter(|c| !c.is_control())
|
||||
.collect();
|
||||
|
||||
Value::new(&content)
|
||||
}
|
||||
};
|
||||
Value::new(&content)
|
||||
}
|
||||
};
|
||||
|
||||
let mut editor = Editor::new(
|
||||
&mut self.value,
|
||||
&mut self.state.cursor,
|
||||
);
|
||||
let mut editor = Editor::new(
|
||||
&mut self.value,
|
||||
&mut self.state.cursor,
|
||||
);
|
||||
|
||||
editor.paste(content.clone());
|
||||
editor.paste(content.clone());
|
||||
|
||||
let message =
|
||||
(self.on_change)(editor.contents());
|
||||
messages.push(message);
|
||||
let message = (self.on_change)(editor.contents());
|
||||
messages.push(message);
|
||||
|
||||
self.state.is_pasting = Some(content);
|
||||
}
|
||||
self.state.is_pasting = Some(content);
|
||||
} else {
|
||||
self.state.is_pasting = None;
|
||||
}
|
||||
}
|
||||
keyboard::KeyCode::A => {
|
||||
if self.state.keyboard_modifiers.is_command_pressed() {
|
||||
self.state.cursor.select_all(&self.value);
|
||||
}
|
||||
keyboard::KeyCode::A
|
||||
if self
|
||||
.state
|
||||
.keyboard_modifiers
|
||||
.is_command_pressed() =>
|
||||
{
|
||||
self.state.cursor.select_all(&self.value);
|
||||
}
|
||||
keyboard::KeyCode::Escape => {
|
||||
self.state.is_focused = false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue