slint/sixtyfps_runtime/corelib/input.rs
2020-05-28 14:26:35 +02:00

33 lines
844 B
Rust

/*! Module handling mouse events
TODO: Keyboard events
*/
use crate::abi::datastructures::{ComponentRef, MouseEvent};
use crate::EvaluationContext;
use euclid::default::Vector2D;
pub fn process_mouse_event(
component: ComponentRef<'_>,
context: &EvaluationContext,
event: MouseEvent,
) {
let offset = Vector2D::new(0., 0.);
crate::abi::datastructures::visit_items(
component,
|item, offset| {
let geom = item.geometry(context);
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, &crate::EvaluationContext { component });
}
geom.origin.to_vector()
},
offset,
);
}