Fix #212: round saved window dimensions to even

This commit is contained in:
Drew Weymouth
2023-07-14 17:19:55 -07:00
parent abb7dc0dde
commit 5902c40b98
+8 -5
View File
@@ -2,6 +2,7 @@ package main
import ( import (
"log" "log"
"math"
"runtime" "runtime"
"time" "time"
@@ -42,7 +43,7 @@ func main() {
mainWindow := ui.NewMainWindow(fyneApp, appname, displayName, appVersion, myApp, fyne.NewSize(w, h)) mainWindow := ui.NewMainWindow(fyneApp, appname, displayName, appVersion, myApp, fyne.NewSize(w, h))
myApp.OnReactivate = mainWindow.Show myApp.OnReactivate = mainWindow.Show
myApp.OnExit = func() { myApp.OnExit = func() {
saveWindowPosition(myApp.Config, mainWindow.Window) saveWindowSize(myApp.Config, mainWindow.Window)
fyneApp.Quit() fyneApp.Quit()
} }
@@ -65,7 +66,7 @@ func main() {
mainWindow.Show() mainWindow.Show()
mainWindow.Window.SetCloseIntercept(func() { mainWindow.Window.SetCloseIntercept(func() {
saveWindowPosition(myApp.Config, mainWindow.Window) saveWindowSize(myApp.Config, mainWindow.Window)
if myApp.Config.Application.CloseToSystemTray && if myApp.Config.Application.CloseToSystemTray &&
mainWindow.HaveSystemTray() { mainWindow.HaveSystemTray() {
mainWindow.Window.Hide() mainWindow.Window.Hide()
@@ -79,7 +80,9 @@ func main() {
myApp.Shutdown() myApp.Shutdown()
} }
func saveWindowPosition(config *backend.Config, window fyne.Window) { func saveWindowSize(config *backend.Config, window fyne.Window) {
config.Application.WindowHeight = int(window.Canvas().Size().Height) // round sizes to even to avoid Wayland issues with 2x scaling factor
config.Application.WindowWidth = int(window.Canvas().Size().Width) // https://github.com/dweymouth/supersonic/issues/212
config.Application.WindowHeight = int(math.RoundToEven(float64(window.Canvas().Size().Height)))
config.Application.WindowWidth = int(math.RoundToEven(float64(window.Canvas().Size().Width)))
} }