app/internal/window: [macOS] don't set callbacks before window is ready

Updates gio#130

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-06-08 16:34:10 +02:00
parent 504664e014
commit 98a603aed6
+4 -4
View File
@@ -294,7 +294,7 @@ func NewWindow(win Callbacks, opts *Options) error {
<-launched <-launched
errch := make(chan error) errch := make(chan error)
runOnMain(func() { runOnMain(func() {
w, err := newWindow(win, opts) w, err := newWindow(opts)
if err != nil { if err != nil {
errch <- err errch <- err
return return
@@ -309,13 +309,14 @@ func NewWindow(win Callbacks, opts *Options) error {
title := C.CString(opts.Title) title := C.CString(opts.Title)
defer C.free(unsafe.Pointer(title)) defer C.free(unsafe.Pointer(title))
errch <- nil errch <- nil
nextTopLeft = C.gio_createWindow(w.view, title, C.CGFloat(width), C.CGFloat(height), nextTopLeft)
win.SetDriver(w) win.SetDriver(w)
w.w = win
nextTopLeft = C.gio_createWindow(w.view, title, C.CGFloat(width), C.CGFloat(height), nextTopLeft)
}) })
return <-errch return <-errch
} }
func newWindow(win Callbacks, opts *Options) (*window, error) { func newWindow(opts *Options) (*window, error) {
view := viewFactory() view := viewFactory()
if view == 0 { if view == 0 {
return nil, errors.New("CreateWindow: failed to create view") return nil, errors.New("CreateWindow: failed to create view")
@@ -324,7 +325,6 @@ func newWindow(win Callbacks, opts *Options) (*window, error) {
w := &window{ w := &window{
view: view, view: view,
scale: scale, scale: scale,
w: win,
} }
dl, err := NewDisplayLink(func() { dl, err := NewDisplayLink(func() {
runOnMain(func() { runOnMain(func() {