Skip to content

Commit

Permalink
try a better way to work around initial occasional window misdrawing …
Browse files Browse the repository at this point in the history
…on Linux
  • Loading branch information
dweymouth committed Jun 23, 2024
1 parent 96cbbf0 commit 16fd76f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
15 changes: 8 additions & 7 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,20 @@ func main() {
myApp.OnExit = mainWindow.Quit

go func() {
defaultServer := myApp.ServerManager.GetDefaultServer()
if defaultServer == nil {
mainWindow.Controller.PromptForFirstServer()
} else {
mainWindow.Controller.DoConnectToServerWorkflow(defaultServer)
}
// TODO: There is a race condition with laying out the window before the
// window creation animation on Ubuntu (and other DEs?) finishes, where
// the window will be misdrawn into a smaller area if the animation hasn't finished.
// This makes it much less likely to occur (not seen on dozens of startups)
// but is a hacky "solution"!
if runtime.GOOS == "linux" {
time.Sleep(250 * time.Millisecond)
}
defaultServer := myApp.ServerManager.GetDefaultServer()
if defaultServer == nil {
mainWindow.Controller.PromptForFirstServer()
} else {
mainWindow.Controller.DoConnectToServerWorkflow(defaultServer)
time.Sleep(350 * time.Millisecond)
mainWindow.ForceResize()
}
}()

Expand Down
23 changes: 13 additions & 10 deletions ui/mainwindow.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,7 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
m.BottomPanel = NewBottomPanel(app.PlaybackManager, app.ImageManager, m.Controller)
m.container = container.NewBorder(nil, m.BottomPanel, nil, nil, m.BrowsingPane)
m.Window.SetContent(m.container)

w := float32(app.Config.Application.WindowWidth)
if w <= 1 {
w = 1000
}
h := float32(app.Config.Application.WindowHeight)
if h <= 1 {
h = 800
}
m.Window.Resize(fyne.NewSize(w, h))
m.ForceResize()
app.PlaybackManager.OnSongChange(func(item mediaprovider.MediaItem, _ *mediaprovider.Track) {
if item == nil {
m.Window.SetTitle(displayAppName)
Expand Down Expand Up @@ -150,6 +141,18 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
return m
}

func (m *MainWindow) ForceResize() {
w := float32(m.App.Config.Application.WindowWidth)
if w <= 1 {
w = 1000
}
h := float32(m.App.Config.Application.WindowHeight)
if h <= 1 {
h = 800
}
m.Window.Resize(fyne.NewSize(w, h))
}

func (m *MainWindow) StartupPage() controller.Route {
switch m.App.Config.Application.StartupPage {
case "Favorites":
Expand Down

0 comments on commit 16fd76f

Please sign in to comment.