Optimise CPSegmentedButton setEnabled:forSegment:.

Don't relayout the segmented button if the enabled state of a segment is not changed.
This commit is contained in:
Alexander Ljungberg committed 2012-09-02 23:33:56 +01:00
1 parent b5776445ec
commit 7264692a0a
1 file changed
+6 -3
+6 -3
View File
@@ -366,11 +366,14 @@ CPSegmentSwitchTrackingMomentary = 2;
@param aSegment the segment to enable/disable
@throws CPRangeException if \c aSegment is out of bounds
*/
- (void)setEnabled:(BOOL)isEnabled forSegment:(unsigned)aSegment
- (void)setEnabled:(BOOL)shouldBeEnabled forSegment:(unsigned)aSegment
{
[_segments[aSegment] setEnabled:isEnabled];
if ([_segments[aSegment] enabled] === shouldBeEnabled)
return;
if (isEnabled)
[_segments[aSegment] setEnabled:shouldBeEnabled];
if (shouldBeEnabled)
_themeStates[aSegment] &= ~CPThemeStateDisabled;
else
_themeStates[aSegment] |= CPThemeStateDisabled;