BTW, I didn't test this but mine is (translated from AP3 lib) like
this, I think it's close to the specs.
- (void) setSubviews: (NSArray *)newSubviews
{
NSEnumerator *en;
NSView* aView;
NSMutableArray *uniqNew = [NSMutableArray array];
en = [newSubviews objectEnumerator];
while ((aView = [en nextObject]))
{
id supersub = [aView superview];
if (supersub != nil && supersub != self)
{
[NSException raise:NSInvalidArgumentException
format:@"Superviews of new subviews must be
either nil or receiver."];
}
if ([uniqNew containsObject:aView])
{
[NSException raise:NSInvalidArgumentException
format:@"Duplicated new subviews."];
}
if (NO == [_subviews containsObject:aView])
{
[self addSubview:aView];
}
[uniqNew addObject:aView];
}
en = [_subviews objectEnumerator];
while ((aView = [en nextObject]))
{
if (NO == [newSubviews containsObject:aView])
{
[aView removeFromSuperview];
}
}
ASSIGN(_subviews, uniqNew); //sorting
}
_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev