From d3f97bdfcbdccf55f8c3311fcb00ba3559489cba Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Fri, 26 Sep 2008 00:35:05 +0200 Subject: [PATCH] GitWindowController: bind selected view to controller This used to be bound to the UserDefaults, but that introduced the bug that switching the view in one window also switched it in other open windows. See 2e7cd5268d665bd833614a5f9d22debe1a8a2be4 --- English.lproj/RepositoryWindow.xib | 67 ++++++++++++------------------ PBGitWindowController.h | 2 + PBGitWindowController.m | 15 +++---- 3 files changed, 36 insertions(+), 48 deletions(-) diff --git a/English.lproj/RepositoryWindow.xib b/English.lproj/RepositoryWindow.xib index ccaf8b8..a8aaea2 100644 --- a/English.lproj/RepositoryWindow.xib +++ b/English.lproj/RepositoryWindow.xib @@ -2,13 +2,13 @@ 1050 - 9E17 + 9F33 670 - 949.33 + 949.34 352.00 YES - + YES @@ -72,10 +72,9 @@ - + 265 {{0, 14}, {183, 22}} - YES 343014976 @@ -171,10 +170,9 @@ Branch - + 268 {{0, 14}, {134, 26}} - YES -2076049856 @@ -282,10 +280,9 @@ View selector - + 268 {{6, 14}, {66, 23}} - YES 67239424 @@ -821,13 +818,6 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ YES YES - - - YES - selectedViewIndex - - YES - @@ -905,6 +895,22 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ 245 + + + selectedIndex: selectedViewIndex + + + + + + selectedIndex: selectedViewIndex + selectedIndex + selectedViewIndex + 2 + + + 275 + predicate: searchController.filterPredicate @@ -1010,22 +1016,6 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ 292 - - - selectedIndex: values.selectedViewIndex - - - - - - selectedIndex: values.selectedViewIndex - selectedIndex - values.selectedViewIndex - 2 - - - 298 - @@ -1239,11 +1229,6 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ BranchesController - - 296 - - - @@ -1296,9 +1281,9 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ com.apple.InterfaceBuilderKit com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin - {{43, 321}, {850, 418}} + {{368, 321}, {850, 418}} com.apple.InterfaceBuilder.CocoaPlugin - {{43, 321}, {850, 418}} + {{368, 321}, {850, 418}} {{15, 196}, {850, 418}} @@ -1306,7 +1291,7 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ {3.40282e+38, 3.40282e+38} {213, 107} - {{160, 512}, {616, 227}} + {{429, 871}, {616, 0}} com.apple.InterfaceBuilder.CocoaPlugin {{132, 614}, {616, 0}} com.apple.InterfaceBuilder.CocoaPlugin @@ -1353,7 +1338,7 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ - 298 + 295 diff --git a/PBGitWindowController.h b/PBGitWindowController.h index efe852a..c7f589c 100644 --- a/PBGitWindowController.h +++ b/PBGitWindowController.h @@ -14,12 +14,14 @@ IBOutlet NSArrayController* searchController; IBOutlet NSArrayController *branchesController; PBGitRepository* repository; + int selectedViewIndex; IBOutlet NSView* contentView; NSViewController* viewController; } @property (retain) PBGitRepository *repository; @property (readonly) NSViewController *viewController; +@property (assign) int selectedViewIndex; @property (retain) NSArrayController *searchController; - (id)initWithRepository:(PBGitRepository*)theRepository; diff --git a/PBGitWindowController.m b/PBGitWindowController.m index 5a233c2..3fcb0b2 100644 --- a/PBGitWindowController.m +++ b/PBGitWindowController.m @@ -14,7 +14,7 @@ @implementation PBGitWindowController -@synthesize repository, viewController, searchController; +@synthesize repository, viewController, searchController, selectedViewIndex; - (id)initWithRepository:(PBGitRepository*)theRepository; { @@ -22,7 +22,6 @@ { self.repository = theRepository; [self showWindow:nil]; - [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:@"selectedViewIndex" options:0 context:NULL]; } return self; } @@ -32,10 +31,11 @@ [[self window] makeFirstResponder:searchField]; } -- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context +- (void) setSelectedViewIndex: (int) i { - if ([keyPath isEqualToString:@"selectedViewIndex"]) - [self changeViewController:[[[NSUserDefaults standardUserDefaults] objectForKey:@"selectedViewIndex"] intValue]]; + selectedViewIndex = i; + [[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"selectedViewIndex"]; + [self changeViewController: i]; } - (void)changeViewController:(NSInteger)whichViewTag @@ -74,8 +74,9 @@ - (void)awakeFromNib { // We bind this ourselves because otherwise we would lose our selection - [branchesController bind:@"selectionIndexes" toObject:repository withKeyPath:@"currentBranch" options:nil]; NSLog(@"CurrentBranch: %@", repository.currentBranch); - [self changeViewController:[[[NSUserDefaults standardUserDefaults] objectForKey:@"selectedViewIndex"] intValue]]; + [branchesController bind:@"selectionIndexes" toObject:repository withKeyPath:@"currentBranch" options:nil]; + + self.selectedViewIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"selectedViewIndex"]; [[self window] setAutorecalculatesContentBorderThickness:NO forEdge:NSMinYEdge]; [[self window] setContentBorderThickness:35.0f forEdge:NSMinYEdge];