diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPConnectionController.m | 2 | ||||
-rw-r--r-- | Source/TableSource.m | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m index b3096954..956312c1 100644 --- a/Source/SPConnectionController.m +++ b/Source/SPConnectionController.m @@ -504,7 +504,7 @@ [prefsController showWindow:self]; [prefsController displayFavoritePreferences:self]; - if ([favoritesTable selectedRow] != -1) [prefsController selectFavoriteAtIndex:([favoritesTable selectedRow] - 1)]; + if ([favoritesTable numberOfSelectedRows]) [prefsController selectFavoriteAtIndex:([favoritesTable selectedRow] - 1)]; } /** diff --git a/Source/TableSource.m b/Source/TableSource.m index 655dffc1..44a11321 100644 --- a/Source/TableSource.m +++ b/Source/TableSource.m @@ -325,16 +325,20 @@ loads aTable, put it in an array, update the tableViewColumns and reload the tab - (IBAction)copyField:(id)sender { NSMutableDictionary *tempRow; + NSUInteger rowToCopy; - if ( ![tableSourceView numberOfSelectedRows] ) { - [tableSourceView selectRowIndexes:[NSIndexSet indexSetWithIndex:[tableSourceView numberOfRows]-1] byExtendingSelection:NO]; + // Store the row to duplicate, as saveRowOnDeselect and subsequent reloads may trigger a deselection + if ([tableSourceView numberOfSelectedRows]) { + rowToCopy = [tableSourceView selectedRow]; + } else { + rowToCopy = [tableSourceView numberOfRows]-1; } // Check whether a save of the current row is required. if ( ![self saveRowOnDeselect] ) return; //add copy of selected row and go in edit mode - tempRow = [NSMutableDictionary dictionaryWithDictionary:[tableFields objectAtIndex:[tableSourceView selectedRow]]]; + tempRow = [NSMutableDictionary dictionaryWithDictionary:[tableFields objectAtIndex:rowToCopy]]; [tempRow setObject:[[tempRow objectForKey:@"Field"] stringByAppendingString:@"Copy"] forKey:@"Field"]; [tempRow setObject:@"" forKey:@"Key"]; [tempRow setObject:@"None" forKey:@"Extra"]; |