From 67bbe5ea4b64c733713bf49e57c84882980ba775 Mon Sep 17 00:00:00 2001 From: ratmice Date: Wed, 1 Nov 2006 10:17:55 +0000 Subject: [PATCH] * Source/NSTableView.m: (-editColumn:row:withEvent:select:): Raise when passed an unselected row. (-textDidEndEditing:): Handle NSReturnTextMovement. (_editNextCellAfterRow:inColumn:): New private method. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@24008 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 9 +++++++++ Source/NSTableView.m | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/ChangeLog b/ChangeLog index db8902268..6e2c7ddfc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-11-01 Matt Rice + + * Source/NSTableView.m: + (-editColumn:row:withEvent:select:): Raise when passed an unselected + row. + (-textDidEndEditing:): Handle NSReturnTextMovement. + (_editNextCellAfterRow:inColumn:): New private method. + + 2006-11-01 Matt Rice * Source/NSTableView.m: Add new private methods. diff --git a/Source/NSTableView.m b/Source/NSTableView.m index 471a7ed66..c8932a766 100644 --- a/Source/NSTableView.m +++ b/Source/NSTableView.m @@ -1944,6 +1944,7 @@ static void computeNewSelection column: (int)column; - (BOOL) _editPreviousEditableCellBeforeRow: (int)row column: (int)column; +- (void) _editNextCellAfterRow:(int)row inColumn:(int)column; - (void) _autosaveTableColumns; - (void) _autoloadTableColumns; @end @@ -3213,6 +3214,12 @@ byExtendingSelection: (BOOL)flag [self scrollRowToVisible: rowIndex]; [self scrollColumnToVisible: columnIndex]; + if (rowIndex != _selectedRow) + { + [NSException raise:NSInvalidArgumentException + format:@"Attempted to edit unselected row"]; + } + if (rowIndex < 0 || rowIndex >= _numberOfRows || columnIndex < 0 || columnIndex >= _numberOfColumns) { @@ -4950,6 +4957,7 @@ static inline float computePeriod(NSPoint mouseLocationWin, switch ([(NSNumber *)textMovement intValue]) { case NSReturnTextMovement: + [self _editNextCellAfterRow:row inColumn:column]; // Send action ? break; case NSTabTextMovement: @@ -5549,6 +5557,23 @@ static inline float computePeriod(NSPoint mouseLocationWin, } } +- (void) _editNextCellAfterRow:(int)row inColumn:(int)column +{ + if (++row >= _numberOfColumns) + row = 0; + + if ([self _shouldSelectRow:row]) + { + [self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] + byExtendingSelection:NO]; + + if ([self _isCellEditableColumn:column row:row]) + { + [self editColumn:column row:row withEvent:nil select:YES]; + } + } +} + -(BOOL) _editNextEditableCellAfterRow: (int)row column: (int)column {