Активируйте приложение Electron на MacOS, используя вкладку Cmd + - PullRequest
1 голос
/ 30 марта 2020

В моем приложении Electron на MacOS я могу заставить приложение отображать главное окно, если щелкнуть значок в доке, используя событие activate:

app.on('activate', () => {

    log.info('activate')
    win.show()
})

Какое событие мне нужно использовать отобразить главное окно, когда пользователь использует Cmd + tab для активации приложения? Событие activate не запускается. Я ищу поведение, похожее на GitHub Desktop, где при использовании Cmd + tab для выбора приложения открывается главное окно, если оно не видно.

1 Ответ

2 голосов
/ 31 марта 2020

Глядя на пример GitHub Desktop, кажется, что они настраивают это поведение, угоняя событие BrowserWindow close.

In app/src/main-process/app-window.ts:

    if (__DARWIN__) {
      this.window.on('close', e => {
        if (!quitting) {
          e.preventDefault()
          Menu.sendActionToFirstResponder('hide:')
        }
      })
    }

После предотвращения закрытия окна, Menu.sendActionToFirstResponder('hide:') скроет все приложение вместо того, чтобы что-либо делать с самим окном. Теперь вкладка в приложение (как вкладка в любое приложение, скрытое с помощью + H в macOS) теперь покажет его.

Обратите внимание, что вам, вероятно, следует добавить обработчики, чтобы гарантировать, что приложение закрывается, когда вы пытаетесь действительно выйти, а также. Из того же файла в репозитории GitHub Desktop (не уверен, что запускает событие IP C, но просто выполнение before-quit отлично работает для начала) :

    let quitting = false
    app.on('before-quit', () => {
      quitting = true
    })

    ipcMain.on('will-quit', (event: Electron.IpcMainEvent) => {
      quitting = true
      event.returnValue = true
    })

См. минимальное воспроизведение. Сущность , открываемая с помощью Electron Fiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...