Merge pull request #162 from hecrj/feature/window-file-events

Window file events
This commit is contained in:
Héctor Ramón 2020-01-16 18:34:29 +01:00 committed by GitHub
commit 6ca5e6184f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 50 additions and 18 deletions

View file

@ -209,9 +209,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,
@ -330,6 +331,18 @@ pub trait Application: Sized {
event: window_event,
..
} => match window_event {
WindowEvent::Resized(new_size) => {
events.push(Event::Window(window::Event::Resized {
width: new_size.width.round() as u32,
height: new_size.height.round() as u32,
}));
size = new_size;
resized = true;
}
WindowEvent::CloseRequested => {
*control_flow = ControlFlow::Exit;
}
WindowEvent::CursorMoved { position, .. } => {
events.push(Event::Mouse(mouse::Event::CursorMoved {
x: position.x as f32,
@ -398,17 +411,16 @@ pub trait Application: Sized {
modifiers: conversion::modifiers_state(modifiers),
}));
}
WindowEvent::CloseRequested => {
*control_flow = ControlFlow::Exit;
WindowEvent::HoveredFile(path) => {
events
.push(Event::Window(window::Event::FileHovered(path)));
}
WindowEvent::Resized(new_size) => {
events.push(Event::Window(window::Event::Resized {
width: new_size.width.round() as u32,
height: new_size.height.round() as u32,
}));
size = new_size;
resized = true;
WindowEvent::DroppedFile(path) => {
events
.push(Event::Window(window::Event::FileDropped(path)));
}
WindowEvent::HoveredFileCancelled => {
events.push(Event::Window(window::Event::FilesHoveredLeft));
}
_ => {}
},

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