From b22b0dd7ff56d433c459e0d14e14eb5472a6224d Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 10 Mar 2021 01:16:26 +0100 Subject: Update `window_clipboard` to `0.2` --- winit/src/clipboard.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'winit/src/clipboard.rs') diff --git a/winit/src/clipboard.rs b/winit/src/clipboard.rs index 93d53b11..cce2b371 100644 --- a/winit/src/clipboard.rs +++ b/winit/src/clipboard.rs @@ -5,13 +5,15 @@ pub struct Clipboard(window_clipboard::Clipboard); impl Clipboard { /// Creates a new [`Clipboard`] for the given window. - pub fn new(window: &winit::window::Window) -> Option { - window_clipboard::Clipboard::new(window).map(Clipboard).ok() + pub fn connect(window: &winit::window::Window) -> Option { + window_clipboard::Clipboard::connect(window) + .map(Clipboard) + .ok() } } impl iced_native::Clipboard for Clipboard { - fn content(&self) -> Option { + fn read(&self) -> Option { self.0.read().ok() } } -- cgit From 35425001edcb54d861a42ec6d23f9e57b37745fd Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 10 Mar 2021 01:18:22 +0100 Subject: Introduce `write` method to `Clipboard` trait --- winit/src/clipboard.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'winit/src/clipboard.rs') diff --git a/winit/src/clipboard.rs b/winit/src/clipboard.rs index cce2b371..06e7c1a8 100644 --- a/winit/src/clipboard.rs +++ b/winit/src/clipboard.rs @@ -16,4 +16,11 @@ impl iced_native::Clipboard for Clipboard { fn read(&self) -> Option { self.0.read().ok() } + + fn write(&mut self, contents: String) { + match self.0.write(contents) { + Ok(()) => {} + Err(error) => log::warn!("error writing to clipboard: {}", error), + } + } } -- cgit From 21971e0037c2ddcb96fd48ea96332445de4137bb Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 10 Mar 2021 01:59:02 +0100 Subject: Make `Clipboard` argument in `Widget` trait mutable --- winit/src/clipboard.rs | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'winit/src/clipboard.rs') diff --git a/winit/src/clipboard.rs b/winit/src/clipboard.rs index 06e7c1a8..15dc989f 100644 --- a/winit/src/clipboard.rs +++ b/winit/src/clipboard.rs @@ -1,26 +1,44 @@ /// A buffer for short-term storage and transfer within and between /// applications. #[allow(missing_debug_implementations)] -pub struct Clipboard(window_clipboard::Clipboard); +pub struct Clipboard { + state: State, +} + +enum State { + Connected(window_clipboard::Clipboard), + Unavailable, +} impl Clipboard { /// Creates a new [`Clipboard`] for the given window. - pub fn connect(window: &winit::window::Window) -> Option { - window_clipboard::Clipboard::connect(window) - .map(Clipboard) + pub fn connect(window: &winit::window::Window) -> Clipboard { + let state = window_clipboard::Clipboard::connect(window) .ok() + .map(State::Connected) + .unwrap_or(State::Unavailable); + + Clipboard { state } } } impl iced_native::Clipboard for Clipboard { fn read(&self) -> Option { - self.0.read().ok() + match &self.state { + State::Connected(clipboard) => clipboard.read().ok(), + State::Unavailable => None, + } } fn write(&mut self, contents: String) { - match self.0.write(contents) { - Ok(()) => {} - Err(error) => log::warn!("error writing to clipboard: {}", error), + match &mut self.state { + State::Connected(clipboard) => match clipboard.write(contents) { + Ok(()) => {} + Err(error) => { + log::warn!("error writing to clipboard: {}", error) + } + }, + State::Unavailable => {} } } } -- cgit