Я создаю приложение 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. Любой способ сбросить это?
Может быть, вы могли бы попробовать что-то вроде:
mainWindow.setBounds({
x: 0,
y: 0,
width: 480,
height: height
})
Вместо:
mainWindow.setSize(480, height)
Потому что функция setBounds
сбрасывает положение окна (в данном случае до 0,0), а также устанавливает ширину и высоту.
В итоге я использовал setBounds, но вместо этого переместил его влево на сумму, которая мне нужна, чтобы он был открыт.
let display = electron.screen.getPrimaryDisplay()
const { width, height } = display.bounds
mainWindow.setBounds({
x: width - 320 ,
y: height,
width: 320,
height: height
})
})```
Молодец, что нашел свой собственный ответ! Если вы удовлетворены своим ответом, примите его, нажав на серую галочку под кнопками голосования.