diff --git a/ElectronNET.API/WindowManager.cs b/ElectronNET.API/WindowManager.cs
index 6be6071..dbb0da2 100644
--- a/ElectronNET.API/WindowManager.cs
+++ b/ElectronNET.API/WindowManager.cs
@@ -218,6 +218,19 @@ namespace ElectronNET.API
return await taskCompletionSource.Task;
}
+
+ ///
+ /// Destroy all windows.
+ ///
+ /// Number of windows destroyed
+ public async Task DestroyAllWindows()
+ {
+ var destroyed = await BridgeConnector.OnResult("browserWindowDestroyAll", "browserWindowDestroyAll-completed");
+ _browserViews.Clear();
+ _browserWindows.Clear();
+ return destroyed;
+ }
+
private static JsonSerializer _jsonSerializer = new JsonSerializer()
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
diff --git a/ElectronNET.Host/api/browserWindows.js b/ElectronNET.Host/api/browserWindows.js
index ecf3209..4703f16 100644
--- a/ElectronNET.Host/api/browserWindows.js
+++ b/ElectronNET.Host/api/browserWindows.js
@@ -262,6 +262,25 @@ module.exports = (socket, app) => {
socket.on('browserWindowDestroy', (id) => {
getWindowById(id)?.destroy();
});
+
+ socket.on('browserWindowDestroyAll', () => {
+ const windows = electron_1.BrowserWindow.getAllWindows();
+ let count = 0;
+ if (windows.length) {
+ windows.forEach(w => {
+ try {
+ w.hide();
+ w.destroy();
+ count++;
+ }
+ catch {
+ //ignore, probably already destroyed
+ }
+ });
+ }
+ electronSocket.emit('browserWindowDestroyAll-completed', count);
+ });
+
socket.on('browserWindowClose', (id) => {
getWindowById(id)?.close();
});
diff --git a/ElectronNET.Host/api/browserWindows.ts b/ElectronNET.Host/api/browserWindows.ts
index c1923a1..82d9765 100644
--- a/ElectronNET.Host/api/browserWindows.ts
+++ b/ElectronNET.Host/api/browserWindows.ts
@@ -288,6 +288,24 @@ export = (socket: Socket, app: Electron.App) => {
getWindowById(id)?.destroy();
});
+ socket.on('browserWindowDestroyAll', () => {
+ const windows = BrowserWindow.getAllWindows();
+ let count = 0;
+ if (windows.length) {
+ windows.forEach(w => {
+ try {
+ w.hide();
+ w.destroy();
+ count++;
+ }
+ catch {
+ //ignore, probably already destroyed
+ }
+ });
+ }
+ electronSocket.emit('browserWindowDestroyAll-completed', count);
+ });
+
socket.on('browserWindowClose', (id) => {
getWindowById(id)?.close();
});
diff --git a/ElectronNET.Host/main.js b/ElectronNET.Host/main.js
index e3b9741..3b4c6dc 100644
--- a/ElectronNET.Host/main.js
+++ b/ElectronNET.Host/main.js
@@ -64,7 +64,6 @@ app.on('before-quit-for-update', () => {
}
});
}
-
});
const manifestJsonFile = require(manifestJsonFilePath);