slint/sixtyfps_runtime/corelib/input.rs
2020-05-20 12:03:36 +02:00

28 lines
722 B
Rust

/*! Module handling mouse events
TODO: Keyboard events
*/
use crate::abi::datastructures::{ComponentRef, MouseEvent};
use euclid::default::Vector2D;
pub fn process_mouse_event(component: ComponentRef<'_>, event: MouseEvent) {
let offset = Vector2D::new(0., 0.);
crate::abi::datastructures::visit_items(
component,
|item, offset| {
let geom = item.geometry();
let geom = geom.translate(*offset);
if geom.contains(event.pos) {
let mut event2 = event.clone();
event2.pos -= geom.origin.to_vector();
item.input_event(event2);
}
geom.origin.to_vector()
},
offset,
);
}