diff --git a/AppKit/CPSegmentedControl.j b/AppKit/CPSegmentedControl.j index 3c0928bec..017d15b61 100644 --- a/AppKit/CPSegmentedControl.j +++ b/AppKit/CPSegmentedControl.j @@ -94,7 +94,9 @@ CPSegmentSwitchTrackingMomentary = 2; if (_segments.length == aCount) return; - var height = CGRectGetHeight([self bounds]); + var height = CGRectGetHeight([self bounds]), + dividersBefore = MAX(0, _segments.length - 1), + dividersAfter = MAX(0, aCount - 1); if (_segments.length < aCount) { @@ -113,6 +115,14 @@ CPSegmentSwitchTrackingMomentary = 2; if (_selectedSegment >= _segments.length) _selectedSegment = -1; + // Make space for/remove space used by dividers. + var thickness = [self currentValueForThemeAttribute:@"divider-thickness"], + delta = thickness * (dividersAfter - dividersBefore), + frame = [self frame]; + + if (delta) + [self setFrameSize:CGSizeMake(frame.size.width + delta, frame.size.height)]; + [self tileWithChangedSegment:0]; } @@ -607,7 +617,7 @@ CPSegmentSwitchTrackingMomentary = 2; segmentWidth = [segment width], themeState = _themeStates[aSegment] | (_themeState & CPThemeStateDisabled), contentInset = [self valueForThemeAttribute:@"content-inset" inState:themeState], - font = [self valueForThemeAttribute:@"font" inState:themeState]; + font = [self font]; if (!segmentWidth) { diff --git a/Tests/Manual/CPTabView2/AppController.j b/Tests/Manual/CPTabView2/AppController.j index 1eca4568c..22658b7a2 100644 --- a/Tests/Manual/CPTabView2/AppController.j +++ b/Tests/Manual/CPTabView2/AppController.j @@ -21,19 +21,26 @@ [tabView setTabViewType:CPNoTabsBezelBorder]; [tabView setTabViewType:CPTopTabsBezelBorder]; - var view = [[CPView alloc] initWithFrame:CGRectMake(20, 20, 200, 200)]; - [view addSubview:[CPTextField labelWithTitle:@"First"]]; - var item = [[CPTabViewItem alloc] initWithIdentifier:@"a"]; - [item setView:view]; - [item setLabel:"Test"]; - [tabView addTabViewItem:item]; + var tabs = [ + "First Tab", "a label", + "Second Tab", "another label", + "Third Tab", "a third label", + "Fourth Tab", "label 4", + /*"5th Tab", "label 5", + "6th Tab", "label 6", + "7th Tab", "label 7",*/ + ]; - view = [[CPView alloc] initWithFrame:CGRectMake(20, 20, 200, 200)]; - [view addSubview:[CPTextField labelWithTitle:@"Second"]]; - item = [[CPTabViewItem alloc] initWithIdentifier:@"a"]; - [item setView:view]; - [item setLabel:"Test2"]; - [tabView addTabViewItem:item]; + for (var i = 0; i < tabs.length; i += 2) + { + var view = [[CPView alloc] initWithFrame:CGRectMake(20, 20, 200, 200)]; + [view addSubview:[CPTextField labelWithTitle:tabs[i + 1]]]; + + var item = [[CPTabViewItem alloc] initWithIdentifier:tabs[i]]; + [item setView:view]; + [item setLabel:tabs[i]]; + [tabView addTabViewItem:item]; + } [contentView addSubview:tabView];