mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-31 04:17:36 +00:00
fixed: preproc. leftovers
This commit is contained in:
1 parent
3bb8693e8e
commit
09c855daca
9 files changed
+196
-161
No files matched your search
+4
-3
@@ -573,9 +573,10 @@ var CPComboBoxTextSubview = @"text",
|
||||
|
||||
[self _updatePlaceholderState];
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
[self _setCSSStyleForInputElement];
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
[self _setCSSStyleForInputElement];
|
||||
}
|
||||
|
||||
[self _reverseSetBinding];
|
||||
|
||||
|
||||
+49
-42
@@ -25,6 +25,7 @@
|
||||
@import "CPControl.j"
|
||||
@import "CPImage.j"
|
||||
@import "CPShadowView.j"
|
||||
@import "CPDOMDisplayServer.j"
|
||||
|
||||
@global CPImagesPboardType
|
||||
@global appkit_tag_dom_elements
|
||||
@@ -89,9 +90,10 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
|
||||
if (self)
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
[self _createDOMImageElement];
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
[self _createDOMImageElement];
|
||||
}
|
||||
}
|
||||
|
||||
return self;
|
||||
@@ -99,7 +101,9 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
|
||||
- (void)_createDOMImageElement
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
if (!CPDOMAvailable)
|
||||
return;
|
||||
|
||||
var image = [self objectValue],
|
||||
isCSSBasedImage = [image isCSSBased],
|
||||
isIMGImageElement = _DOMImageElement && (_DOMImageElement.nodeName == "IMG");
|
||||
@@ -140,7 +144,6 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
AppKitTagDOMElement(self, _DOMImageElement);
|
||||
|
||||
CPDOMDisplayServerAppendChild(_DOMElement, _DOMImageElement);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -173,17 +176,18 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
|
||||
var newImage = [self objectValue];
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
[self _createDOMImageElement];
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
[self _createDOMImageElement];
|
||||
|
||||
if ([newImage isCSSBased])
|
||||
_cssStyleNode = [newImage applyCSSImageForView:self
|
||||
onDOMElement:_DOMImageElement
|
||||
styleNode:_cssStyleNode
|
||||
previousState:@ref(_cssStylePreviousState)];
|
||||
else
|
||||
_DOMImageElement.src = newImage ? [newImage filename] : [CPImageViewEmptyPlaceholderImage filename];
|
||||
#endif
|
||||
if ([newImage isCSSBased])
|
||||
_cssStyleNode = [newImage applyCSSImageForView:self
|
||||
onDOMElement:_DOMImageElement
|
||||
styleNode:_cssStyleNode
|
||||
previousState:@ref(_cssStylePreviousState)];
|
||||
else
|
||||
_DOMImageElement.src = newImage ? [newImage filename] : [CPImageViewEmptyPlaceholderImage filename];
|
||||
}
|
||||
|
||||
var size = [newImage size];
|
||||
|
||||
@@ -191,10 +195,11 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
{
|
||||
[defaultCenter addObserver:self selector:@selector(imageDidLoad:) name:CPImageDidLoadNotification object:newImage];
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
_DOMImageElement.width = 0;
|
||||
_DOMImageElement.height = 0;
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_DOMImageElement.width = 0;
|
||||
_DOMImageElement.height = 0;
|
||||
}
|
||||
|
||||
[_shadowView setHidden:YES];
|
||||
}
|
||||
@@ -289,12 +294,10 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
{
|
||||
[super setImageScaling:anImageScaling];
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
if ([self currentValueForThemeAttribute:@"image-scaling"] === CPImageScaleAxesIndependently)
|
||||
if (CPDOMAvailable && [self currentValueForThemeAttribute:@"image-scaling"] === CPImageScaleAxesIndependently)
|
||||
{
|
||||
CPDOMDisplayServerSetStyleLeftTop(_DOMImageElement, NULL, 0.0, 0.0);
|
||||
}
|
||||
#endif
|
||||
|
||||
[self setNeedsLayout];
|
||||
[self setNeedsDisplay:YES];
|
||||
@@ -312,16 +315,18 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
{
|
||||
if (![self image])
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
_DOMImageElement.style.visibility = "hidden";
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_DOMImageElement.style.visibility = "hidden";
|
||||
}
|
||||
[_shadowView setHidden:YES];
|
||||
}
|
||||
else
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
_DOMImageElement.style.visibility = "visible";
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_DOMImageElement.style.visibility = "visible";
|
||||
}
|
||||
[_shadowView setHidden:NO];
|
||||
}
|
||||
}
|
||||
@@ -356,10 +361,11 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
|
||||
if (imageScaling === CPImageScaleAxesIndependently)
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_DOMImageElement.width = ROUND(width);
|
||||
_DOMImageElement.height = ROUND(height);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -397,10 +403,11 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
break;
|
||||
}
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_DOMImageElement.width = ROUND(width);
|
||||
_DOMImageElement.height = ROUND(height);
|
||||
#endif
|
||||
}
|
||||
|
||||
var x,
|
||||
y;
|
||||
@@ -443,13 +450,13 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
break;
|
||||
}
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
CPDOMDisplayServerSetStyleLeftTop(_DOMImageElement, NULL, x, y);
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
CPDOMDisplayServerSetStyleLeftTop(_DOMImageElement, NULL, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
if ([image isCSSBased] && [image _shouldBeResized])
|
||||
if (CPDOMAvailable && [image isCSSBased] && [image _shouldBeResized])
|
||||
{
|
||||
[image _setDisplaySize:CGSizeMake(ROUND(width), ROUND(height))];
|
||||
|
||||
@@ -459,12 +466,11 @@ var CPImageViewEmptyPlaceholderImage = nil;
|
||||
previousState:@ref(_cssStylePreviousState)];
|
||||
}
|
||||
|
||||
if ([image isCSSBased])
|
||||
if (CPDOMAvailable && [image isCSSBased])
|
||||
{
|
||||
_DOMImageElement.style.width = _DOMImageElement.width + 'px';
|
||||
_DOMImageElement.style.height = _DOMImageElement.height + 'px';
|
||||
}
|
||||
#endif
|
||||
|
||||
_imageRect = CGRectMake(x, y, width, height);
|
||||
|
||||
@@ -586,9 +592,10 @@ var CPImageViewImageKey = @"CPImageViewImageKey",
|
||||
|
||||
if (self)
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
[self _createDOMImageElement];
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
[self _createDOMImageElement];
|
||||
}
|
||||
|
||||
[self setHasShadow:[aCoder decodeBoolForKey:CPImageViewHasShadowKey]];
|
||||
[self setImageAlignment:[aCoder decodeIntForKey:CPImageViewImageAlignmentKey]];
|
||||
|
||||
+33
-29
@@ -2647,23 +2647,23 @@ function SHOULD_SELECT_ITEM(anOutlineView, anItem)
|
||||
{
|
||||
_isAnimatingClone = NO; // Default for real buttons
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
// Add a dedicated DOM element for the SVG arrow
|
||||
_arrowElement = document.createElement("div");
|
||||
_arrowElement.style.position = "absolute";
|
||||
_arrowElement.style.top = "0px";
|
||||
_arrowElement.style.left = "0px";
|
||||
_arrowElement.style.width = "100%";
|
||||
_arrowElement.style.height = "100%";
|
||||
_arrowElement.style.backgroundPosition = "center center";
|
||||
_arrowElement.style.backgroundRepeat = "no-repeat";
|
||||
// 24px maps the 24x24 viewBox to exact pixels, making the 10x5 path scale perfectly
|
||||
_arrowElement.style.backgroundSize = "24px 24px";
|
||||
_arrowElement.style.pointerEvents = "none";
|
||||
|
||||
// Add a dedicated DOM element for the SVG arrow
|
||||
_arrowElement = document.createElement("div");
|
||||
_arrowElement.style.position = "absolute";
|
||||
_arrowElement.style.top = "0px";
|
||||
_arrowElement.style.left = "0px";
|
||||
_arrowElement.style.width = "100%";
|
||||
_arrowElement.style.height = "100%";
|
||||
_arrowElement.style.backgroundPosition = "center center";
|
||||
_arrowElement.style.backgroundRepeat = "no-repeat";
|
||||
// 24px maps the 24x24 viewBox to exact pixels, making the 10x5 path scale perfectly
|
||||
_arrowElement.style.backgroundSize = "24px 24px";
|
||||
_arrowElement.style.pointerEvents = "none";
|
||||
|
||||
self._DOMElement.appendChild(_arrowElement);
|
||||
#endif
|
||||
self._DOMElement.appendChild(_arrowElement);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setAngle:(float)anAngle
|
||||
@@ -2673,9 +2673,10 @@ function SHOULD_SELECT_ITEM(anOutlineView, anItem)
|
||||
// Rotate the DOM element directly using standard CSS transforms
|
||||
var deg = _angle * (180.0 / Math.PI);
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
_arrowElement.style.transform = "rotate(" + deg + "deg)";
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_arrowElement.style.transform = "rotate(" + deg + "deg)";
|
||||
}
|
||||
|
||||
[self display];
|
||||
}
|
||||
@@ -2761,10 +2762,11 @@ function SHOULD_SELECT_ITEM(anOutlineView, anItem)
|
||||
- (void)drawRect:(CGRect)aRect
|
||||
{
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
if (_arrowElement && _arrowElement.parentNode !== self._DOMElement)
|
||||
self._DOMElement.appendChild(_arrowElement);
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
if (_arrowElement && _arrowElement.parentNode !== self._DOMElement)
|
||||
self._DOMElement.appendChild(_arrowElement);
|
||||
}
|
||||
|
||||
// If I am NOT the clone, I must check if my row is animating.
|
||||
// If it is animating, the clone is drawing on top of me, so I should be invisible.
|
||||
@@ -2777,9 +2779,10 @@ function SHOULD_SELECT_ITEM(anOutlineView, anItem)
|
||||
if (row !== CPNotFound && [outlineView _isRowAnimatingDisclosure:row])
|
||||
{
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
_arrowElement.style.display = "none";
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_arrowElement.style.display = "none";
|
||||
}
|
||||
return; // Suppress the real button
|
||||
}
|
||||
}
|
||||
@@ -2828,9 +2831,10 @@ function SHOULD_SELECT_ITEM(anOutlineView, anItem)
|
||||
var svgString = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7 10L12 15L17 10H7Z" fill="' + colorCSS + '"/></svg>';
|
||||
var b64 = window.btoa(svgString);
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
_arrowElement.style.backgroundImage = "url('data:image/svg+xml;charset=utf-8;base64," + b64 + "')";
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_arrowElement.style.backgroundImage = "url('data:image/svg+xml;charset=utf-8;base64," + b64 + "')";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,34 +77,34 @@ CPProgressIndicatorHUDBarStyle = 2;
|
||||
if (self !== [CPProgressIndicator class])
|
||||
return;
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
if (document.getElementById("cp-progress-indicator-style"))
|
||||
return;
|
||||
|
||||
if (document.getElementById("cp-progress-indicator-style"))
|
||||
return;
|
||||
var style = document.createElement("style");
|
||||
style.id = "cp-progress-indicator-style";
|
||||
style.type = "text/css";
|
||||
|
||||
var style = document.createElement("style");
|
||||
style.id = "cp-progress-indicator-style";
|
||||
style.type = "text/css";
|
||||
|
||||
// We define two animations:
|
||||
// 1. cp-progress-indicator-spin: Rotates 360 degrees (for spinners)
|
||||
// 2. cp-progress-indicator-bar-slide: Moves background-position (for striped bars)
|
||||
var css =
|
||||
"@keyframes cp-progress-indicator-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } " +
|
||||
"@-webkit-keyframes cp-progress-indicator-spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); } } " +
|
||||
|
||||
"@keyframes cp-progress-indicator-bar-slide { 0% { background-position: 0 0; } 100% { background-position: 30px 0; } } " +
|
||||
"@-webkit-keyframes cp-progress-indicator-bar-slide { 0% { background-position: 0 0; } 100% { background-position: 30px 0; } }";
|
||||
|
||||
if (style.styleSheet)
|
||||
style.styleSheet.cssText = css;
|
||||
else
|
||||
style.appendChild(document.createTextNode(css));
|
||||
|
||||
var head = document.getElementsByTagName("head")[0];
|
||||
if (head)
|
||||
head.appendChild(style);
|
||||
#endif
|
||||
// We define two animations:
|
||||
// 1. cp-progress-indicator-spin: Rotates 360 degrees (for spinners)
|
||||
// 2. cp-progress-indicator-bar-slide: Moves background-position (for striped bars)
|
||||
var css =
|
||||
"@keyframes cp-progress-indicator-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } " +
|
||||
"@-webkit-keyframes cp-progress-indicator-spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); } } " +
|
||||
|
||||
"@keyframes cp-progress-indicator-bar-slide { 0% { background-position: 0 0; } 100% { background-position: 30px 0; } } " +
|
||||
"@-webkit-keyframes cp-progress-indicator-bar-slide { 0% { background-position: 0 0; } 100% { background-position: 30px 0; } }";
|
||||
|
||||
if (style.styleSheet)
|
||||
style.styleSheet.cssText = css;
|
||||
else
|
||||
style.appendChild(document.createTextNode(css));
|
||||
|
||||
var head = document.getElementsByTagName("head")[0];
|
||||
if (head)
|
||||
head.appendChild(style);
|
||||
}
|
||||
}
|
||||
|
||||
+ (CPString)defaultThemeClass
|
||||
|
||||
@@ -127,10 +127,11 @@ var CPAutosavedRecentsChangedNotification = @"CPAutosavedRecentsChangedNotificat
|
||||
cancelButton = nil,
|
||||
searchButton = nil;
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
cancelButton = [[CPButton alloc] initWithFrame:[self cancelButtonRectForBounds:bounds]];
|
||||
searchButton = [[CPButton alloc] initWithFrame:[self searchButtonRectForBounds:bounds]];
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
cancelButton = [[CPButton alloc] initWithFrame:[self cancelButtonRectForBounds:bounds]];
|
||||
searchButton = [[CPButton alloc] initWithFrame:[self searchButtonRectForBounds:bounds]];
|
||||
}
|
||||
|
||||
[self setCancelButton:cancelButton];
|
||||
[self resetCancelButton];
|
||||
|
||||
@@ -700,10 +700,11 @@ CPSegmentSwitchTrackingMomentary = 2;
|
||||
|
||||
// Trick : Put selected segments over unselected ones to automaticaly manage borders
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
contentView._DOMElement.style.zIndex = ([segment selected] ? 1 : 0);
|
||||
bezelView._DOMElement.style.zIndex = ([segment selected] ? 1 : 0);
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
contentView._DOMElement.style.zIndex = ([segment selected] ? 1 : 0);
|
||||
bezelView._DOMElement.style.zIndex = ([segment selected] ? 1 : 0);
|
||||
}
|
||||
|
||||
[contentView setText:[segment label]];
|
||||
[contentView setImage:[segment image]];
|
||||
|
||||
+67
-48
@@ -119,15 +119,6 @@ CPTableViewReverseSequentialColumnAutoresizingStyle = 3;
|
||||
CPTableViewLastColumnOnlyAutoresizingStyle = 4;
|
||||
CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
|
||||
#define NUMBER_OF_COLUMNS() (_tableColumns.length)
|
||||
#define UPDATE_COLUMN_RANGES_IF_NECESSARY() \
|
||||
if (_dirtyTableColumnRangeIndex !== CPNotFound) \
|
||||
[self _recalculateTableColumnRanges];
|
||||
#define FULL_ROW_HEIGHT() (_rowHeight + _intercellSpacing.height)
|
||||
#define ROW_BOTTOM(__heightInfo) (__heightInfo.y + __heightInfo.height + _intercellSpacing.height)
|
||||
#define HAS_VARIABLE_ROW_HEIGHTS() (_implementedDelegateMethods & CPTableViewDelegate_tableView_heightOfRow_)
|
||||
|
||||
|
||||
@protocol CPTableViewDataSource <CPObject>
|
||||
|
||||
@optional
|
||||
@@ -226,7 +217,9 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
|
||||
- (void)updateState
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
if (!CPDOMAvailable)
|
||||
return;
|
||||
|
||||
var backgroundColor = nil;
|
||||
|
||||
if (_selected && [_tableView selectionHighlightStyle] != CPTableViewSelectionHighlightStyleNone)
|
||||
@@ -253,7 +246,6 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
|
||||
[self setBackgroundColor:backgroundColor];
|
||||
[self _updateGridLine];
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)_updateGridLine
|
||||
@@ -630,7 +622,9 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
|
||||
- (void)_updateSelectedColumnBackgrounds
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
if (!CPDOMAvailable)
|
||||
return;
|
||||
|
||||
// 1. Remove existing column background views
|
||||
[_selectedColumnBackgroundViews makeObjectsPerformSelector:@selector(removeFromSuperview)];
|
||||
[_selectedColumnBackgroundViews removeAllObjects];
|
||||
@@ -668,7 +662,6 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
||||
if (_visibleRowViews.hasOwnProperty(rowIndex))
|
||||
[self addSubview:_visibleRowViews[rowIndex] positioned:CPWindowBelow relativeTo:nil];
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1278,9 +1271,9 @@ NOT YET IMPLEMENTED
|
||||
[aTableColumn setTableView:self];
|
||||
|
||||
if (_dirtyTableColumnRangeIndex < 0)
|
||||
_dirtyTableColumnRangeIndex = NUMBER_OF_COLUMNS() - 1;
|
||||
_dirtyTableColumnRangeIndex = [self _numberOfColumns] - 1;
|
||||
else
|
||||
_dirtyTableColumnRangeIndex = MIN(NUMBER_OF_COLUMNS() - 1, _dirtyTableColumnRangeIndex);
|
||||
_dirtyTableColumnRangeIndex = MIN([self _numberOfColumns] - 1, _dirtyTableColumnRangeIndex);
|
||||
|
||||
if ([[self sortDescriptors] count] > 0)
|
||||
{
|
||||
@@ -1453,7 +1446,7 @@ NOT YET IMPLEMENTED
|
||||
- (CPInteger)columnWithIdentifier:(CPString)anIdentifier
|
||||
{
|
||||
var index = 0,
|
||||
count = NUMBER_OF_COLUMNS();
|
||||
count = [self _numberOfColumns];
|
||||
|
||||
for (; index < count; ++index)
|
||||
if ([_tableColumns[index] identifier] === anIdentifier)
|
||||
@@ -1816,7 +1809,7 @@ NOT YET IMPLEMENTED
|
||||
*/
|
||||
- (int)numberOfColumns
|
||||
{
|
||||
return NUMBER_OF_COLUMNS();
|
||||
return [self _numberOfColumns];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1935,7 +1928,7 @@ NOT YET IMPLEMENTED
|
||||
_numberOfHiddenColumns = 0;
|
||||
|
||||
var index = _dirtyTableColumnRangeIndex,
|
||||
count = NUMBER_OF_COLUMNS(),
|
||||
count = [self _numberOfColumns],
|
||||
x = index === 0 ? 0.0 : CPMaxRange(_tableColumnRanges[index - 1]);
|
||||
|
||||
for (; index < count; ++index)
|
||||
@@ -1975,13 +1968,13 @@ NOT YET IMPLEMENTED
|
||||
// Coerce aColumnIndex to a number in case it is a string.
|
||||
aColumnIndex = +aColumnIndex;
|
||||
|
||||
if (aColumnIndex < 0 || aColumnIndex >= NUMBER_OF_COLUMNS())
|
||||
if (aColumnIndex < 0 || aColumnIndex >= [self _numberOfColumns])
|
||||
return CGRectMakeZero();
|
||||
|
||||
if ([[_tableColumns objectAtIndex:aColumnIndex] isHidden])
|
||||
return CGRectMakeZero();
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
var range = _tableColumnRanges[aColumnIndex];
|
||||
|
||||
@@ -2010,7 +2003,7 @@ NOT YET IMPLEMENTED
|
||||
height,
|
||||
fixedHeightRows = 0;
|
||||
|
||||
if (HAS_VARIABLE_ROW_HEIGHTS())
|
||||
if ([self _hasVariableRowHeights])
|
||||
{
|
||||
[self _populateRowHeightCacheIfNeeded];
|
||||
|
||||
@@ -2026,12 +2019,12 @@ NOT YET IMPLEMENTED
|
||||
}
|
||||
else
|
||||
{
|
||||
height = FULL_ROW_HEIGHT();
|
||||
height = [self _fullRowHeight];
|
||||
|
||||
if (_numberOfRows > 0)
|
||||
{
|
||||
heightInfo = _cachedRowHeights[lastIndex];
|
||||
y = ROW_BOTTOM(heightInfo);
|
||||
y = [self _rowBottomOfHeightInfo:heightInfo];
|
||||
|
||||
// y is now at the top of the first row beyond the last valid row.
|
||||
// Add the height of any rows beyond that.
|
||||
@@ -2042,10 +2035,10 @@ NOT YET IMPLEMENTED
|
||||
else
|
||||
{
|
||||
fixedHeightRows = aRowIndex;
|
||||
height = FULL_ROW_HEIGHT();
|
||||
height = [self _fullRowHeight];
|
||||
}
|
||||
|
||||
y += fixedHeightRows * FULL_ROW_HEIGHT();
|
||||
y += fixedHeightRows * [self _fullRowHeight];
|
||||
|
||||
return CGRectMake(0.0, y, CGRectGetWidth([self bounds]), height);
|
||||
}
|
||||
@@ -2115,7 +2108,7 @@ NOT YET IMPLEMENTED
|
||||
if (bottomOfRealRows >= rectBottom)
|
||||
return rowRange;
|
||||
|
||||
var numberOfSynthesizedRows = CEIL((rectBottom - bottomOfRealRows) / FULL_ROW_HEIGHT());
|
||||
var numberOfSynthesizedRows = CEIL((rectBottom - bottomOfRealRows) / [self _fullRowHeight]);
|
||||
|
||||
rowRange.length += numberOfSynthesizedRows;
|
||||
|
||||
@@ -2133,14 +2126,14 @@ NOT YET IMPLEMENTED
|
||||
// O(log numberOfColumns) if table view contains no hidden columns
|
||||
// O(numberOfColumns) if table view contains hidden columns
|
||||
|
||||
if (NUMBER_OF_COLUMNS() === 0)
|
||||
if ([self _numberOfColumns] === 0)
|
||||
return [CPIndexSet indexSet];
|
||||
|
||||
var column = MAX(0, [self columnAtPoint:CGPointMake(aRect.origin.x, 0.0)]),
|
||||
lastColumn = [self columnAtPoint:CGPointMake(CGRectGetMaxX(aRect), 0.0)];
|
||||
|
||||
if (lastColumn === CPNotFound)
|
||||
lastColumn = NUMBER_OF_COLUMNS() - 1;
|
||||
lastColumn = [self _numberOfColumns] - 1;
|
||||
|
||||
if (column > lastColumn || lastColumn < 0)
|
||||
return [CPIndexSet indexSet];
|
||||
@@ -2178,7 +2171,7 @@ NOT YET IMPLEMENTED
|
||||
if (!CGRectContainsPoint(bounds, aPoint))
|
||||
return CPNotFound;
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
var x = aPoint.x,
|
||||
low = 0,
|
||||
@@ -2231,13 +2224,13 @@ NOT YET IMPLEMENTED
|
||||
|
||||
// aPoint.x is in bounds, now we just have to check aPoint.y
|
||||
|
||||
if (HAS_VARIABLE_ROW_HEIGHTS())
|
||||
if ([self _hasVariableRowHeights])
|
||||
{
|
||||
// First make sure aPoint.y is above the bottom of the last row, otherwise we might
|
||||
// search the (potentially large number of) rows for nothing.
|
||||
var heightInfo = [_cachedRowHeights lastObject];
|
||||
|
||||
if (!heightInfo || aPoint.y >= ROW_BOTTOM(heightInfo))
|
||||
if (!heightInfo || aPoint.y >= [self _rowBottomOfHeightInfo:heightInfo])
|
||||
return -1;
|
||||
|
||||
return [_cachedRowHeights indexOfObject:aPoint
|
||||
@@ -2248,7 +2241,7 @@ NOT YET IMPLEMENTED
|
||||
if (aPoint.y < heightInfo.y)
|
||||
return CPOrderedAscending;
|
||||
|
||||
if (aPoint.y > ROW_BOTTOM(heightInfo))
|
||||
if (aPoint.y > [self _rowBottomOfHeightInfo:heightInfo])
|
||||
return CPOrderedDescending;
|
||||
|
||||
return CPOrderedSame;
|
||||
@@ -2256,7 +2249,7 @@ NOT YET IMPLEMENTED
|
||||
}
|
||||
else
|
||||
{
|
||||
var row = FLOOR(aPoint.y / FULL_ROW_HEIGHT());
|
||||
var row = FLOOR(aPoint.y / [self _fullRowHeight]);
|
||||
|
||||
return row >= _numberOfRows ? -1 : row;
|
||||
}
|
||||
@@ -2363,7 +2356,7 @@ NOT YET IMPLEMENTED
|
||||
*/
|
||||
- (CGRect)frameOfDataViewAtColumn:(CPInteger)aColumn row:(CPInteger)aRow
|
||||
{
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
if (aColumn > [self numberOfColumns] || aRow > [self numberOfRows])
|
||||
return CGRectMakeZero();
|
||||
@@ -2428,9 +2421,9 @@ NOT YET IMPLEMENTED
|
||||
if (!superview)
|
||||
return;
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
var count = NUMBER_OF_COLUMNS(),
|
||||
var count = [self _numberOfColumns],
|
||||
columnToResize = nil,
|
||||
totalWidth = 0,
|
||||
i = 0;
|
||||
@@ -2474,10 +2467,10 @@ NOT YET IMPLEMENTED
|
||||
if (!superview || ![superview isKindOfClass:[CPClipView class]])
|
||||
return;
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
var superviewWidth = [superview bounds].size.width,
|
||||
count = NUMBER_OF_COLUMNS(),
|
||||
count = [self _numberOfColumns],
|
||||
resizableColumns = [CPIndexSet indexSet],
|
||||
remainingSpace = 0.0,
|
||||
i = 0;
|
||||
@@ -2582,9 +2575,9 @@ NOT YET IMPLEMENTED
|
||||
|
||||
var superviewSize = [superview bounds].size;
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
var count = NUMBER_OF_COLUMNS();
|
||||
var count = [self _numberOfColumns];
|
||||
|
||||
// Decrement the counter until we get to the last column that's not hidden
|
||||
while (count-- && [_tableColumns[count] isHidden]);
|
||||
@@ -2652,7 +2645,7 @@ NOT YET IMPLEMENTED
|
||||
*/
|
||||
- (void)_noteHeightOfRowsWithIndexesChanged:(CPIndexSet)anIndexSet
|
||||
{
|
||||
if (!HAS_VARIABLE_ROW_HEIGHTS())
|
||||
if (![self _hasVariableRowHeights])
|
||||
return;
|
||||
|
||||
// Update the height of the given rows by calling the delegate. Since the row height cache also contains
|
||||
@@ -2694,21 +2687,21 @@ NOT YET IMPLEMENTED
|
||||
*/
|
||||
- (void)tile
|
||||
{
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
var width = _tableColumnRanges.length > 0 ? CPMaxRange([_tableColumnRanges lastObject]) : 0.0,
|
||||
superview = [self superview],
|
||||
height = 0;
|
||||
|
||||
if (!HAS_VARIABLE_ROW_HEIGHTS())
|
||||
height = FULL_ROW_HEIGHT() * _numberOfRows;
|
||||
if (![self _hasVariableRowHeights])
|
||||
height = [self _fullRowHeight] * _numberOfRows;
|
||||
else if (_numberOfRows > 0)
|
||||
{
|
||||
[self _populateRowHeightCacheIfNeeded];
|
||||
|
||||
var heightInfo = _cachedRowHeights[_cachedRowHeights.length - 1];
|
||||
|
||||
height = ROW_BOTTOM(heightInfo);
|
||||
height = [self _rowBottomOfHeightInfo:heightInfo];
|
||||
}
|
||||
|
||||
if ([superview isKindOfClass:[CPClipView class]])
|
||||
@@ -3887,7 +3880,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad
|
||||
if (![rowIndexes count] || ![columnIndexes count])
|
||||
return;
|
||||
|
||||
UPDATE_COLUMN_RANGES_IF_NECESSARY();
|
||||
[self _updateColumnRangesIfNecessary];
|
||||
|
||||
if (_numberOfHiddenColumns > 0)
|
||||
columnIndexes = [columnIndexes indexesPassingTest:function(idx, stop)
|
||||
@@ -4177,9 +4170,9 @@ Your delegate can implement this method to avoid subclassing the tableview to ad
|
||||
[CPException raise:CPInvalidArgumentException
|
||||
reason:@"Row " + row + " out of row range [0-" + (_numberOfRows - 1) + "] for rowViewAtRow:createIfNeeded:"];
|
||||
|
||||
if (column > (NUMBER_OF_COLUMNS() - 1))
|
||||
if (column > ([self _numberOfColumns] - 1))
|
||||
[CPException raise:CPInvalidArgumentException
|
||||
reason:@"Column " + column + " out of row range [0-" + (NUMBER_OF_COLUMNS ()- 1) + "] for rowViewAtRow:createIfNeeded:"];
|
||||
reason:@"Column " + column + " out of row range [0-" + ([self _numberOfColumns]- 1) + "] for rowViewAtRow:createIfNeeded:"];
|
||||
|
||||
var dataViewsForRow = _dataViewsForRows[row],
|
||||
tableColumn = _tableColumns[column],
|
||||
@@ -5674,6 +5667,31 @@ Your delegate can implement this method to avoid subclassing the tableview to ad
|
||||
}, 0);
|
||||
}
|
||||
|
||||
- (int)_numberOfColumns
|
||||
{
|
||||
return _tableColumns.length;
|
||||
}
|
||||
|
||||
- (void)_updateColumnRangesIfNecessary
|
||||
{
|
||||
if (_dirtyTableColumnRangeIndex !== CPNotFound)
|
||||
[self _recalculateTableColumnRanges];
|
||||
}
|
||||
|
||||
- (CGFloat)_fullRowHeight
|
||||
{
|
||||
return (_rowHeight + _intercellSpacing.height);
|
||||
}
|
||||
|
||||
- (CGFloat)_rowBottomOfHeightInfo:(JSObject)heightInfo
|
||||
{
|
||||
return (heightInfo.y + heightInfo.height + _intercellSpacing.height);
|
||||
}
|
||||
|
||||
- (BOOL)_hasVariableRowHeights
|
||||
{
|
||||
return (_implementedDelegateMethods & CPTableViewDelegate_tableView_heightOfRow_);
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
@@ -6536,4 +6554,5 @@ var CPTableViewDataSourceKey = @"CPTableViewDataSourceKey",
|
||||
return "<" + [self className] + " 0x" + [CPString stringWithHash:[self UID]] + " identifier=" + [self identifier] + ">";
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -1358,12 +1358,13 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder");
|
||||
|
||||
- (void)validateEditing
|
||||
{
|
||||
#if PLATFORM(DOM)
|
||||
if (!CPDOMAvailable)
|
||||
return;
|
||||
|
||||
var element = [self _inputElement];
|
||||
|
||||
if (element)
|
||||
[self _setStringValue:element.value isNewValue:YES errorDescription:nil];
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)textDidBeginEditing:(CPNotification)note
|
||||
|
||||
@@ -1085,9 +1085,10 @@ var kDelegateRespondsTo_textShouldBeginEditing
|
||||
{
|
||||
[_caret setRect:aRect];
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
_caret._caretDOM.style.backgroundColor = [_insertionPointColor cssString] || "black";
|
||||
#endif
|
||||
if (CPDOMAvailable)
|
||||
{
|
||||
_caret._caretDOM.style.backgroundColor = [_insertionPointColor cssString] || "black";
|
||||
}
|
||||
|
||||
[_caret setVisibility:flag stop:NO];
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user