Запретить закрытие дочернего окна при закрытии родительского окна в Electron - PullRequest
0 голосов
/ 13 мая 2019

Я делаю приложение Electron.В этом приложении есть способ открыть новое окно (всплывающее окно) для перетаскивания на другой монитор.В этом окне есть способ открыть другое и так далее.Мне нужно, чтобы пользователь мог закрыть окно, которое он не хочет, но держать другие открытыми.

Сначала я попытался window.open, но дочернее окно закрывается, когда родитель закрывается.Я думал, что это должно быть потому, что VAR собирает мусор.

Во-вторых, я попытался связать с событием new-window в основном процессе.Вот что я сделал:

let windows = [];

function createNewWindow(){
  let win = new BrowserWindow(
    {
      width: 1600,
      height: 900,
      webPreferences: {
        nodeIntegration: true
      }
    }
  );

  win.webContents.on('new-window', (event, url) => {
    event.preventDefault()

    let win = createNewWindow();
    win.loadURL(url);
    event.newGuest = win;
  })

  windows.push(win);

  return win;
}

Но ребенок закрывается, когда родитель закрывается.Я проверил windows var, но он правильно сохраняется в основном процессе, поэтому это не должно быть проблемой GC.

Как открыть цепочку окон (с window.open или без нее) безони закрываются, когда закрывается главный родитель?

РЕДАКТИРОВАТЬ

Поскольку я не нашел способа держать окна открытыми, я решил скрыть окна вместо закрытияих.Вот что я сделал:

  win.on("close", (event) => {
    if (win.hideInsteadOfClose == true) {
      event.preventDefault();
      win.hide();
    }
  });

Где hideInsteadOfClose - это свойство, которое я даю новым окнам, созданным.Это не правильный способ сделать это, но он выполняет свою работу.Пожалуйста, не стесняйтесь ответить с правильным путем.

1 Ответ

0 голосов
/ 17 мая 2019

Поскольку я не нашел способа держать окна открытыми, я решил скрыть окна, а не закрывать их. Вот что я сделал:

  win.on("close", (event) => {
    if (win.hideInsteadOfClose == true) {
      event.preventDefault();
      win.hide();
    }
  });

Где hideInsteadOfClose - это свойство, которое я даю новым окнам. Это не правильный способ сделать это, но он выполняет свою работу.

Пожалуйста, не стесняйтесь ответить с правильным путем.

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