From 06aa87b65f4608ded0dc312d526e83065618a1c8 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Mon, 28 Mar 2022 18:44:47 -0700 Subject: [PATCH] fix(core): `WindowEvent` type used on `Window::on_window_event` (#3796) --- .changes/fix-on-window-event-type.md | 5 +++++ core/tauri/src/manager.rs | 9 +++++---- core/tauri/src/window.rs | 9 ++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 .changes/fix-on-window-event-type.md diff --git a/.changes/fix-on-window-event-type.md b/.changes/fix-on-window-event-type.md new file mode 100644 index 000000000..e14af8990 --- /dev/null +++ b/.changes/fix-on-window-event-type.md @@ -0,0 +1,5 @@ +--- +"tauri": patch +--- + +Fixes the `WindowEvent` type used on `Window::on_window_event`. diff --git a/core/tauri/src/manager.rs b/core/tauri/src/manager.rs index 5bb0ee5e0..1a3df9cf6 100644 --- a/core/tauri/src/manager.rs +++ b/core/tauri/src/manager.rs @@ -40,7 +40,7 @@ use crate::{ ResponseBuilder as HttpResponseBuilder, }, webview::{WebviewIpcHandler, WindowBuilder}, - window::{dpi::PhysicalSize, DetachedWindow, FileDropEvent, PendingWindow, WindowEvent}, + window::{dpi::PhysicalSize, DetachedWindow, FileDropEvent, PendingWindow}, }, utils::{ assets::Assets, @@ -48,6 +48,7 @@ use crate::{ PackageInfo, }, Context, EventLoopMessage, Icon, Invoke, Manager, Pattern, Runtime, Scopes, StateManager, Window, + WindowEvent, }; #[cfg(any(target_os = "linux", target_os = "windows"))] @@ -1147,7 +1148,7 @@ impl WindowManager { for handler in window_event_listeners.iter() { handler(GlobalWindowEvent { window: window_.clone(), - event: event.clone().into(), + event: event.clone(), }); } }); @@ -1274,9 +1275,9 @@ fn on_window_event( match event { WindowEvent::Resized(size) => window.emit(WINDOW_RESIZED_EVENT, size)?, WindowEvent::Moved(position) => window.emit(WINDOW_MOVED_EVENT, position)?, - WindowEvent::CloseRequested { signal_tx } => { + WindowEvent::CloseRequested { api } => { if window.has_js_listener(Some(window.label().into()), WINDOW_CLOSE_REQUESTED_EVENT) { - signal_tx.send(true).unwrap(); + api.prevent_close(); } window.emit(WINDOW_CLOSE_REQUESTED_EVENT, ())?; } diff --git a/core/tauri/src/window.rs b/core/tauri/src/window.rs index 14234118f..bce67607b 100644 --- a/core/tauri/src/window.rs +++ b/core/tauri/src/window.rs @@ -21,7 +21,7 @@ use crate::{ webview::{WebviewAttributes, WindowBuilder as _}, window::{ dpi::{PhysicalPosition, PhysicalSize, Position, Size}, - DetachedWindow, JsEventListenerKey, PendingWindow, WindowEvent, + DetachedWindow, JsEventListenerKey, PendingWindow, }, Dispatch, RuntimeHandle, UserAttentionType, }, @@ -29,7 +29,7 @@ use crate::{ sealed::RuntimeOrDispatch, utils::config::WindowUrl, EventLoopMessage, Icon, Invoke, InvokeError, InvokeMessage, InvokeResolver, Manager, - PageLoadPayload, Runtime, + PageLoadPayload, Runtime, WindowEvent, }; use serde::Serialize; @@ -724,7 +724,10 @@ impl Window { /// Registers a window event listener. pub fn on_window_event(&self, f: F) { - self.window.dispatcher.on_window_event(f); + self + .window + .dispatcher + .on_window_event(move |event| f(&event.clone().into())); } /// Registers a menu event listener.