Ported examples 00 and 01 to proc macro interface.

This commit is contained in:
2026-03-21 21:51:50 -04:00
parent 437b318ad9
commit c9966b79ef
8 changed files with 864 additions and 42 deletions

View File

@@ -114,7 +114,7 @@ impl PointerRouter {
match event.kind {
PointerEventKind::Move => {
if let Some(target) = hit_target.clone() {
if let Some(target) = self.pressed.clone().or(hit_target.clone()) {
routed.push(RoutedPointerEvent {
kind: RoutedPointerEventKind::Move,
target,
@@ -314,6 +314,36 @@ mod tests {
);
}
#[test]
fn router_prefers_pressed_target_on_pointer_move() {
let mut router = PointerRouter::new();
let tree = interaction_tree();
let _ = router.route(
&tree,
PointerEvent::new(
0,
Point::new(20.0, 20.0),
PointerEventKind::Down {
button: PointerButton::Primary,
},
),
);
let routed = router.route(
&tree,
PointerEvent::new(0, Point::new(160.0, 20.0), PointerEventKind::Move),
);
assert!(
routed
.iter()
.any(|event| event.kind == RoutedPointerEventKind::Move)
);
assert_eq!(
routed.last().unwrap().target.element_id,
Some(ElementId::new(1))
);
}
#[test]
fn router_routes_scroll_to_deepest_hover_target() {
let mut router = PointerRouter::new();