Add file events to iced_native:🪟:Event

This commit is contained in:
Héctor Ramón Jiménez 2020-01-16 07:12:59 +01:00
parent 5de404ddd9
commit f73bacb454
6 changed files with 29 additions and 8 deletions

View File

@ -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),

View File

@ -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,

View File

@ -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,

View File

@ -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,
}

View File

@ -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,

View File

@ -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