summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-16 07:12:59 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-16 07:12:59 +0100
commitf73bacb454615566abdbf45065e3fd11a3276d93 (patch)
treec668f0a580e74cb0c4ee1a5977b7590fb5028402
parent5de404ddd9484c6e1113697d749524ac79d8c763 (diff)
downloadiced-f73bacb454615566abdbf45065e3fd11a3276d93.tar.gz
iced-f73bacb454615566abdbf45065e3fd11a3276d93.tar.bz2
iced-f73bacb454615566abdbf45065e3fd11a3276d93.zip
Add file events to `iced_native::window::Event`
-rw-r--r--native/src/event.rs2
-rw-r--r--native/src/widget/column.rs2
-rw-r--r--native/src/widget/row.rs2
-rw-r--r--native/src/window/event.rs22
-rw-r--r--winit/src/application.rs7
-rw-r--r--winit/src/subscription.rs2
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