From bd1f64bfdeff42d9406c593e0941e98cbf783403 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Tue, 11 Dec 2012 17:27:13 +0000 Subject: [PATCH] Only show token delete button on hover, and only when token field is editable. Before this change the close button showed at all times, even for token fields which weren't even editable. This change brings us closer to Cocoa in that there's no token delete button most of the time, and just like in Cocoa there are more controls available on hover. (Although in Cocoa there's a disclosure arrow and we have a close button instead.) --- AppKit/CPTokenField.j | 22 ++++++++++++++++++++++ AppKit/Themes/Aristo/ThemeDescriptors.j | 13 +++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 396cbf6ce..5bc5828f2 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -1338,6 +1338,28 @@ var CPScrollDestinationNone = 0, [self setNeedsLayout]; } +- (BOOL)setThemeState:(CPThemeState)aState +{ + var r = [super setThemeState:aState]; + + // Share hover state with the delete button. + if (r && aState === CPThemeStateHovered) + [_deleteButton setThemeState:aState]; + + return r; +} + +- (BOOL)unsetThemeState:(CPThemeState)aState +{ + var r = [super unsetThemeState:aState]; + + // Share hover state with the delete button. + if (r && aState === CPThemeStateHovered) + [_deleteButton unsetThemeState:aState]; + + return r; +} + - (CGSize)_minimumFrameSize { var size = _CGSizeMakeZero(), diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 5c77deb67..4eaa51738 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1089,7 +1089,7 @@ var themedButtonValues = nil, [@"text-color", textHighlightedColor, CPThemeStateHighlighted], [@"bezel-inset", CGInsetMakeZero(), CPThemeStateBezeled], - [@"content-inset", CGInsetMake(2.0, 22.0, 2.0, 15.0), CPThemeStateBezeled], + [@"content-inset", CGInsetMake(2.0, 20.0, 2.0, 20.0), CPThemeStateBezeled], // Minimum height == maximum height since tokens are fixed height. [@"min-size", CGSizeMake(0.0, 19.0)], @@ -1112,16 +1112,17 @@ var themedButtonValues = nil, themeValues = [ - [@"bezel-color", bezelColor, CPThemeStateBordered], - [@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-color", bezelColor, CPThemeStateBordered | CPThemeStateHovered], + [@"bezel-color", [bezelColor colorWithAlphaComponent:0], CPThemeStateBordered | CPThemeStateDisabled], + [@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted], [@"min-size", CGSizeMake(8.0, 8.0)], [@"max-size", CGSizeMake(8.0, 8.0)], - [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered], - [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered | CPThemeStateHighlighted], + [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered], + [@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered | CPThemeStateHighlighted], - [@"offset", CGPointMake(17, 6), CPThemeStateBordered] + [@"offset", CGPointMake(17, 6), CPThemeStateBordered] ]; [self registerThemeValues:themeValues forView:button];