From 8ec78f20d1eaee966de07243534fc23d4c81b149 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Fri, 15 Oct 2010 12:40:09 -0300 Subject: [PATCH] Implement _minimumFrameSize for CPTokenField tokens. Also honor min-size width - not used by Aristo but potentially useful for custom themes. --- AppKit/CPTokenField.j | 14 +++++--------- AppKit/Themes/Aristo/ThemeDescriptors.j | 2 ++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 97e3d7f33..9945d6479 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -970,21 +970,17 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", _tokenField = tokenField; } -- (void)sizeToFit +- (CGSize)_minimumFrameSize { - [super sizeToFit]; - - var size = [self bounds].size, + var size = CGRectMakeZero(), minSize = [self currentValueForThemeAttribute:@"min-size"], contentInset = [self currentValueForThemeAttribute:@"content-inset"]; + // Tokens are fixed height, so we could as well have used max-size here. size.height = minSize.height; + size.width = MAX(minSize.width, [([self stringValue] || @" ") sizeWithFont:[self font]].width + contentInset.left + contentInset.right); - // this is necessary to recalculate the width of the token due to new CPTextField sizeToFit - // behaviour that doesn't resize width on bezeled textfield - size.width = [([self stringValue] || @" ") sizeWithFont:[self font]].width + contentInset.left + contentInset.right; - - [self setFrameSize:size]; + return size; } - (void)layoutSubviews diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 76cc69b53..6788fd844 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -848,7 +848,9 @@ var themedButtonValues = nil, [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBezeled], [@"content-inset", CGInsetMake(1.0, 24.0, 2.0, 16.0), CPThemeStateBezeled], + // Minimum height == maximum height since tokens are fixed height. [@"min-size", CGSizeMake(0.0, 19.0)], + [@"max-size", CGSizeMake(-1.0, 19.0)], [@"vertical-alignment", CPCenterTextAlignment], ];