fix: dispatch focus event to app.run on Windows, closes #6460 (#6504)

This commit is contained in:
Amr Bashir
2023-03-31 15:03:25 +02:00
committed by GitHub
parent 57c6bf07bb
commit ff4ea1eabb
2 changed files with 25 additions and 15 deletions

View File

@@ -0,0 +1,6 @@
---
'tauri': 'patch'
'tauri-runtime-wry': 'patch'
---
On Windows, Fix missing `WindowEvent::Focused` in `App::run` callback.

View File

@@ -2532,21 +2532,7 @@ fn handle_user_message<T: UserEvent>(
let _ = webview.print();
}
}
WebviewMessage::WebviewEvent(event) => {
let window_event_listeners = windows
.borrow()
.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_event_listeners.lock().unwrap();
let handlers = listeners.values();
for handler in handlers {
handler(&event);
}
}
}
}
WebviewMessage::WebviewEvent(_event) => { /* already handled */ }
},
Message::CreateWebview(window_id, handler) => match handler(event_loop, web_context) {
Ok(webview) => {
@@ -2840,6 +2826,24 @@ fn handle_event_loop<T: UserEvent>(
global_listener(id.0, &event);
}
}
Event::UserEvent(Message::Webview(id, WebviewMessage::WebviewEvent(event))) => {
if let Some(event) = WindowEventWrapper::from(&event).0 {
let windows = windows.borrow();
let window = windows.get(&id);
if let Some(window) = window {
callback(RunEvent::WindowEvent {
label: window.label.clone(),
event: event.clone(),
});
let listeners = window.window_event_listeners.lock().unwrap();
let handlers = listeners.values();
for handler in handlers {
handler(&event);
}
}
}
}
Event::WindowEvent {
event, window_id, ..
} => {