summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2021-03-12 02:54:13 +0100
committerLibravatar GitHub <noreply@github.com>2021-03-12 02:54:13 +0100
commitc1f70f1e9252b1971c17cd385273460c669fac26 (patch)
tree602a967f936bc9887f281143c63ec3d49b35fcc1 /winit
parent7eb512774862d44772c43f9843f586bfcfa2aa89 (diff)
parent7da3fb1b2225732c87aebb13a067fbdb30b0cf2d (diff)
downloadiced-c1f70f1e9252b1971c17cd385273460c669fac26.tar.gz
iced-c1f70f1e9252b1971c17cd385273460c669fac26.tar.bz2
iced-c1f70f1e9252b1971c17cd385273460c669fac26.zip
Merge pull request #773 from hecrj/feature/clipboard-access-in-update
Clipboard access in `Application::update`
Diffstat (limited to '')
-rw-r--r--winit/src/application.rs6
-rw-r--r--winit/src/clipboard.rs18
2 files changed, 18 insertions, 6 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs
index 2cb2c016..d7d7660e 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -29,7 +29,7 @@ use std::mem::ManuallyDrop;
///
/// When using an [`Application`] with the `debug` feature enabled, a debug view
/// can be toggled by pressing `F12`.
-pub trait Application: Program {
+pub trait Application: Program<Clipboard = Clipboard> {
/// The data needed to initialize your [`Application`].
type Flags;
@@ -257,6 +257,7 @@ async fn run_instance<A, E, C>(
&mut application,
&mut runtime,
&mut debug,
+ &mut clipboard,
&mut messages,
);
@@ -409,13 +410,14 @@ pub fn update<A: Application, E: Executor>(
application: &mut A,
runtime: &mut Runtime<E, Proxy<A::Message>, A::Message>,
debug: &mut Debug,
+ clipboard: &mut A::Clipboard,
messages: &mut Vec<A::Message>,
) {
for message in messages.drain(..) {
debug.log_message(&message);
debug.update_started();
- let command = runtime.enter(|| application.update(message));
+ let command = runtime.enter(|| application.update(message, clipboard));
debug.update_finished();
runtime.spawn(command);
diff --git a/winit/src/clipboard.rs b/winit/src/clipboard.rs
index 15dc989f..ca25c065 100644
--- a/winit/src/clipboard.rs
+++ b/winit/src/clipboard.rs
@@ -20,17 +20,17 @@ impl Clipboard {
Clipboard { state }
}
-}
-impl iced_native::Clipboard for Clipboard {
- fn read(&self) -> Option<String> {
+ /// Reads the current content of the [`Clipboard`] as text.
+ pub fn read(&self) -> Option<String> {
match &self.state {
State::Connected(clipboard) => clipboard.read().ok(),
State::Unavailable => None,
}
}
- fn write(&mut self, contents: String) {
+ /// Writes the given text contents to the [`Clipboard`].
+ pub fn write(&mut self, contents: String) {
match &mut self.state {
State::Connected(clipboard) => match clipboard.write(contents) {
Ok(()) => {}
@@ -42,3 +42,13 @@ impl iced_native::Clipboard for Clipboard {
}
}
}
+
+impl iced_native::Clipboard for Clipboard {
+ fn read(&self) -> Option<String> {
+ self.read()
+ }
+
+ fn write(&mut self, contents: String) {
+ self.write(contents)
+ }
+}