Standard
Standard

Reputation: 1512

Only hide the window when closing it [Electron]

I try to hide my main window so that I hasn't to load again later. I got the following code:

function createWindow () {
  // Create the browser window.
  win = new BrowserWindow({width: 800, height: 600})


  // Emitted when the window is closed.
  win.on('closed', (event) => {
    //win = null
    console.log(event);
    event.preventDefault();
    win.hide();
  })
}

So that's not working for me, when I close the window I get this error message: enter image description here

Can somebody help me? Line 37 is the line with win.hide()

Thank you!

Upvotes: 14

Views: 8496

Answers (1)

Joshua
Joshua

Reputation: 5322

Use the close event instead of the closed event.

When the closed event is fired the window is already closed.

When the close event is fired the window is still open and you can prevent it from closing by using event.preventDefault(); like this:

win.on('close', function (evt) {
    evt.preventDefault();
});

However on MacOS that'll stop you from quitting your app. To allow quitting your app and preventing windows from closing use this code:

// Set a variable when the app is quitting.
var isAppQuitting = false;
app.on('before-quit', function (evt) {
    isAppQuitting = true;
});

win.on('close', function (evt) {
    if (!isAppQuitting) {
        evt.preventDefault();
    }
});

That'll only stop the window from closing if the app isn't quitting.

Upvotes: 36

Related Questions