当 Electron 应用程序停靠在屏幕右侧时,如何向左调整窗口大小?

Ang*_*lez 5 javascript electron

我正在创建一个 Electron 应用程序,我们希望将导航工具栏停靠在屏幕的右侧。它需要位于右侧,因为我们大多数用户都使用 Windows,将其停靠在左侧意味着它会重叠很多图标,并且会被开始菜单覆盖。

当用户单击图标时,我需要向左打开窗口/调整大小。

在应用程序启动时,我创建一个新窗口

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

然后,在用户通过身份验证后,我使用 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
  })
})
Run Code Online (Sandbox Code Playgroud)

然后,当用户单击图标时,我使用 setSize 来“打开”扩展坞。这意味着我将窗口的宽度从 40px 更改为 480px。但它向右侧打开,在屏幕外。我需要它向左打开。

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

有什么想法如何做到这一点?据我所知,宽度、高度是从左上角设置为 0,0 的。有什么办法可以重置这个吗?

Ang*_*lez 5

我最终使用了 setBounds,而是将其向左移动到打开所需的数量。

  let display = electron.screen.getPrimaryDisplay()
  const { width, height } = display.bounds
  mainWindow.setBounds({
    x: width - 320 ,
    y: height,
    width: 320,
    height: height
  })
})```
Run Code Online (Sandbox Code Playgroud)