diff options
author | 2020-01-16 07:12:59 +0100 | |
---|---|---|
committer | 2020-01-16 07:12:59 +0100 | |
commit | f73bacb454615566abdbf45065e3fd11a3276d93 (patch) | |
tree | c668f0a580e74cb0c4ee1a5977b7590fb5028402 | |
parent | 5de404ddd9484c6e1113697d749524ac79d8c763 (diff) | |
download | iced-f73bacb454615566abdbf45065e3fd11a3276d93.tar.gz iced-f73bacb454615566abdbf45065e3fd11a3276d93.tar.bz2 iced-f73bacb454615566abdbf45065e3fd11a3276d93.zip |
Add file events to `iced_native::window::Event`
-rw-r--r-- | native/src/event.rs | 2 | ||||
-rw-r--r-- | native/src/widget/column.rs | 2 | ||||
-rw-r--r-- | native/src/widget/row.rs | 2 | ||||
-rw-r--r-- | native/src/window/event.rs | 22 | ||||
-rw-r--r-- | winit/src/application.rs | 7 | ||||
-rw-r--r-- | winit/src/subscription.rs | 2 |
6 files changed, 29 insertions, 8 deletions
diff --git a/native/src/event.rs b/native/src/event.rs index 1d28aa7b..b2550ead 100644 --- a/native/src/event.rs +++ b/native/src/event.rs @@ -9,7 +9,7 @@ use crate::{ /// additional events, feel free to [open an issue] and share your use case!_ /// /// [open an issue]: https://github.com/hecrj/iced/issues -#[derive(PartialEq, Clone, Copy, Debug)] +#[derive(PartialEq, Clone, Debug)] pub enum Event { /// A keyboard event Keyboard(keyboard::Event), diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 79ec5ab4..104790d4 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -159,7 +159,7 @@ where self.children.iter_mut().zip(layout.children()).for_each( |(child, layout)| { child.widget.on_event( - event, + event.clone(), layout, cursor_position, messages, diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index b3dc90ba..775b953e 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -160,7 +160,7 @@ where self.children.iter_mut().zip(layout.children()).for_each( |(child, layout)| { child.widget.on_event( - event, + event.clone(), layout, cursor_position, messages, diff --git a/native/src/window/event.rs b/native/src/window/event.rs index 89ec0a0c..c913385b 100644 --- a/native/src/window/event.rs +++ b/native/src/window/event.rs @@ -1,5 +1,7 @@ +use std::path::PathBuf; + /// A window-related event. -#[derive(PartialEq, Clone, Copy, Debug)] +#[derive(PartialEq, Clone, Debug)] pub enum Event { /// A window was resized Resized { @@ -9,4 +11,22 @@ pub enum Event { /// The new height of the window (in units) height: u32, }, + + /// A file is being hovered over the window. + /// + /// When the user hovers multiple files at once, this event will be emitted + /// for each file separately. + FileHovered(PathBuf), + + /// A file has beend dropped into the window. + /// + /// When the user drops multiple files at once, this event will be emitted + /// for each file separately. + FileDropped(PathBuf), + + /// A file was hovered, but has exited the window. + /// + /// There will be a single `FilesLeft` event triggered even if multiple + /// files were hovered. + FilesLeft, } diff --git a/winit/src/application.rs b/winit/src/application.rs index a712632e..406443d3 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -192,9 +192,10 @@ pub trait Application: Sized { ); debug.event_processing_started(); - events.iter().for_each(|event| { - subscription_pool.broadcast_event(*event) - }); + events + .iter() + .cloned() + .for_each(|event| subscription_pool.broadcast_event(event)); let mut messages = user_interface.update( &renderer, diff --git a/winit/src/subscription.rs b/winit/src/subscription.rs index f55507af..bad68d55 100644 --- a/winit/src/subscription.rs +++ b/winit/src/subscription.rs @@ -86,7 +86,7 @@ impl Pool { .values_mut() .filter_map(|connection| connection.listener.as_mut()) .for_each(|listener| { - if let Err(error) = listener.try_send(event) { + if let Err(error) = listener.try_send(event.clone()) { log::error!( "Error sending event to subscription: {:?}", error |