diff --git a/.changes/fix-webview-event-handler.md b/.changes/fix-webview-event-handler.md new file mode 100644 index 000000000..64131aa47 --- /dev/null +++ b/.changes/fix-webview-event-handler.md @@ -0,0 +1,5 @@ +--- +"tauri-runtime-wry": patch +--- + +Fixes a deadlock when the window focus change on Windows. diff --git a/core/tauri-runtime-wry/src/lib.rs b/core/tauri-runtime-wry/src/lib.rs index f64120b1b..8932d66e3 100644 --- a/core/tauri-runtime-wry/src/lib.rs +++ b/core/tauri-runtime-wry/src/lib.rs @@ -2403,13 +2403,14 @@ fn handle_user_message( } } WebviewMessage::WebviewEvent(event) => { - if let Some(window) = windows + let window_event_listeners = windows .lock() .expect("poisoned webview collection") .get(&id) - { + .map(|w| w.window_event_listeners.clone()); + if let Some(window_event_listeners) = window_event_listeners { if let Some(event) = WindowEventWrapper::from(&event).0 { - let listeners = window.window_event_listeners.lock().unwrap(); + let listeners = window_event_listeners.lock().unwrap(); let handlers = listeners.values(); for handler in handlers { handler(&event);