Skip to content

Commit

Permalink
modifications to take [NSTableColumn -dataCellForRow:] into account
Browse files Browse the repository at this point in the history
[-updateCell:]: only redraws the what's needed

[-setFrame:]: added a call to [self sizeToFit]


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@10749 72102866-910b-0410-8b05-ffd578937521
  • Loading branch information
Pierre-Yves Rivaille committed Aug 21, 2001
1 parent a254015 commit e3d2afb
Showing 1 changed file with 42 additions and 100 deletions.
142 changes: 42 additions & 100 deletions Source/NSTableView.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
Author: Nicola Pero <[email protected]>
Date: March 2000, June 2000, August 2000, September 2000
Author: Pierre-Yves Rivaille <[email protected]>
Date: August 2001
This file is part of the GNUstep GUI Library.
This library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -1331,7 +1334,7 @@ - (void) editColumn: (int) columnIndex
// Prepare the cell
tb = [_tableColumns objectAtIndex: columnIndex];
// NB: need to be released when no longer used
_editedCell = [[tb dataCell] copy];
_editedCell = [[tb dataCellForRow: rowIndex] copy];
[_editedCell setEditable: YES];
[_editedCell setObjectValue: [_dataSource tableView: self
objectValueForTableColumn: tb
Expand Down Expand Up @@ -2018,6 +2021,12 @@ - (void) sizeLastColumnToFit
}
}

- (void) setFrame: (NSRect) aRect
{
[super setFrame: aRect];
[self sizeToFit];
}

- (void) sizeToFit
{
NSCell *cell;
Expand All @@ -2029,7 +2038,7 @@ - (void) sizeToFit
int row;

_tilingDisabled = YES;

/* First Step */
/* Resize Each Column to its Minimum Width */
table_width = _bounds.origin.x;
Expand All @@ -2038,9 +2047,9 @@ - (void) sizeToFit
{
// Compute min width of column
width = [[tb headerCell] cellSize].width;
cell = [tb dataCell];
for (row = 0; row < _numberOfRows; row++)
{
cell = [tb dataCellForRow: row];
[cell setObjectValue: [_dataSource tableView: self
objectValueForTableColumn: tb
row: row]];
Expand Down Expand Up @@ -2274,7 +2283,7 @@ - (void)drawRow: (int)rowIndex clipRect: (NSRect)aRect
if (i != _editedColumn || rowIndex != _editedRow)
{
tb = [_tableColumns objectAtIndex: i];
cell = [tb dataCell];
cell = [tb dataCellForRow: rowIndex];
if (_del_responds)
{
[_delegate tableView: self willDisplayCell: cell
Expand Down Expand Up @@ -2843,6 +2852,35 @@ - (id) initWithCoder: (NSCoder*)aDecoder
return self;
}

- (void) updateCell: (NSCell*)aCell
{
int i, j;
NSTableColumn *tb;
if (aCell == nil)
return;

for (i = 0; i < _numberOfColumns; i++)
{
tb = [_tableColumns objectAtIndex: i];
if ([tb dataCellForRow: -1] == aCell)
[self setNeedsDisplayInRect: [self rectOfColumn: i]];
else
{
NSRect columnRect = [self rectOfColumn: i];
NSRect rowRect;
for (j = 0; j < _numberOfRows; j++)
{
if ([tb dataCellForRow: j] == aCell)
{
rowRect = [self rectOfRow: j];
[self setNeedsDisplayInRect:
NSIntersectionRect(columnRect, rowRect)];
}
}
}
}
}

- (void) _userResizedTableColumn: (int)index
width: (float)width
{
Expand All @@ -2853,103 +2891,7 @@ - (float *) _columnOrigins
{
return _columnOrigins;
}
/*
- (void) _userResizedTableColumn: (int)index
leftWidth: (float)lwidth
rightWidth: (float)rwidth
{
[self _userResizedTableColumn: index
width:lwidth];
}
- (void) _userResizedTableColumn: (int)index
width: (float)width
{
int i;
// NSRect oldColumnRect = [self rectOfColumn: index];
// NSRect newColumnRect;
NSRect oldLeftRect, newLeftRect;
NSTableColumn *column = [_tableColumns objectAtIndex: index];
float deltaWidth = width - [column width];
NSImage *cache;
NSImageRep *rep;
_tilingDisabled = YES;

oldLeftRect.origin.x = _columnOrigins[index+1];
oldLeftRect.origin.y = _bounds.origin.y;
oldLeftRect.size.height = _bounds.size.height;
oldLeftRect.size.width = (_bounds.size.width +
_bounds.origin.x -
oldLeftRect.origin.x);
newLeftRect = oldLeftRect;
oldLeftRect = NSIntersectionRect(oldLeftRect,
[self visibleRect]);
rep =
[[NSCachedImageRep allocWithZone:[self zone]]
initWithSize:oldLeftRect.size
depth:[NSWindow defaultDepthLimit]
separate:YES
alpha:NO];
cache = [[NSImage allocWithZone:[self zone]]
initWithSize:oldLeftRect.size];
[cache addRepresentation: rep];
[cache lockFocusOnRepresentation: rep];
PScomposite(NSMinX(oldLeftRect), NSMinY(oldLeftRect),
NSWidth(oldLeftRect), NSHeight(oldLeftRect),
[[self window] gState], 0.0, 0.0, NSCompositeCopy);
[cache unlockFocus];
newLeftRect.origin.x += deltaWidth;
[column setWidth: width];
// we need to update :
// _columnOrigins
for(i = index + 1; i < _numberOfColumns; i++)
{
_columnOrigins[i] += deltaWidth;
}
// to call :
// setFrameSize on self
// setFrameSize on _headerView
{
NSSize frameSize = _frame.size; // frameSize == [self frame].size
frameSize.width += deltaWidth;
[self setFrameSize: frameSize];
if (_headerView != nil)
{
[_headerView setFrameSize:
NSMakeSize (_frame.size.width,
[_headerView frame].size.height)];
[_headerView setNeedsDisplay: YES];
}
}
// to copy what's needed
{
NSSize commonSize;
newLeftRect = NSIntersectionRect(newLeftRect, [self visibleRect]);
commonSize.width = MIN(NSWidth(newLeftRect),
NSWidth(oldLeftRect));
commonSize.height = NSHeight(newLeftRect);
[rep setSize: commonSize];
[self lockFocus];
[rep drawAtPoint: newLeftRect.origin];
[self unlockFocus];
}
[self setNeedsDisplay: NO];
// to call
// drawRect where needed...
// sleep(2);
_tilingDisabled = NO;
}
*/
// Return YES on success; NO if no selectable cell found.
-(BOOL) _editNextEditableCellAfterRow: (int)row
column: (int)column
{
Expand Down

0 comments on commit e3d2afb

Please sign in to comment.