From b56f60c04cb5128edce4894c5aaf8c04f721125b Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 18 Jul 2014 15:16:41 -0400 Subject: [PATCH] Fixed control positioning on initial window show on Mac OS X. --- redo/window_darwin.go | 1 - redo/window_darwin.m | 9 ++++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/redo/window_darwin.go b/redo/window_darwin.go index d6eeb3c..c84c204 100644 --- a/redo/window_darwin.go +++ b/redo/window_darwin.go @@ -135,7 +135,6 @@ func windowClosing(xw unsafe.Pointer) C.BOOL { //export windowResized func windowResized(xw unsafe.Pointer, width C.uintptr_t, height C.uintptr_t) { - // TODO this isn't called when the window first opens up w := (*window)(unsafe.Pointer(xw)) w.doresize(int(width), int(height)) fmt.Printf("new size %d x %d\n", width, height) diff --git a/redo/window_darwin.m b/redo/window_darwin.m index 426f353..20908c1 100644 --- a/redo/window_darwin.m +++ b/redo/window_darwin.m @@ -21,11 +21,16 @@ } - (void)windowDidResize:(NSNotification *)n +{ + [self doWindowResize:[n object]]; +} + +- (void)doWindowResize:(id)win { NSWindow *w; NSRect r; - w = toNSWindow([n object]); + w = toNSWindow(win); r = [[w contentView] frame]; windowResized(self->gowin, (uintptr_t) r.size.width, (uintptr_t) r.size.height); } @@ -62,6 +67,8 @@ void windowSetTitle(id win, const char * title) void windowShow(id win) { [toNSWindow(win) makeKeyAndOrderFront:toNSWindow(win)]; + // calling the above the first time won't emit a size changed event (unlike on Windows and GTK+), so fake one to get the controls laid out properly + [[toNSWindow(win) delegate] doWindowResize:win]; } void windowHide(id win)