///|
fn ElementNode::dispatch_web_view_event(
self : ElementNode,
id : String,
event : @core.PlatformViewEvent,
environment? : @core.Environment = @core.Environment::neutral(),
style? : @core.ViewStyle = @core.ViewStyle::empty(),
text_system? : @core.TextSystem = @core.TextSystem::fallback(),
) -> ElementEventResult {
let result = self.dispatch_view_event(
self.view_node,
PlatformView(id, event),
RenderNode::empty(),
text_system,
environment~,
style~,
)
if result.activated || result.changed || result.captured {
result
} else {
let child_environment = self.view_node.child_environment(environment)
let child_style = self.view_node.child_style(style)
for child in self.children {
let child_result = child.dispatch_web_view_event(
id,
event,
environment=child_environment,
style=child_style,
text_system~,
)
if child_result.activated || child_result.changed || child_result.captured {
return child_result
}
}
{
changed: false,
activated: false,
captured: false,
capture_target: None,
focused: None,
deliveries: [],
}
}
}