Merge pull request #2284 from jquesada2016/mouse_passthrough
Add command for setting mouse passthrough
This commit is contained in:
commit
b5cbb4a4e4
2 changed files with 38 additions and 0 deletions
|
|
@ -147,6 +147,18 @@ pub enum Action {
|
||||||
|
|
||||||
/// Screenshot the viewport of the window.
|
/// Screenshot the viewport of the window.
|
||||||
Screenshot(Id, oneshot::Sender<Screenshot>),
|
Screenshot(Id, oneshot::Sender<Screenshot>),
|
||||||
|
|
||||||
|
/// Enables mouse passthrough for the given window.
|
||||||
|
///
|
||||||
|
/// This disables mouse events for the window and passes mouse events
|
||||||
|
/// through to whatever window is underneath.
|
||||||
|
EnableMousePassthrough(Id),
|
||||||
|
|
||||||
|
/// Disable mouse passthrough for the given window.
|
||||||
|
///
|
||||||
|
/// This enables mouse events for the window and stops mouse events
|
||||||
|
/// from being passed to whatever is underneath.
|
||||||
|
DisableMousePassthrough(Id),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Subscribes to the frames of the window of the running application.
|
/// Subscribes to the frames of the window of the running application.
|
||||||
|
|
@ -406,3 +418,19 @@ pub fn screenshot(id: Id) -> Task<Screenshot> {
|
||||||
crate::Action::Window(Action::Screenshot(id, channel))
|
crate::Action::Window(Action::Screenshot(id, channel))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Enables mouse passthrough for the given window.
|
||||||
|
///
|
||||||
|
/// This disables mouse events for the window and passes mouse events
|
||||||
|
/// through to whatever window is underneath.
|
||||||
|
pub fn enable_mouse_passthrough<Message>(id: Id) -> Task<Message> {
|
||||||
|
task::effect(crate::Action::Window(Action::EnableMousePassthrough(id)))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Disable mouse passthrough for the given window.
|
||||||
|
///
|
||||||
|
/// This enables mouse events for the window and stops mouse events
|
||||||
|
/// from being passed to whatever is underneath.
|
||||||
|
pub fn disable_mouse_passthrough<Message>(id: Id) -> Task<Message> {
|
||||||
|
task::effect(crate::Action::Window(Action::DisableMousePassthrough(id)))
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1435,6 +1435,16 @@ fn run_action<P, C>(
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
window::Action::EnableMousePassthrough(id) => {
|
||||||
|
if let Some(window) = window_manager.get_mut(id) {
|
||||||
|
let _ = window.raw.set_cursor_hittest(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
window::Action::DisableMousePassthrough(id) => {
|
||||||
|
if let Some(window) = window_manager.get_mut(id) {
|
||||||
|
let _ = window.raw.set_cursor_hittest(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
Action::System(action) => match action {
|
Action::System(action) => match action {
|
||||||
system::Action::QueryInformation(_channel) => {
|
system::Action::QueryInformation(_channel) => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue