Have you filed a radar? You already have a test project, so the hard part is 
done. Please be sure to attach the test project to the radar.
-raleigh

On Sep 23, 2011, at 4:03 AM, Martin Hedenfalk wrote:

> Hi,
> 
> I'm having problems with vertical NSSplitViews in Lion. I'm dynamically 
> adding subviews and nesting horizontal and vertical NSSplitViews. I don't get 
> these problems in Snow Leopard.
> 
> Splitting horizontally seems to work fine, but splitting vertically causes 
> several problems:
> 
> - divider width is (sometimes) way too large
> - sometimes the divider is not shown at all
> - splitting time increases with number of subviews (10s with ~20 subviews)
> - the subview frames gets messed up and the following is printed in the 
> console (here the two subviews overlap):
> 
> 2011-09-23 11:54:28.745 splits[52596:707] <NSSplitView: 0x1003c8c80>: 
> -resizeSubviewsWithOldSize: was invoked and left the subview frames in an 
> inconsistent state:
> 2011-09-23 11:54:28.746 splits[52596:707] Split view bounds: {{0, 0}, {208, 
> 215}}
> 2011-09-23 11:54:28.746 splits[52596:707]     Subview frame: {{0, 0}, {94, 
> 215}}
> 2011-09-23 11:54:28.747 splits[52596:707]     Subview frame: {{89, 0}, {119, 
> 215}}
> 2011-09-23 11:54:28.747 splits[52596:707] The subview frames are not in the 
> same order as the subviews array. NSSplitView requires that these orders be 
> kept consistent, otherwise behavior is undefined.
> 
> I've made a minimal test project that shows the issue.
> It's available at http://bzero.se/splits.zip.
> 
> This code does not use a delegate for the split view, so it can't be that I'm 
> doing something weird in [splitView:resizeSubviewsWithOldSize:].
> 
> The core of the code is the method that splits the content views (which 
> contain a single NSTextView):
> 
> - (NSViewController *)splitView:(NSViewController *)viewController
>                       withView:(NSViewController *)newViewController
>                     vertically:(BOOL)isVertical
> {
>    NSView *view = [viewController view];
>    NSView *newView = [newViewController view];
>    NSSplitView *split = (NSSplitView *)[view superview];
> 
>    /* If there is only one subview in the split, convert it to the desired 
> orientation. */
>    if ([[split subviews] count] == 1 && [split isVertical] != isVertical)
>        [split setVertical:isVertical];
> 
>    if ([split isVertical] == isVertical) {
>        /* Same orientation, just add another view to this split. */
>        [split addSubview:newView];
>    } else {
>        /*
>         * Different orientation, replace the view with a new split view
>         * containing the new and old content views.
>         */
>        NSSplitView *newSplit = [[NSSplitView alloc] initWithFrame:[view 
> frame]];
>        [newSplit setVertical:isVertical];
>        [newSplit setAutoresizingMask:NSViewWidthSizable | 
> NSViewHeightSizable];
>        [newSplit setAutoresizesSubviews:YES];
>        [split replaceSubview:view with:newSplit];
>        [newSplit addSubview:view];
>        [newSplit addSubview:newView];
>        [newSplit release];
>    }
> 
>    [window makeFirstResponder:newView];
>    [views addObject:newViewController];
> 
>    return newViewController;
> }
> 
> Am I doing something wrong with the subviews?
> 
> TIA
>       .martin
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/ledet%40apple.com
> 
> This email sent to le...@apple.com

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to