Filed as radar 10187396.

So I guess I'm looking for a workaround. Does anyone have an idea what I could 
try?

        .martin

26 sep 2011 kl. 18:56 skrev Raleigh Ledet:

> 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/archive%40mail-archive.com

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

Reply via email to