first commit
This commit is contained in:
79
docs/zh-cn/tarbar.md
Executable file
79
docs/zh-cn/tarbar.md
Executable file
@@ -0,0 +1,79 @@
|
||||
#### 定位
|
||||
```js
|
||||
appTray.on('click', (event, bounds, position) => {
|
||||
// mainWindow === null ? createWindow() : mainWindow.close()
|
||||
// return
|
||||
// 点击时显示窗口,并修改窗口的显示位置
|
||||
function setMainWinPosition(win, trayBounds) {
|
||||
try {
|
||||
const { screen } = electron
|
||||
const winWidth = mainWindow.getSize()[0]
|
||||
const winHeight = mainWindow.getSize()[1]
|
||||
const cursorPosition = screen.getCursorScreenPoint()
|
||||
const currentScreen = screen.getDisplayNearestPoint(cursorPosition)
|
||||
const screens = screen.getAllDisplays()
|
||||
|
||||
let screenWidth = 0
|
||||
|
||||
// 这目前判断多屏都是横着拼的多屏,
|
||||
for (let i = 0; i < screens.length; i++) {
|
||||
screenWidth += screens[i].workAreaSize.width
|
||||
}
|
||||
|
||||
cursorPosition.x = trayBounds.x + trayBounds.width / 2
|
||||
|
||||
const parallelType = cursorPosition.x < screenWidth / 2 ? 'left' : 'right'
|
||||
const verticaType = cursorPosition.y < currentScreen.workAreaSize.height / 2 ? 'top' : 'bottom'
|
||||
|
||||
let trayPositionType = '' // 任务栏的位置
|
||||
let trayPositionSize = 0
|
||||
|
||||
if (currentScreen.workAreaSize.height < currentScreen.size.height) {
|
||||
trayPositionType = verticaType === 'top' ? 'top' : 'bottom'
|
||||
trayPositionSize = currentScreen.size.height - currentScreen.workAreaSize.height
|
||||
} else if (currentScreen.workAreaSize.width < currentScreen.size.width) {
|
||||
trayPositionType = parallelType === 'left' ? 'left' : 'right'
|
||||
trayPositionSize = currentScreen.size.width - currentScreen.workAreaSize.width
|
||||
}
|
||||
|
||||
let winPositionX = 1
|
||||
let winPositionY = 1
|
||||
|
||||
if (trayPositionType === 'top') {
|
||||
winPositionX = Math.max(Math.min(screenWidth - winWidth, cursorPosition.x - (winWidth / 2)), 1)
|
||||
winPositionY = trayBounds.height + 2
|
||||
} else if (trayPositionType === 'bottom') {
|
||||
winPositionX = Math.max(Math.min(screenWidth - winWidth, cursorPosition.x - (winWidth / 2)), 1)
|
||||
winPositionY = currentScreen.size.height - trayPositionSize - winHeight
|
||||
} else if (trayPositionType === 'left') {
|
||||
winPositionX = trayPositionSize
|
||||
winPositionY = Math.max(Math.min(currentScreen.size.height - winHeight, cursorPosition.y - (winHeight / 2)), 1)
|
||||
} else if (trayPositionType === 'right') {
|
||||
winPositionX = screenWidth - trayPositionSize - winWidth
|
||||
winPositionY = Math.max(Math.min(currentScreen.size.height - winHeight, cursorPosition.y - (winHeight / 2)), 1)
|
||||
}
|
||||
win.setPosition(parseInt(winPositionX, 10), winPositionY)
|
||||
} catch (error) {
|
||||
log.error(error)
|
||||
}
|
||||
}
|
||||
try {
|
||||
if (mainWindow.isVisible()) {
|
||||
mainWindow.webContents.send('datainfo', {
|
||||
type: 'windowShow',
|
||||
data: false
|
||||
})
|
||||
mainWindowHide()
|
||||
} else {
|
||||
mainWindow.webContents.send('datainfo', {
|
||||
type: 'windowShow',
|
||||
data: true
|
||||
})
|
||||
mainWindowShow()
|
||||
setMainWinPosition(mainWindow, bounds)
|
||||
}
|
||||
} catch (error) {
|
||||
log.error(error)
|
||||
}
|
||||
})
|
||||
```
|
||||
Reference in New Issue
Block a user