From 5083a2330176f99b23d219b870c3dafdd354ce18 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 19 Apr 2024 17:08:14 +0200 Subject: [PATCH] app: [macOS] ensure the Window is initalized before Run functions Don't call eventLoop.FlushEvents which in turn applies Options and executes Run functions before the window is fully initialized. References: https://todo.sr.ht/~eliasnaur/gio/575 Signed-off-by: Elias Naur --- app/os_macos.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/os_macos.go b/app/os_macos.go index cb27f942..427009ad 100644 --- a/app/os_macos.go +++ b/app/os_macos.go @@ -326,6 +326,7 @@ type window struct { cursor pointer.Cursor pointerBtns pointer.Buttons loop *eventLoop + initialized bool scale float32 config Config @@ -833,7 +834,9 @@ func (w *window) draw() { func (w *window) ProcessEvent(e event.Event) { w.w.ProcessEvent(e) - w.loop.FlushEvents() + if w.initialized { + w.loop.FlushEvents() + } } func (w *window) Event() event.Event { @@ -924,7 +927,6 @@ func newWindow(win *callbacks, options []Option) { } w.loop = newEventLoop(w.w, w.wakeup) win.SetDriver(w) - res <- struct{}{} if err := w.init(); err != nil { w.ProcessEvent(DestroyEvent{Err: err}) return @@ -942,6 +944,9 @@ func newWindow(win *callbacks, options []Option) { nextTopLeft = C.cascadeTopLeftFromPoint(window, nextTopLeft) // makeKeyAndOrderFront assumes ownership of our window reference. C.makeKeyAndOrderFront(window) + w.initialized = true + res <- struct{}{} + w.loop.FlushEvents() }) <-res }