From 9e2a7ea776fb90953dfb73ed043c09a52e8e37de Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sat, 3 Jul 2010 22:08:21 -0400 Subject: [PATCH] Fixed: calling CPTabView setTabViewType:CPNoTabsNoBorder before the first insertTabViewItem would cause an error. Fixed: if a tab item was added in CPNoTabsNoBorder mode, and the mode was later switched to CPTopTabsBezelBorder, that previously added tab item would have no label/tab. The solution is to maintain _labelsView in either mode; since in CPNoTabsNoBorder mode _labelsView is not in the view hierarchy anyhow the performance impact should be minimal. --- AppKit/CPTabView.j | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AppKit/CPTabView.j b/AppKit/CPTabView.j index e5e7b72bf..04fa320ba 100644 --- a/AppKit/CPTabView.j +++ b/AppKit/CPTabView.j @@ -240,7 +240,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1, */ - (void)insertTabViewItem:(CPTabViewItem)aTabViewItem atIndex:(unsigned)anIndex { - if (!_labelsView && _tabViewType == CPTopTabsBezelBorder) + if (!_labelsView) [self _createBezelBorder]; [_tabViewItems insertObject:aTabViewItem atIndex:anIndex]; @@ -459,12 +459,12 @@ var CPTabViewDidSelectTabViewItemSelector = 1, if (_tabViewType == CPNoTabsBezelBorder || _tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder) [_labelsView removeFromSuperview]; - else if (![_labelsView superview]) + else if (_labelsView && ![_labelsView superview]) [self addSubview:_labelsView]; if (_tabViewType == CPNoTabsLineBorder || _tabViewType == CPNoTabsNoBorder) [_backgroundView removeFromSuperview]; - else if (![_backgroundView superview]) + else if (_backgroundView && ![_backgroundView superview]) [self addSubview:_backgroundView]; [self layoutSubviews];