From 8420f6ccfe894098115bcb17c07ef901e56dcc9d Mon Sep 17 00:00:00 2001 From: Christophe Serafin Date: Tue, 2 Sep 2014 17:39:33 -0700 Subject: [PATCH] Fixed: CPRadioGroup were truncated Since PR #2170, CPRadioGroup were truncated because they are specific components translated into a NSMatrix (CPView) object. This fix sets CPRadio controlSize according to xCode value and uses its frame adjustment to adjust CPRadio inside a CPRadioGroup. --- AppKit/Themes/Aristo/ThemeDescriptors.j | 77 ++++++++++++++++++------ AppKit/Themes/Aristo2/ThemeDescriptors.j | 6 +- Tools/nib2cib/NSMatrix.j | 16 +++++ 3 files changed, 77 insertions(+), 22 deletions(-) diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index 394213d85..8b64c950c 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1868,31 +1868,70 @@ var themedButtonValues = nil, { var button = [CPRadio radioWithTitle:@"Hello Friend!"], - imageNormal = PatternImage("radio-image.png", 17.0, 17.0), - imageSelected = PatternImage("radio-image-selected.png", 17.0, 17.0), - imageSelectedHighlighted = PatternImage("radio-image-selected-highlighted.png", 17.0, 17.0), - imageSelectedDisabled = PatternImage("radio-image-selected-disabled.png", 17.0, 17.0), - imageDisabled = PatternImage("radio-image-disabled.png", 17.0, 17.0), - imageHighlighted = PatternImage("radio-image-highlighted.png", 17.0, 17.0), + regularImageNormal = PatternImage("radio-image.png", 17.0, 17.0), + regularImageSelected = PatternImage("radio-image-selected.png", 17.0, 17.0), + regularImageSelectedHighlighted = PatternImage("radio-image-selected-highlighted.png", 17.0, 17.0), + regularImageSelectedDisabled = PatternImage("radio-image-selected-disabled.png", 17.0, 17.0), + regularImageDisabled = PatternImage("radio-image-disabled.png", 17.0, 17.0), + regularImageHighlighted = PatternImage("radio-image-highlighted.png", 17.0, 17.0), + + smallImageNormal = PatternImage("radio-image.png", 15.0, 15.0), + smallImageSelected = PatternImage("radio-image-selected.png", 15.0, 15.0), + smallImageSelectedHighlighted = PatternImage("radio-image-selected-highlighted.png", 15.0, 15.0), + smallImageSelectedDisabled = PatternImage("radio-image-selected.png", 15.0, 15.0), + smallImageDisabled = PatternImage("radio-image.png", 15.0, 15.0), + smallImageHighlighted = PatternImage("radio-image-highlighted.png", 15.0, 15.0), + + miniImageNormal = PatternImage("radio-image.png", 14.0, 14.0), + miniImageSelected = PatternImage("radio-image-selected.png", 14.0, 14.0), + miniImageSelectedHighlighted = PatternImage("radio-image-selected-highlighted.png", 14.0, 14.0), + miniImageSelectedDisabled = PatternImage("radio-image-selected.png", 14.0, 14.0), + miniImageDisabled = PatternImage("radio-image.png", 14.0, 14.0), + miniImageHighlighted = PatternImage("radio-image-highlighted.png", 14.0, 14.0); themeValues = [ - [@"alignment", CPLeftTextAlignment, CPThemeStateNormal], - [@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal], + [@"alignment", CPLeftTextAlignment, CPThemeStateNormal], + [@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal], - [@"image", imageNormal, CPThemeStateNormal], - [@"image", imageSelected, CPThemeStateSelected], - [@"image", imageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], - [@"image", imageHighlighted, CPThemeStateHighlighted], - [@"image", imageDisabled, CPThemeStateDisabled], - [@"image", imageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], - [@"image-offset", CPRadioImageOffset], + [@"image", regularImageNormal, CPThemeStateNormal], + [@"image", regularImageSelected, CPThemeStateSelected], + [@"image", regularImageSelectedHighlighted, [CPThemeStateSelected, CPThemeStateHighlighted]], + [@"image", regularImageHighlighted, CPThemeStateHighlighted], + [@"image", regularImageDisabled, CPThemeStateDisabled], + [@"image", regularImageSelectedDisabled, [CPThemeStateSelected, CPThemeStateDisabled]], + [@"image-offset", CPRadioImageOffset], - [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateNormal], - [@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0], CPThemeStateDisabled], + [@"font", [CPFont systemFontOfSize:CPFontCurrentSystemSize], CPThemeStateNormal], + [@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0], CPThemeStateDisabled], - [@"min-size", CGSizeMake(0.0, 17.0)], - [@"max-size", CGSizeMake(-1.0, -1.0)] + [@"min-size", CGSizeMake(0.0, 17.0)], + [@"max-size", CGSizeMake(-1.0, -1.0)], + [@"nib2cib-adjustment-frame", CGRectMake(0.0, -2.0, 0.0, 0.0)], + + // CPThemeStateControlSizeSmall + [@"image", smallImageNormal, [CPThemeStateControlSizeSmall, CPThemeStateNormal]], + [@"image", smallImageSelected, [CPThemeStateControlSizeSmall, CPThemeStateSelected]], + [@"image", smallImageSelectedHighlighted, [CPThemeStateControlSizeSmall, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"image", smallImageHighlighted, [CPThemeStateControlSizeSmall, CPThemeStateHighlighted]], + [@"image", smallImageDisabled, [CPThemeStateControlSizeSmall, CPThemeStateDisabled]], + [@"image", smallImageSelectedDisabled, [CPThemeStateControlSizeSmall, CPThemeStateSelected, CPThemeStateDisabled]], + + [@"min-size", CGSizeMake(0, 15.0), CPThemeStateControlSizeSmall], + [@"max-size", CGSizeMake(-1, 15.0), CPThemeStateControlSizeSmall], + [@"nib2cib-adjustment-frame", CGRectMake(2.0, -3.0, 0.0, 0.0), CPThemeStateControlSizeSmall], + + // CPThemeStateControlSizeMini + [@"image", miniImageNormal, [CPThemeStateControlSizeMini, CPThemeStateNormal]], + [@"image", miniImageSelected, [CPThemeStateControlSizeMini, CPThemeStateSelected]], + [@"image", miniImageSelectedHighlighted, [CPThemeStateControlSizeMini, CPThemeStateSelected, CPThemeStateHighlighted]], + [@"image", miniImageHighlighted, [CPThemeStateControlSizeMini, CPThemeStateHighlighted]], + [@"image", miniImageDisabled, [CPThemeStateControlSizeMini, CPThemeStateDisabled]], + [@"image", miniImageSelectedDisabled, [CPThemeStateControlSizeMini, CPThemeStateSelected, CPThemeStateDisabled]], + + [@"min-size", CGSizeMake(0, 14.0), CPThemeStateControlSizeMini], + [@"max-size", CGSizeMake(-1, 14.0), CPThemeStateControlSizeMini], + [@"nib2cib-adjustment-frame", CGRectMake(4.0, -3.0, 0.0, 0.0), CPThemeStateControlSizeMini], ]; [self registerThemeValues:themeValues forView:button]; diff --git a/AppKit/Themes/Aristo2/ThemeDescriptors.j b/AppKit/Themes/Aristo2/ThemeDescriptors.j index 9abce6b8c..039d4753b 100644 --- a/AppKit/Themes/Aristo2/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo2/ThemeDescriptors.j @@ -1404,7 +1404,7 @@ var themedButtonValues = nil, [@"min-size", CGSizeMake(21.0, 21.0)], [@"max-size", CGSizeMake(-1.0, -1.0)], - [@"nib2cib-adjustment-frame", CGRectMake(-10.0, 2.0, 0.0, 0.0)], + [@"nib2cib-adjustment-frame", CGRectMake(0.0, -2.0, 0.0, 0.0)], // CPThemeStateControlSizeSmall [@"image", smallImageNormal, [CPThemeStateControlSizeSmall, CPThemeStateNormal]], @@ -1416,7 +1416,7 @@ var themedButtonValues = nil, [@"min-size", CGSizeMake(0, 20.0), CPThemeStateControlSizeSmall], [@"max-size", CGSizeMake(-1, 20.0), CPThemeStateControlSizeSmall], - [@"nib2cib-adjustment-frame", CGRectMake(-4.0, 2.0, 15.0, 0.0), CPThemeStateControlSizeSmall], + [@"nib2cib-adjustment-frame", CGRectMake(0.0, -3.0, 0.0, 0.0), CPThemeStateControlSizeSmall], // CPThemeStateControlSizeMini [@"image", miniImageNormal, [CPThemeStateControlSizeMini, CPThemeStateNormal]], @@ -1428,7 +1428,7 @@ var themedButtonValues = nil, [@"min-size", CGSizeMake(0, 16.0), CPThemeStateControlSizeMini], [@"max-size", CGSizeMake(-1, 16.0), CPThemeStateControlSizeMini], - [@"nib2cib-adjustment-frame", CGRectMake(0.0, 2.0, 15.0, 0.0), CPThemeStateControlSizeMini], + [@"nib2cib-adjustment-frame", CGRectMake(2.0, -3.0, 0.0, 0.0), CPThemeStateControlSizeMini], ]; [self registerThemeValues:themedRadioButtonValues forView:button]; diff --git a/Tools/nib2cib/NSMatrix.j b/Tools/nib2cib/NSMatrix.j index ca5cbdc69..71af3c097 100644 --- a/Tools/nib2cib/NSMatrix.j +++ b/Tools/nib2cib/NSMatrix.j @@ -119,9 +119,25 @@ var NSMatrixRadioModeMask = 0x40000000, [self setObjectValue:[aCell objectValue]]; [self setEnabled:[aCell isEnabled]]; [self setTag:[aCell tag]]; + [self setControlSize:[aCell controlSize]]; + [self _adjustWidthSize]; } return self; } +// We adjust width according to the CPRadio adjustment frame. +// Very specific as NSMatrix does not have a frame adjustment. +- (void)_adjustWidthSize +{ + var frameSize = [self frameSize], + frameAdjustment = [self _nib2CibAdjustment]; + + if (frameAdjustment) + { + var finalFrameSize = CGSizeMake(frameSize.width + frameAdjustment.size.width, frameSize.height); + [self setFrameSize:finalFrameSize]; + } +} + @end