diff options
author | jakob <jakob@eggerapps.at> | 2010-04-16 17:59:50 +0000 |
---|---|---|
committer | jakob <jakob@eggerapps.at> | 2010-04-16 17:59:50 +0000 |
commit | ba21a4f70e5326b51eaf1ff9d3dc788e77350c25 (patch) | |
tree | 442ec3b686ec65c68f1f186fe25865c8421b7781 | |
parent | f5f15a660b5663865347e2b2b162fba7ad86566f (diff) | |
download | sequelpro-ba21a4f70e5326b51eaf1ff9d3dc788e77350c25.tar.gz sequelpro-ba21a4f70e5326b51eaf1ff9d3dc788e77350c25.tar.bz2 sequelpro-ba21a4f70e5326b51eaf1ff9d3dc788e77350c25.zip |
Improved index checking when using arrow key navigation. Potential fix for http://spbugs.com/l/120
-rw-r--r-- | Source/TableContent.m | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/Source/TableContent.m b/Source/TableContent.m index 07a69ad8..cfad7136 100644 --- a/Source/TableContent.m +++ b/Source/TableContent.m @@ -3185,14 +3185,17 @@ // Trap down arrow key else if ( [textView methodForSelector:command] == [textView methodForSelector:@selector(moveDown:)] ) { - if (row==tableRowsCount) return TRUE; //check if we're already at the end of the list + NSUInteger newRow = row+1; + if (newRow>=tableRowsCount) return TRUE; //check if we're already at the end of the list [[control window] makeFirstResponder:control]; [self addRowToDB]; - if (row==tableRowsCount) return TRUE; //check again. addRowToDB could reload the table and change the number of rows - [tableContentView selectRow:row+1 byExtendingSelection:NO]; - [tableContentView editColumn:column row:row+1 withEvent:nil select:YES]; + if (newRow>=tableRowsCount) return TRUE; //check again. addRowToDB could reload the table and change the number of rows + if (column>=[tableValues columnCount]) return TRUE; //the column count could change too + + [tableContentView selectRowIndexes:[NSIndexSet indexSetWithIndex:newRow] byExtendingSelection:NO]; + [tableContentView editColumn:column row:newRow withEvent:nil select:YES]; return TRUE; } @@ -3200,11 +3203,16 @@ else if ( [textView methodForSelector:command] == [textView methodForSelector:@selector(moveUp:)] ) { if (row==0) return TRUE; //already at the beginning of the list + NSUInteger newRow = row-1; [[control window] makeFirstResponder:control]; [self addRowToDB]; - [tableContentView selectRow:row-1 byExtendingSelection:NO]; - [tableContentView editColumn:column row:row-1 withEvent:nil select:YES]; + + if (newRow>=tableRowsCount) return TRUE; // addRowToDB could reload the table and change the number of rows + if (column>=[tableValues columnCount]) return TRUE; //the column count could change too + + [tableContentView selectRowIndexes:[NSIndexSet indexSetWithIndex:newRow] byExtendingSelection:NO]; + [tableContentView editColumn:column row:newRow withEvent:nil select:YES]; return TRUE; } |