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);