Move view rendering to viewAtColumn:row:makeIfNecessary: and eliminate uneeded private method

This commit is contained in:
Gregory John Casamento 2024-04-28 15:04:29 -04:00
parent 4d5957eaf7
commit 9070a9d30f
3 changed files with 67 additions and 82 deletions

View file

@ -82,10 +82,6 @@
row: (NSInteger)index;
- (id)_objectValueForTableColumn: (NSTableColumn *)tb
row: (NSInteger)index;
- (NSView *) _renderedViewForPath: (NSIndexPath *)path;
- (void) _setRenderedView: (NSView *)view forPath: (NSIndexPath *)path;
- (NSView *) _delegateInvocationForRowIndex: (NSInteger)rowIndex
inColumn: (NSInteger)columnIndex;
@end
@interface NSCell (Private)
@ -3665,8 +3661,7 @@ static NSDictionary *titleTextAttributes[3] = {nil, nil, nil};
for (columnIndex = startingColumn; columnIndex <= endingColumn; columnIndex++)
{
id rv = [v rowViewAtRow: rowIndex makeIfNecessary: YES];
NSView *view = [v _delegateInvocationForRowIndex: rowIndex
inColumn: columnIndex];
NSView *view = [v viewAtColumn: columnIndex row: rowIndex makeIfNecessary: YES];
// Store the object...
[v addSubview: rv];

View file

@ -132,8 +132,6 @@ static NSImage *unexpandable = nil;
@end
@interface NSOutlineView (Private)
- (NSView *) _delegateInvocationForRowIndex: (NSInteger)rowIndex
inColumn: (NSInteger)columnIndex;
- (void) _autoCollapse;
@end
@ -2210,6 +2208,46 @@ Also returns the child index relative to this parent. */
return cell;
}
- (NSView *) viewAtColumn: (NSInteger)column row: (NSInteger)row makeIfNecessary: (BOOL)flag
{
NSTableColumn *tb = [_tableColumns objectAtIndex: column];
NSIndexPath *path = [NSIndexPath indexPathForItem: column
inSection: row];
NSView *view = [self _renderedViewForPath: path];
NSRect drawingRect = [self frameOfCellAtColumn: column
row: row];
id item = [self itemAtRow: row];
if (tb == _outlineTableColumn)
{
drawingRect = [[GSTheme theme] drawOutlineTableColumn: tb
outlineView: self
item: item
drawingRect: drawingRect
rowIndex: row];
}
if (view == nil
&& flag == YES)
{
if ([_delegate respondsToSelector: @selector(outlineView:viewForTableColumn:item:)])
{
view = [_delegate outlineView: self
viewForTableColumn: tb
item: item];
}
else
{
view = [self _prototypeCellViewFromTableColumn: tb];
}
}
[view setFrame: drawingRect];
[self _setRenderedView: view forPath: path];
return view;
}
@end
@implementation NSOutlineView (Private)
@ -2228,44 +2266,4 @@ Also returns the child index relative to this parent. */
[autoExpanded removeAllObjects];
}
- (NSView *) _delegateInvocationForRowIndex: (NSInteger)rowIndex
inColumn: (NSInteger)columnIndex
{
NSTableColumn *tb = [_tableColumns objectAtIndex: columnIndex];
NSIndexPath *path = [NSIndexPath indexPathForItem: columnIndex
inSection: rowIndex];
NSView *view = [self _renderedViewForPath: path];
NSRect drawingRect = [self frameOfCellAtColumn: columnIndex
row: rowIndex];
id item = [self itemAtRow: rowIndex];
if (tb == _outlineTableColumn)
{
drawingRect = [[GSTheme theme] drawOutlineTableColumn: tb
outlineView: self
item: item
drawingRect: drawingRect
rowIndex: rowIndex];
}
if (view == nil)
{
if ([_delegate respondsToSelector: @selector(outlineView:viewForTableColumn:item:)])
{
view = [_delegate outlineView: self
viewForTableColumn: tb
item: item];
}
else
{
view = [self _prototypeCellViewFromTableColumn: tb];
}
}
[view setFrame: drawingRect];
[self _setRenderedView: view forPath: path];
return view;
}
@end

View file

@ -6963,38 +6963,6 @@ For a more detailed explanation, -setSortDescriptors:. */
return view;
}
- (NSView *) _delegateInvocationForRowIndex: (NSInteger)rowIndex
inColumn: (NSInteger)columnIndex
{
NSTableColumn *tb = [_tableColumns objectAtIndex: columnIndex];
NSIndexPath *path = [NSIndexPath indexPathForItem: columnIndex
inSection: rowIndex];
NSView *view = [self _renderedViewForPath: path];
NSRect drawingRect = [self frameOfCellAtColumn: columnIndex
row: rowIndex];
// If the view has been stored use it, if not
// then grab it.
if (view == nil)
{
if ([_delegate respondsToSelector: @selector(tableView:viewForTableColumn:row:)])
{
view = [_delegate tableView: self
viewForTableColumn: tb
row: rowIndex];
}
else
{
view = [self _prototypeCellViewFromTableColumn: tb];
}
}
[view setFrame: drawingRect];
[self _setRenderedView: view forPath: path];
return view;
}
- (NSTableRowView *) rowViewAtRow: (NSInteger)row makeIfNecessary: (BOOL)flag
{
NSTableRowView *rv = nil;
@ -7043,8 +7011,32 @@ For a more detailed explanation, -setSortDescriptors:. */
- (NSView *) viewAtColumn: (NSInteger)column row: (NSInteger)row makeIfNecessary: (BOOL)flag
{
NSIndexPath *path = [NSIndexPath indexPathForItem: row inSection: column];
NSView *view = [_renderedViewPaths objectForKey: path];
NSTableColumn *tb = [_tableColumns objectAtIndex: column];
NSIndexPath *path = [NSIndexPath indexPathForItem: column
inSection: row];
NSView *view = [self _renderedViewForPath: path];
NSRect drawingRect = [self frameOfCellAtColumn: column
row: row];
// If the view has been stored use it, if not
// then grab it.
if (view == nil
&& flag == YES)
{
if ([_delegate respondsToSelector: @selector(tableView:viewForTableColumn:row:)])
{
view = [_delegate tableView: self
viewForTableColumn: tb
row: row];
}
else
{
view = [self _prototypeCellViewFromTableColumn: tb];
}
}
[view setFrame: drawingRect];
[self _setRenderedView: view forPath: path];
return view;
}