Skip to content

Commit ff4ea1e

Browse files
authored
fix: dispatch focus event to app.run on Windows, closes #6460 (#6504)
1 parent 57c6bf0 commit ff4ea1e

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

.changes/windows-focused-event.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'tauri': 'patch'
3+
'tauri-runtime-wry': 'patch'
4+
---
5+
6+
On Windows, Fix missing `WindowEvent::Focused` in `App::run` callback.

core/tauri-runtime-wry/src/lib.rs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2532,21 +2532,7 @@ fn handle_user_message<T: UserEvent>(
25322532
let _ = webview.print();
25332533
}
25342534
}
2535-
WebviewMessage::WebviewEvent(event) => {
2536-
let window_event_listeners = windows
2537-
.borrow()
2538-
.get(&id)
2539-
.map(|w| w.window_event_listeners.clone());
2540-
if let Some(window_event_listeners) = window_event_listeners {
2541-
if let Some(event) = WindowEventWrapper::from(&event).0 {
2542-
let listeners = window_event_listeners.lock().unwrap();
2543-
let handlers = listeners.values();
2544-
for handler in handlers {
2545-
handler(&event);
2546-
}
2547-
}
2548-
}
2549-
}
2535+
WebviewMessage::WebviewEvent(_event) => { /* already handled */ }
25502536
},
25512537
Message::CreateWebview(window_id, handler) => match handler(event_loop, web_context) {
25522538
Ok(webview) => {
@@ -2840,6 +2826,24 @@ fn handle_event_loop<T: UserEvent>(
28402826
global_listener(id.0, &event);
28412827
}
28422828
}
2829+
Event::UserEvent(Message::Webview(id, WebviewMessage::WebviewEvent(event))) => {
2830+
if let Some(event) = WindowEventWrapper::from(&event).0 {
2831+
let windows = windows.borrow();
2832+
let window = windows.get(&id);
2833+
if let Some(window) = window {
2834+
callback(RunEvent::WindowEvent {
2835+
label: window.label.clone(),
2836+
event: event.clone(),
2837+
});
2838+
2839+
let listeners = window.window_event_listeners.lock().unwrap();
2840+
let handlers = listeners.values();
2841+
for handler in handlers {
2842+
handler(&event);
2843+
}
2844+
}
2845+
}
2846+
}
28432847
Event::WindowEvent {
28442848
event, window_id, ..
28452849
} => {

0 commit comments

Comments
 (0)