46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
package events
|
|
|
|
import (
|
|
"time"
|
|
"voidraft/internal/services"
|
|
|
|
"github.com/wailsapp/wails/v3/pkg/application"
|
|
wailsevents "github.com/wailsapp/wails/v3/pkg/events"
|
|
)
|
|
|
|
// RegisterTrayEvents 注册与系统托盘相关的所有事件
|
|
func RegisterTrayEvents(app *application.App, systray *application.SystemTray, mainWindow *application.WebviewWindow, trayService *services.TrayService) {
|
|
// 不附加窗口到系统托盘,避免失去焦点自动缩小
|
|
// systray.AttachWindow(mainWindow)
|
|
|
|
// 设置窗口防抖时间
|
|
systray.WindowDebounce(200 * time.Millisecond)
|
|
|
|
// 设置点击托盘图标显示主窗口
|
|
systray.OnClick(func() {
|
|
trayService.ShowWindow()
|
|
})
|
|
|
|
// 处理窗口关闭事件 - 根据配置决定是隐藏到托盘还是直接退出
|
|
mainWindow.RegisterHook(wailsevents.Common.WindowClosing, func(event *application.WindowEvent) {
|
|
// 取消默认关闭行为
|
|
event.Cancel()
|
|
// 使用托盘服务处理关闭事件
|
|
trayService.HandleWindowClose()
|
|
})
|
|
|
|
}
|
|
|
|
// RegisterTrayMenuEvents 注册系统托盘菜单事件
|
|
func RegisterTrayMenuEvents(app *application.App, menu *application.Menu, mainWindow *application.WebviewWindow) {
|
|
menu.Add("Main window").OnClick(func(data *application.Context) {
|
|
mainWindow.Show()
|
|
})
|
|
|
|
menu.AddSeparator()
|
|
|
|
menu.Add("Quit").OnClick(func(data *application.Context) {
|
|
app.Quit()
|
|
})
|
|
}
|