diff --git a/internal/frontend/qml/Bridge.qml b/internal/frontend/qml/Bridge.qml index 433c8b00..3c700477 100644 --- a/internal/frontend/qml/Bridge.qml +++ b/internal/frontend/qml/Bridge.qml @@ -188,6 +188,10 @@ QtObject { mainWindow.showAndRise() } + if (root.backend.showOnStartup) { + mainWindow.showAndRise() + } + root.backend.guiReady() } } diff --git a/internal/frontend/qt/frontend.go b/internal/frontend/qt/frontend.go index b0d30e4a..a26375c8 100644 --- a/internal/frontend/qt/frontend.go +++ b/internal/frontend/qt/frontend.go @@ -51,6 +51,7 @@ type FrontendQt struct { noEncConfirmator types.NoEncConfirmator autostart *autostart.App restarter types.Restarter + showOnStartup bool authClient pmapi.Client auth *pmapi.Auth @@ -100,19 +101,13 @@ func New( bridge: bridge, autostart: autostart, restarter: restarter, + showOnStartup: showWindowOnStart, } // Initializing.Done is only called sync.Once. Please keep the increment // set to 1 f.initializing.Add(1) - if showWindowOnStart { - go func() { - f.initializing.Wait() - f.qml.ShowMainWindow() - }() - } - return f } diff --git a/internal/frontend/qt/qml_backend.go b/internal/frontend/qt/qml_backend.go index 032279da..f43274d2 100644 --- a/internal/frontend/qt/qml_backend.go +++ b/internal/frontend/qt/qml_backend.go @@ -37,6 +37,8 @@ type QMLBackend struct { _ func() `slot:"quit"` _ func() `slot:"restart"` + _ bool `property:showOnStartup` + _ bool `property:dockIconVisible` _ QMLUserModel `property:"users"` @@ -144,6 +146,10 @@ func (q *QMLBackend) setup(f *FrontendQt) { q.ConnectRestart(f.restart) q.ConnectGuiReady(f.guiReady) + q.ConnectIsShowOnStartup(func() bool { + return f.showOnStartup + }) + q.ConnectIsDockIconVisible(func() bool { return dockIcon.GetDockIconVisibleState() })