diff --git a/container_darwin.m b/container_darwin.m index 747ccf7c..333b9143 100644 --- a/container_darwin.m +++ b/container_darwin.m @@ -23,12 +23,27 @@ uiLogObjCClassAllocations } - (void)setFrameSize:(NSSize)s +{ + [super setFrameSize:s]; + [self uiUpdateNow]; +} + +- (void)uiUpdateNow { uiSizing d; - [super setFrameSize:s]; if (self.child != NULL) (*(self.child->resize))(self.child, [self bounds].origin.y, [self bounds].origin.y, [self bounds].size.width, [self bounds].size.height, &d); } @end + +void updateParent(uintptr_t parent) +{ + uiContainer *c; + + if (parent == 0) + return; + c = (uiContainer *) parent; + [c uiUpdateNow]; +} diff --git a/newcontrol_darwin.m b/newcontrol_darwin.m index 04f6c1cb..8b0bd48b 100644 --- a/newcontrol_darwin.m +++ b/newcontrol_darwin.m @@ -8,6 +8,7 @@ struct uiSingleViewControl { NSView *view; NSScrollView *scrollView; NSView *immediate; // the control that is added to the parent container; either view or scrollView + uintptr_t parent; }; #define S(c) ((uiSingleViewControl *) (c)) @@ -24,9 +25,17 @@ static uintptr_t singleHandle(uiControl *c) static void singleSetParent(uiControl *c, uintptr_t parent) { - NSView *parentView = (NSView *) parent; + uiSingleViewControl *s = S(c); + uintptr_t oldparent; + NSView *parentView; - [parentView addSubview:S(c)->immediate]; + oldparent = s->parent; + s->parent = parent; + parentView = (NSView *) (s->parent); + // TODO will this change parents? + [parentView addSubview:s->immediate]; + updateParent(oldparent); + updateParent(s->parent); } // also good for NSBox and NSProgressIndicator diff --git a/uipriv_darwin.h b/uipriv_darwin.h index 514297cb..1205d81b 100644 --- a/uipriv_darwin.h +++ b/uipriv_darwin.h @@ -36,5 +36,7 @@ extern void setStandardControlFont(NSControl *); // container_darwin.m @interface uiContainer : NSView +// TODO rename to uiChild @property uiControl *child; +- (void)uiUpdateNow; @end diff --git a/window_darwin.m b/window_darwin.m index 613b78f3..c2c312a1 100644 --- a/window_darwin.m +++ b/window_darwin.m @@ -1,9 +1,6 @@ // 6 april 2015 #import "uipriv_darwin.h" -// TODO -// - showing on size - @interface uiWindowDelegate : NSObject @property (assign) NSWindow *w; @property (assign) uiContainer *container;