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
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;