feat: save and restore window position
This commit is contained in:
@@ -39,10 +39,19 @@ func (a *App) Startup(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) OnDomReady(ctx context.Context) {
|
func (a *App) OnDomReady(ctx context.Context) {
|
||||||
|
// Restore saved window position
|
||||||
|
if settings, err := a.store.GetSettings(); err == nil && settings != nil {
|
||||||
|
if settings.WindowX >= 0 && settings.WindowY >= 0 {
|
||||||
|
runtime.WindowSetPosition(ctx, settings.WindowX, settings.WindowY)
|
||||||
|
}
|
||||||
|
}
|
||||||
runtime.WindowShow(ctx)
|
runtime.WindowShow(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) Shutdown(ctx context.Context) {
|
func (a *App) Shutdown(ctx context.Context) {
|
||||||
|
// Save window position before closing
|
||||||
|
a.saveWindowPosition()
|
||||||
|
|
||||||
if a.timer != nil {
|
if a.timer != nil {
|
||||||
a.timer.Close()
|
a.timer.Close()
|
||||||
}
|
}
|
||||||
@@ -51,6 +60,25 @@ func (a *App) Shutdown(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) saveWindowPosition() {
|
||||||
|
if a.ctx == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
x, y := runtime.WindowGetPosition(a.ctx)
|
||||||
|
if x >= 0 && y >= 0 {
|
||||||
|
if settings, err := a.store.GetSettings(); err == nil && settings != nil {
|
||||||
|
settings.WindowX = x
|
||||||
|
settings.WindowY = y
|
||||||
|
_ = a.store.UpdateSettings(settings)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SaveWindowPosition saves current window position (can be called from frontend)
|
||||||
|
func (a *App) SaveWindowPosition() {
|
||||||
|
a.saveWindowPosition()
|
||||||
|
}
|
||||||
|
|
||||||
// Participants
|
// Participants
|
||||||
|
|
||||||
func (a *App) GetParticipants() ([]models.Participant, error) {
|
func (a *App) GetParticipants() ([]models.Participant, error) {
|
||||||
|
|||||||
@@ -69,4 +69,6 @@ type Settings struct {
|
|||||||
Theme string `json:"theme" gorm:"default:dark"`
|
Theme string `json:"theme" gorm:"default:dark"`
|
||||||
WindowWidth int `json:"windowWidth" gorm:"default:800"` // minimum 480
|
WindowWidth int `json:"windowWidth" gorm:"default:800"` // minimum 480
|
||||||
WindowFullHeight bool `json:"windowFullHeight" gorm:"default:true"` // use full screen height
|
WindowFullHeight bool `json:"windowFullHeight" gorm:"default:true"` // use full screen height
|
||||||
|
WindowX int `json:"windowX" gorm:"default:-1"` // -1 = not set (center)
|
||||||
|
WindowY int `json:"windowY" gorm:"default:-1"` // -1 = not set (center)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user