diff --git a/redo/objc_darwin.h b/redo/objc_darwin.h index b739f39..28b07e4 100644 --- a/redo/objc_darwin.h +++ b/redo/objc_darwin.h @@ -54,7 +54,7 @@ extern id newLabel(void); extern void moveControl(id, intptr_t, intptr_t, intptr_t, intptr_t); /* tab_darwin.m */ -extern id newTab(void *); +extern id newTab(void); extern void tabAppend(id, char *, id); /* table_darwin.m */ diff --git a/redo/tab_darwin.go b/redo/tab_darwin.go index 3a9b338..25b94d0 100644 --- a/redo/tab_darwin.go +++ b/redo/tab_darwin.go @@ -15,9 +15,9 @@ type tab struct { } func newTab() Tab { - t := new(tab) - t._id = C.newTab(unsafe.Pointer(t)) - return t + return &tab{ + _id: C.newTab(), + } } func (t *tab) Append(name string, control Control) { @@ -28,15 +28,6 @@ func (t *tab) Append(name string, control Control) { C.tabAppend(t._id, cname, c.view) } -//export tabResized -func tabResized(data unsafe.Pointer, width C.intptr_t, height C.intptr_t) { -// t := (*tab)(unsafe.Pointer(data)) -// for _, c := range t.tabs { - // the tab area's coordinate system is localized, so the origin is (0, 0) -// c.resize(0, 0, int(width), int(height)) -// } -} - func (t *tab) id() C.id { return t._id } @@ -54,7 +45,7 @@ func (t *tab) preferredSize(d *sizing) (width, height int) { return int(s.width), int(s.height) } -// no need to override Control.commitResize() as only prepared the tabbed control; its children will be reallocated when that one is resized +// no need to override Control.commitResize() as only prepared the tabbed control; its children will be resized when that one is resized (and NSTabView itself will call setFrame: for us) func (t *tab) commitResize(a *allocation, d *sizing) { basecommitResize(t, a, d) } diff --git a/redo/tab_darwin.m b/redo/tab_darwin.m index 7697e26..a143934 100644 --- a/redo/tab_darwin.m +++ b/redo/tab_darwin.m @@ -7,32 +7,12 @@ #define toNSTabView(x) ((NSTabView *) (x)) #define toNSView(x) ((NSView *) (x)) -@interface goTabView : NSTabView { -@public - void *gotab; -} -@end - -@implementation goTabView - -- (void)setFrame:(NSRect)r +id newTab(void) { - NSRect content; + NSTabView *t; - [super setFrame:r]; - content = [self contentRect]; - tabResized(self->gotab, (intptr_t) content.size.width, (intptr_t) content.size.height); -} - -@end - -id newTab(void *gotab) -{ - goTabView *t; - - t = [[goTabView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; + t = [[NSTabView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)]; setStandardControlFont((id) t); // safe; same selector provided by NSTabView - t->gotab = gotab; return (id) t; }