forked from joejulian/gio
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 <mail@eliasnaur.com>
This commit is contained in:
+7
-2
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user