diff --git a/.changes/fix-webview-close.md b/.changes/fix-webview-close.md new file mode 100644 index 000000000..9d7a62078 --- /dev/null +++ b/.changes/fix-webview-close.md @@ -0,0 +1,5 @@ +--- +"tauri": patch:bug +--- + +When using the multiwebview mode, properly remove the webview from memory on `Webview::close`. diff --git a/core/tauri/src/manager/mod.rs b/core/tauri/src/manager/mod.rs index 4f6b15d60..b2da64f96 100644 --- a/core/tauri/src/manager/mod.rs +++ b/core/tauri/src/manager/mod.rs @@ -543,6 +543,10 @@ impl AppManager { } } + pub(crate) fn on_webview_close(&self, label: &str) { + self.webview.webviews_lock().remove(label); + } + pub fn windows(&self) -> HashMap> { self.window.windows_lock().clone() } diff --git a/core/tauri/src/webview/mod.rs b/core/tauri/src/webview/mod.rs index 025ad6d4e..a62546ffd 100644 --- a/core/tauri/src/webview/mod.rs +++ b/core/tauri/src/webview/mod.rs @@ -878,7 +878,9 @@ impl Webview { if self.window.webview_window { self.window.close() } else { - self.webview.dispatcher.close().map_err(Into::into) + self.webview.dispatcher.close()?; + self.manager().on_webview_close(self.label()); + Ok(()) } }