Как я могу изменить размер окна влево, когда приложение Electron закреплено в правой части экрана? - PullRequest
1 голос
/ 08 апреля 2019

Я создаю приложение Electron, в котором мы хотим, чтобы панель инструментов с навигационной панелью была закреплена в правой части экрана. Он должен быть справа, потому что большинство наших пользователей работают в Windows, а закрепление слева означает, что оно перекрывает множество значков и будет закрыто меню «Пуск».

Когда пользователь щелкает значок, мне нужно, чтобы окно открывалось / менялось влево.

При запуске приложения я создаю новое окно

mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    center: true,
    backgroundColor: '#18A4FC'
  })

Затем, после аутентификации пользователя, я использую ipcRender, чтобы отправить сообщение об успешном завершении в файл main.js. В настоящее время это «закрепляет» окно в правой части экрана, используя метод setBounds и размеры экрана.

ipcMain.on('login-success', () => {
  let display = electron.screen.getPrimaryDisplay()
  const { width, height } = display.bounds
  mainWindow.setBounds({
    x: width - 40,
    y: 0,
    width: 40,
    height: height
  })
})

Затем, когда пользователь щелкает значок, я использую setSize, чтобы «открыть» док-станцию. Это означает, что я меняю ширину окна с 40 до 480 пикселей. Но он открывается вправо, за кадром. Мне нужно, чтобы открыть влево.

ipcMain.on('resize-open', () => {
  let display = electron.screen.getPrimaryDisplay()
  const { height } = display.bounds
  mainWindow.setSize(480, height)
})

Есть идеи, как это сделать? Я понимаю, что ширина, высота устанавливается из левого верхнего угла 0,0. Любой способ сбросить это?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

В итоге я использовал setBounds, но вместо этого переместил его влево на величину, необходимую для его открытия.

  let display = electron.screen.getPrimaryDisplay()
  const { width, height } = display.bounds
  mainWindow.setBounds({
    x: width - 320 ,
    y: height,
    width: 320,
    height: height
  })
})```
0 голосов
/ 10 апреля 2019

Может быть, вы могли бы попробовать что-то вроде:

mainWindow.setBounds({
  x: 0,
  y: 0,
  width: 480,
  height: height
})

Вместо:

mainWindow.setSize(480, height)

Поскольку функция setBounds сбрасывает положение окна (в данном случае до 0,0), а также устанавливает ширину и высоту.

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