app: [Windows] ensure the Window is initalized before Run functions

Like the previous commit for macOS, this defers event processing until
after the Window is ready.

Fixes: https://todo.sr.ht/~eliasnaur/gio/575
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2024-04-19 17:19:45 +02:00
parent 5083a23301
commit 971b01d836
+8 -3
View File
@@ -49,7 +49,8 @@ type window struct {
// placement saves the previous window position when in full screen mode.
placement *windows.WindowPlacement
animating bool
animating bool
initialized bool
borderSize image.Point
config Config
@@ -104,7 +105,6 @@ func newWindow(win *callbacks, options []Option) {
w.loop = newEventLoop(w.w, w.wakeup)
w.w.SetDriver(w)
err := w.init()
done <- struct{}{}
if err != nil {
w.ProcessEvent(DestroyEvent{Err: err})
return
@@ -118,6 +118,9 @@ func newWindow(win *callbacks, options []Option) {
// Since the window class for the cursor is null,
// set it here to show the cursor.
w.SetCursor(pointer.CursorDefault)
w.initialized = true
done <- struct{}{}
w.loop.FlushEvents()
w.runLoop()
}()
<-done
@@ -600,7 +603,9 @@ func (w *window) SetAnimating(anim bool) {
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 {