diff --git a/PBGitCommitController.m b/PBGitCommitController.m index 6e49c6b..7de8586 100644 --- a/PBGitCommitController.m +++ b/PBGitCommitController.m @@ -100,9 +100,8 @@ PBChangedFile *file =[[PBChangedFile alloc] initWithPath:line andRepository:repository]; file.status = NEW; file.cached = NO; - [files addObject: file]; + [unstagedFilesController addObject:file]; } - self.files = files; [self doneProcessingIndex]; } @@ -116,10 +115,9 @@ PBChangedFile *file = [[PBChangedFile alloc] initWithPath:[components objectAtIndex:1] andRepository:repository]; file.status = MODIFIED; - file.cached =NO; - [files addObject: file]; + file.cached = NO; + [unstagedFilesController addObject: file]; } - self.files = files; [self doneProcessingIndex]; } @@ -135,7 +133,7 @@ PBChangedFile *file = [[PBChangedFile alloc] initWithPath:[components objectAtIndex:1] andRepository:repository]; file.status = MODIFIED; file.cached = YES; - [files addObject: file]; + [cachedFilesController addObject: file]; } self.files = files; [self doneProcessingIndex]; @@ -199,20 +197,33 @@ - (void) cellClicked:(NSCell*) sender { NSTableView *tableView = (NSTableView *)[sender controlView]; - if([tableView numberOfSelectedRows] == 1) - { - NSUInteger selectionIndex = [[tableView selectedRowIndexes] firstIndex]; - PBChangedFile *selectedItem = [[(([tableView tag] == 0) ? unstagedFilesController : cachedFilesController) arrangedObjects] objectAtIndex:selectionIndex]; - if (selectedItem.cached == NO) { - [selectedItem stageChanges]; - - } - else { - [selectedItem unstageChanges]; - } - [self refresh: self]; + if([tableView numberOfSelectedRows] != 1) + return; + NSUInteger selectionIndex = [[tableView selectedRowIndexes] firstIndex]; + NSArrayController *controller, *otherController; + if ([tableView tag] == 0) { + controller = unstagedFilesController; + otherController = cachedFilesController; } + else { + controller = cachedFilesController; + otherController = unstagedFilesController; + } + + PBChangedFile *selectedItem = [[controller arrangedObjects] objectAtIndex:selectionIndex]; + [controller removeObject:selectedItem]; + if (selectedItem.cached == NO) + [selectedItem stageChanges]; + else + [selectedItem unstageChanges]; + + // Add the file to the other controller if it's not there yet + for (PBChangedFile *object in [otherController arrangedObjects]) + if ([[object path] isEqualToString:[selectedItem path]]) + return; + + [otherController addObject:selectedItem]; } - (void)tableView:(NSTableView*)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn*)tableColumn row:(int)rowIndex diff --git a/PBGitCommitView.xib b/PBGitCommitView.xib index be6fc9c..3284f4e 100644 --- a/PBGitCommitView.xib +++ b/PBGitCommitView.xib @@ -897,9 +897,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES YES - YES YES - YES + YES @@ -913,9 +912,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES YES - YES YES - YES + YES PBWebChangesController @@ -1592,6 +1590,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES cachedFilesController controller + previousFile unstagedFilesController view @@ -1599,6 +1598,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES NSArrayController PBGitCommitController + id NSArrayController WebView diff --git a/PBWebChangesController.h b/PBWebChangesController.h index 849b40b..0c364bd 100644 --- a/PBWebChangesController.h +++ b/PBWebChangesController.h @@ -16,6 +16,8 @@ IBOutlet NSArrayController *unstagedFilesController; IBOutlet NSArrayController *cachedFilesController; IBOutlet PBGitCommitController *controller; + + id previousFile; } - (void) showDiff:(PBChangedFile *)file; diff --git a/PBWebChangesController.m b/PBWebChangesController.m index 1d1ae67..83707fb 100644 --- a/PBWebChangesController.m +++ b/PBWebChangesController.m @@ -43,6 +43,10 @@ static PBChangedFile *lastFileSelected = nil; PBChangedFile *file = [[object selectedObjects] objectAtIndex:0]; + if (previousFile == file) + return; + + previousFile = file; if ([view isLoading]) { lastFileSelected = file; return;