@@ -697,8 +697,9 @@ impl<P: Params> WindowManager<P> {
697697
698698 let window_ = window. clone ( ) ;
699699 let window_event_listeners = self . inner . window_event_listeners . clone ( ) ;
700+ let manager = self . clone ( ) ;
700701 window. on_window_event ( move |event| {
701- let _ = on_window_event ( & window_, event) ;
702+ let _ = on_window_event ( & window_, & manager , event) ;
702703 for handler in window_event_listeners. iter ( ) {
703704 handler ( GlobalWindowEvent {
704705 window : window_. clone ( ) ,
@@ -849,7 +850,11 @@ impl<P: Params> WindowManager<P> {
849850 }
850851}
851852
852- fn on_window_event < P : Params > ( window : & Window < P > , event : & WindowEvent ) -> crate :: Result < ( ) > {
853+ fn on_window_event < P : Params > (
854+ window : & Window < P > ,
855+ manager : & WindowManager < P > ,
856+ event : & WindowEvent ,
857+ ) -> crate :: Result < ( ) > {
853858 match event {
854859 WindowEvent :: Resized ( size) => window. emit (
855860 & WINDOW_RESIZED_EVENT
@@ -863,12 +868,21 @@ fn on_window_event<P: Params>(window: &Window<P>, event: &WindowEvent) -> crate:
863868 . unwrap_or_else ( |_| panic ! ( "unhandled event" ) ) ,
864869 Some ( position) ,
865870 ) ?,
866- WindowEvent :: CloseRequested => window. emit (
867- & WINDOW_CLOSE_REQUESTED_EVENT
868- . parse ( )
869- . unwrap_or_else ( |_| panic ! ( "unhandled event" ) ) ,
870- Some ( ( ) ) ,
871- ) ?,
871+ WindowEvent :: CloseRequested => {
872+ window. emit (
873+ & WINDOW_CLOSE_REQUESTED_EVENT
874+ . parse ( )
875+ . unwrap_or_else ( |_| panic ! ( "unhandled event" ) ) ,
876+ Some ( ( ) ) ,
877+ ) ?;
878+ let label = window. label ( ) ;
879+ for window in manager. inner . windows . lock ( ) . unwrap ( ) . values ( ) {
880+ window. eval ( & format ! (
881+ r#"window.__TAURI__.__windows = window.__TAURI__.__windows.filter(w => w.label !== "{}");"# ,
882+ label
883+ ) ) ?;
884+ }
885+ }
872886 WindowEvent :: Destroyed => window. emit (
873887 & WINDOW_DESTROYED_EVENT
874888 . parse ( )
0 commit comments