From 4762fba214c38d4b585654bed78c1f469094dd91 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 19 Dec 2024 09:25:41 -0600 Subject: [PATCH] Fix event closure invoked recursively --- packages/web/src/dom.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index b46770844c..bc9b91788e 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -80,7 +80,10 @@ impl WebsysDom { let interpreter = Interpreter::default(); - let handler: Closure = Closure::wrap(Box::new({ + // The closure type we pass to the dom may be invoked recursively if one event triggers another. For example, + // one event could focus another element which triggers the focus event of the new element like inhttps://github.com/DioxusLabs/dioxus/issues/2882. + // The Closure type can invoked recursively, but Closure cannot + let handler: Closure = Closure::wrap(Box::new({ let runtime = runtime.clone(); move |web_sys_event: &web_sys::Event| { let name = web_sys_event.type_();