Fixed: table cells were not initialized from xib settings

This is a second attempt to fix the problems addressed by 69bbe627a9.

Because table cell classes needed to use the same initialization code as the NS_initWithCoder methods, it was necessary to refactor the initialization code into separate NS_initWithCell methods and call them separately from NS_initWithCoder.
This commit is contained in:
Aparajita Fishman committed 2013-02-27 18:02:55 -05:00
1 parent 07f9b94548
commit 9ea3b70143
22 files changed
+376 -286

No files matched your search

+9 -3
View File
@@ -51,12 +51,18 @@
@end
@implementation NSBrowser : CPBrowser
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+13 -13
View File
@@ -66,23 +66,17 @@ var NSButtonIsBorderedMask = 0x00800000,
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
self = [self NS_initWithCell:cell];
}
return self;
return [super NS_initWithCoder:aCoder];
}
/*!
Intialise a button given a cell. This method is meant for reuse by controls which contain
cells other than CPButton itself.
*/
- (id)NS_initWithCell:(NSCell)cell
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
var alternateImage = [cell alternateImage],
positionOffsetSizeWidth = 0,
positionOffsetOriginX = 0,
@@ -275,8 +269,6 @@ var NSButtonIsBorderedMask = 0x00800000,
_highlightsBy = [cell highlightsBy];
_showsStateBy = [cell showsStateBy];
return self;
}
@end
@@ -285,7 +277,15 @@ var NSButtonIsBorderedMask = 0x00800000,
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+9 -1
View File
@@ -59,7 +59,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+32 -26
View File
@@ -32,35 +32,33 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
return [super NS_initWithCoder:aCoder];
}
if (self)
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
_items = [cell itemList];
_usesDataSource = [cell usesDataSource];
_completes = [cell completes];
_numberOfVisibleItems = [cell visibleItemCount];
_hasVerticalScroller = [cell hasVerticalScroller];
[self setButtonBordered:[cell borderedButton]];
// Make sure the height is clipped to the max given by the theme
var maxSize = [[[Converter sharedConverter] themes][0] valueForAttributeWithName:@"max-size" forClass:[CPComboBox class]],
size = [self frameSize],
widthOffset = -3;
// Adjust for differences between Cocoa and Cappuccino widget framing.
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo")
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
_items = [cell itemList];
_usesDataSource = [cell usesDataSource];
_completes = [cell completes];
_numberOfVisibleItems = [cell visibleItemCount];
_hasVerticalScroller = [cell hasVerticalScroller];
[self setButtonBordered:[cell borderedButton]];
// Make sure the height is clipped to the max given by the theme
var maxSize = [[[Converter sharedConverter] themes][0] valueForAttributeWithName:@"max-size" forClass:[CPComboBox class]],
size = [self frameSize],
widthOffset = -3;
// Adjust for differences between Cocoa and Cappuccino widget framing.
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo")
{
_frame.origin.x += 1;
widthOffset = -5;
}
[self setFrameSize:CGSizeMake(size.width + widthOffset, MIN(size.height, maxSize.height))];
_frame.origin.x += 1;
widthOffset = -5;
}
return self;
[self setFrameSize:CGSizeMake(size.width + widthOffset, MIN(size.height, maxSize.height))];
}
@end
@@ -69,7 +67,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+21 -18
View File
@@ -34,29 +34,15 @@
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self sendActionOn:CPLeftMouseUpMask];
[self setSendsActionOnEndEditing:[cell sendsActionOnEndEditing]];
[self setObjectValue:[cell objectValue]];
[self setFont:[cell font]];
[self setAlignment:[cell alignment]];
// Enabled state is derived from the NSEnabled flag or the control's cell.
// For example NSTableView uses the NSEnabled flag, but NSButton uses it's cell isEnabled state.
// We use the NSEnabled flag here and override the behavior in controls using different logic (NSButton).
[self setEnabled:[aCoder decodeBoolForKey:@"NSEnabled"]];
[self setContinuous:[cell isContinuous]];
[self sendActionOn:CPLeftMouseUpMask];
[self setTarget:[aCoder decodeObjectForKey:@"NSTarget"]];
[self setAction:[aCoder decodeObjectForKey:@"NSAction"]];
[self setLineBreakMode:[cell lineBreakMode]];
[self setFormatter:[cell formatter]];
// In IB, both cells and controls can have tags.
// If the control has a tag, that takes precedence.
if ([aCoder containsValueForKey:@"NSTag"])
@@ -66,15 +52,32 @@
return self;
}
- (void)NS_initWithCell:(NSCell)cell
{
[self setSendsActionOnEndEditing:[cell sendsActionOnEndEditing]];
[self setObjectValue:[cell objectValue]];
[self setFont:[cell font]];
[self setAlignment:[cell alignment]];
[self setContinuous:[cell isContinuous]];
[self setLineBreakMode:[cell lineBreakMode]];
[self setFormatter:[cell formatter]];
}
@end
@implementation NSControl : CPControl
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+17 -13
View File
@@ -29,29 +29,33 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
return [super NS_initWithCoder:aCoder];
}
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
[self setImageScaling:[cell imageScaling]];
[self setImageAlignment:[cell imageAlignment]];
_isEditable = [cell isEditable];
}
return self;
[self setImageScaling:[cell imageScaling]];
[self setImageAlignment:[cell imageAlignment]];
_isEditable = [cell isEditable];
}
@end
@implementation NSImageView : CPImageView
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [super NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+13 -12
View File
@@ -35,22 +35,17 @@
_minValue = [cell minValue];
_maxValue = [cell maxValue];
self = [super NS_initWithCoder:aCoder];
if (self)
{
self = [self NS_initWithCell:cell];
}
return self;
return [super NS_initWithCoder:aCoder];
}
/*!
Intialise the receiver given a cell. This method is meant for reuse by controls which contain
cells other than CPLevelIndicator itself.
*/
- (id)NS_initWithCell:(NSCell)cell
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
_minValue = [cell minValue];
_maxValue = [cell maxValue];
_levelIndicatorStyle = [cell levelIndicatorStyle];
@@ -63,8 +58,6 @@
[self setEditable:[cell isEditable]];
[self setEnabled:[cell isEnabled]];
[self setContinuous:[cell isContinuous]];
return self;
}
@end
@@ -75,7 +68,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+9 -1
View File
@@ -57,7 +57,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+22 -15
View File
@@ -30,23 +30,22 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
if (self = [super NS_initWithCoder:aCoder])
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
return [super NS_initWithCoder:aCoder];
}
_menu = [cell menu];
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
// adjust the frame
_frame.origin.x -= 4;
_frame.origin.y -= 4;
_frame.size.width += 7;
_bounds.size.width += 7;
_menu = [cell menu];
[self setPullsDown:[cell pullsDown]];
_preferredEdge = [cell preferredEdge];
[self setPullsDown:[cell pullsDown]];
_preferredEdge = [cell preferredEdge];
}
return self;
// adjust the frame
_frame.origin.x -= 4;
_frame.origin.y -= 4;
_frame.size.width += 7;
_bounds.size.width += 7;
}
@end
@@ -57,7 +56,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+9 -1
View File
@@ -44,7 +44,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+9 -1
View File
@@ -65,7 +65,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+9 -1
View File
@@ -76,7 +76,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+21 -18
View File
@@ -31,27 +31,24 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
return [super NS_initWithCoder:aCoder];
}
if (self)
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
[self setRecentsAutosaveName:[cell recentsAutosaveName]];
[self setMaximumRecents:[cell maximumRecents]];
[self setSendsWholeSearchString:[cell sendsWholeSearchString]];
[self setSendsSearchStringImmediately:[cell sendsSearchStringImmediately]];
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo" && [self isBezeled])
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self setRecentsAutosaveName:[cell recentsAutosaveName]];
[self setMaximumRecents:[cell maximumRecents]];
[self setSendsWholeSearchString:[cell sendsWholeSearchString]];
[self setSendsSearchStringImmediately:[cell sendsSearchStringImmediately]];
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo" && [self isBezeled])
{
// NSTextField.j makes the field +7.0 pixels tall. We want +8.0 to go to 30.
var frame = [self frame];
[self setFrameSize:CGSizeMake(frame.size.width, frame.size.height)];
}
// NSTextField.j makes the field +7.0 pixels tall. We want +8.0 to go to 30.
var frame = [self frame];
[self setFrameSize:CGSizeMake(frame.size.width, frame.size.height)];
}
return self;
}
@end
@@ -64,6 +61,12 @@
{
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
+9 -1
View File
@@ -31,7 +31,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+44 -36
View File
@@ -34,45 +34,45 @@
_segments = [];
_themeStates = [];
if (self = [super NS_initWithCoder:aCoder])
return [super NS_initWithCoder:aCoder];
}
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
var frame = [self frame],
originalWidth = frame.size.width;
frame.size.width = 0;
frame.origin.x = MAX(frame.origin.x - 4.0, 0.0);
[self setFrame:frame];
_segments = [cell segments];
_selectedSegment = [cell selectedSegment];
_segmentStyle = [cell segmentStyle];
_trackingMode = [cell trackingMode];
[self setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"];
// HACK
for (var i = 0; i < _segments.length; i++)
{
var frame = [self frame],
originalWidth = frame.size.width;
_themeStates[i] = _segments[i].selected ? CPThemeStateSelected : CPThemeStateNormal;
frame.size.width = 0;
frame.origin.x = MAX(frame.origin.x - 4.0, 0.0);
[self setFrame:frame];
var cell = [aCoder decodeObjectForKey:"NSCell"];
_segments = [cell segments];
_selectedSegment = [cell selectedSegment];
_segmentStyle = [cell segmentStyle];
_trackingMode = [cell trackingMode];
[self setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"];
// HACK
for (var i = 0; i < _segments.length; i++)
{
_themeStates[i] = _segments[i].selected ? CPThemeStateSelected : CPThemeStateNormal;
[self tileWithChangedSegment:i];
}
// Adjust for differences between Cocoa and Cappuccino widget framing.
frame.origin.x += 6;
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo2")
frame.size.height += 1;
frame.size.width = originalWidth;
[self setFrame:frame];
[self tileWithChangedSegment:i];
}
return self;
// Adjust for differences between Cocoa and Cappuccino widget framing.
frame.origin.x += 6;
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo2")
frame.size.height += 1;
frame.size.width = originalWidth;
[self setFrame:frame];
}
@end
@@ -83,7 +83,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+23 -16
View File
@@ -35,23 +35,15 @@
_minValue = [cell minValue];
_maxValue = [cell maxValue];
self = [super NS_initWithCoder:aCoder];
return [super NS_initWithCoder:aCoder];
}
if (self)
{
_altIncrementValue = [cell altIncrementValue];
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
[self setSliderType:[cell sliderType]];
var frame = [self frame];
if ([self sliderType] === CPCircularSlider)
[self setFrameSize:CGSizeMake(frame.size.width + 2.0, frame.size.height + 2.0)];
else
[self setFrame:CGRectMake(frame.origin.x + 2, frame.origin.y, frame.size.width - 4, frame.size.height)];
}
return self;
_altIncrementValue = [cell altIncrementValue];
[self setSliderType:[cell sliderType]];
}
@end
@@ -62,7 +54,22 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
var frame = [self frame];
if ([self sliderType] === CPCircularSlider)
[self setFrameSize:CGSizeMake(frame.size.width + 2.0, frame.size.height + 2.0)];
else
[self setFrame:CGRectMake(frame.origin.x + 2, frame.origin.y, frame.size.width - 4, frame.size.height)];
}
return self;
}
- (Class)classForKeyedArchiver
+24 -20
View File
@@ -29,37 +29,41 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
return [super NS_initWithCoder:aCoder];
}
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
self._minValue = [cell minValue];
self._maxValue = [cell maxValue];
self._increment = [cell increment];
self._valueWraps = [cell valueWraps];
self._autorepeat = [cell autorepeat];
self._objectValue = [cell objectValue];
self._minValue = [cell minValue];
self._maxValue = [cell maxValue];
self._increment = [cell increment];
self._valueWraps = [cell valueWraps];
self._autorepeat = [cell autorepeat];
self._objectValue = [cell objectValue];
// Convert Cocoa normal size to Cappuccino normal size.
self._frame.origin.y += 2;
self._frame.size.height -= 2;
self._bounds.size.height -= 2;
}
return self;
// Convert Cocoa normal size to Cappuccino normal size.
self._frame.origin.y += 2;
self._frame.size.height -= 2;
self._bounds.size.height -= 2;
}
@end
@implementation NSStepper : CPStepper
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+2 -6
View File
@@ -4,17 +4,13 @@
@implementation CPTableCellView (NSCoding)
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
return self;
{
return [super NS_initWithCoder:aCoder];
}
@end
@implementation NSTableCellView : CPTableCellView
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
+5 -17
View File
@@ -49,14 +49,14 @@ var IBDefaultFontSizeTableHeader = 11.0;
if ([dataViewCell isKindOfClass:[NSImageCell class]])
{
_dataView = [[CPImageView alloc] initWithFrame:CGRectMakeZero()];
[_dataView setImageScaling:[dataViewCell imageScaling]];
[_dataView setImageAlignment:[dataViewCell imageAlignment]];
[_dataView NS_initWithCell:dataViewCell];
}
else if ([dataViewCell isKindOfClass:[NSTextFieldCell class]])
{
_dataView = [[CPTextField alloc] initWithFrame:CGRectMakeZero()];
[_dataView NS_initWithCell:dataViewCell];
var font = [dataViewCell font],
var font = [_dataView font],
selectedFont = nil;
if (font)
@@ -69,28 +69,16 @@ var IBDefaultFontSizeTableHeader = 11.0;
[_dataView setFont:font];
[_dataView setValue:selectedFont forThemeAttribute:@"font" inState:CPThemeStateSelectedDataView];
[_dataView setLineBreakMode:CPLineBreakByTruncatingTail];
[_dataView setValue:CPCenterVerticalTextAlignment forThemeAttribute:@"vertical-alignment"];
[_dataView setValue:CGInsetMake(0.0, 5.0, 0.0, 5.0) forThemeAttribute:@"content-inset"];
var textColor = [dataViewCell textColor],
defaultColor = [_dataView currentValueForThemeAttribute:@"text-color"];
// Don't change the text color if it is not the default, that messes up the theme lookups later
if (![textColor isEqual:defaultColor])
[_dataView setTextColor:[dataViewCell textColor]];
}
else if ([dataViewCell isKindOfClass:[NSButtonCell class]])
{
_dataView = [[CPButton alloc] initWithFrame:CGRectMakeZero()];
_dataView = [_dataView NS_initWithCell:dataViewCell];
[_dataView NS_initWithCell:dataViewCell];
}
else if ([dataViewCell isKindOfClass:[NSLevelIndicatorCell class]])
{
_dataView = [[CPLevelIndicator alloc] initWithFrame:CGRectMakeZero()];
_dataView = [_dataView NS_initWithCell:dataViewCell];
[_dataView NS_initWithCell:dataViewCell];
}
[_dataView setValue:[dataViewCell alignment] forThemeAttribute:@"alignment"];
+10 -2
View File
@@ -63,7 +63,7 @@
_tableColumns = [aCoder decodeObjectForKey:@"NSTableColumns"];
[_tableColumns makeObjectsPerformSelector:@selector(setTableView:) withObject:self];
_archivedDataViews = [aCoder decodeObjectForKey:@"NSTableViewArchivedReusableViewsKey"];
_intercellSpacing = CGSizeMake([aCoder decodeFloatForKey:@"NSIntercellSpacingWidth"],
@@ -99,7 +99,15 @@
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+53 -50
View File
@@ -30,68 +30,71 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
return [super NS_initWithCoder:aCoder];
}
if (self)
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
[self setEditable:[cell isEditable]];
[self setSelectable:[cell isSelectable]];
[self setSendsActionOnEndEditing:[cell sendsActionOnEndEditing]];
[self setBordered:[cell isBordered]];
[self setBezeled:[cell isBezeled]];
[self setBezelStyle:[cell bezelStyle]];
[self setDrawsBackground:[cell drawsBackground]];
[self setLineBreakMode:[cell lineBreakMode]];
[self setAlignment:[cell alignment]];
[self setTextFieldBackgroundColor:[cell backgroundColor]];
[self setPlaceholderString:[cell placeholderString]];
var textColor = [cell textColor],
defaultColor = [self currentValueForThemeAttribute:@"text-color"];
// Don't change the text color if it is not the default, that messes up the theme lookups later
if (![textColor isEqual:defaultColor])
[self setTextColor:[cell textColor]];
// Only adjust the origin and size if this is a bezeled textfield.
// This ensures that labels positioned in IB are properly positioned after nibcib.
var frame = [self frame];
if ([self isBezeled])
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self sendActionOn:CPKeyUpMask | CPKeyDownMask];
[self setEditable:[cell isEditable]];
[self setSelectable:[cell isSelectable]];
[self setBordered:[cell isBordered]];
[self setBezeled:[cell isBezeled]];
[self setBezelStyle:[cell bezelStyle]];
[self setDrawsBackground:[cell drawsBackground]];
[self setLineBreakMode:[cell lineBreakMode]];
[self setAlignment:[cell alignment]];
[self setTextFieldBackgroundColor:[cell backgroundColor]];
[self setPlaceholderString:[cell placeholderString]];
var textColor = [cell textColor],
defaultColor = [self currentValueForThemeAttribute:@"text-color"];
// Don't change the text color if it is not the default, that messes up the theme lookups later
if (![textColor isEqual:defaultColor])
[self setTextColor:[cell textColor]];
// Only adjust the origin and size if this is a bezeled textfield.
// This ensures that labels positioned in IB are properly positioned after nibcib.
var frame = [self frame];
if ([self isBezeled])
{
[self setFrameOrigin:CGPointMake(frame.origin.x - 4.0, frame.origin.y - 3.0)];
[self setFrameSize:CGSizeMake(frame.size.width + 8.0, frame.size.height + 7.0)];
}
else
{
[self setFrameOrigin:CGPointMake(frame.origin.x + 3.0, frame.origin.y)];
[self setFrameSize:CGSizeMake(frame.size.width - 6.0, frame.size.height)];
}
CPLog.debug("NSTextField: title=\"" + [self stringValue] + "\", placeholder=" + ([cell placeholderString] == null ? "<none>" : '"' + [cell placeholderString] + '"') + ", isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle]);
if ([self formatter])
CPLog.debug(">> Formatter: " + [[self formatter] description]);
[self setFrameOrigin:CGPointMake(frame.origin.x - 4.0, frame.origin.y - 3.0)];
[self setFrameSize:CGSizeMake(frame.size.width + 8.0, frame.size.height + 7.0)];
}
else
{
[self setFrameOrigin:CGPointMake(frame.origin.x + 3.0, frame.origin.y)];
[self setFrameSize:CGSizeMake(frame.size.width - 6.0, frame.size.height)];
}
return self;
CPLog.debug("NSTextField: title=\"" + [self stringValue] + "\", placeholder=" + ([cell placeholderString] == null ? "<none>" : '"' + [cell placeholderString] + '"') + ", isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle]);
if ([self formatter])
CPLog.debug(">> Formatter: " + [[self formatter] description]);
}
@end
@implementation NSTextField : CPTextField
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver
+13 -15
View File
@@ -31,38 +31,36 @@
- (id)NS_initWithCoder:(CPCoder)aCoder
{
self = [super NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
self = [self NS_initWithCell:cell];
}
return self;
return [super NS_initWithCoder:aCoder];
}
/*!
Intialise the receiver given a cell. This method is meant for reuse by controls which contain
cells other than CPTokenField itself.
*/
- (id)NS_initWithCell:(NSCell)cell
- (void)NS_initWithCell:(NSCell)cell
{
[super NS_initWithCell:cell];
// Uncomment if we add support for token styles.
// _style = [cell tokenStyle];
return self;
}
@end
@implementation NSTokenField : CPTokenField
{
}
- (id)initWithCoder:(CPCoder)aCoder
{
return [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
if (self)
{
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self NS_initWithCell:cell];
}
return self;
}
- (Class)classForKeyedArchiver