diff --git a/PBGitHistoryController.m b/PBGitHistoryController.m index a9fde36..b4a5d66 100644 --- a/PBGitHistoryController.m +++ b/PBGitHistoryController.m @@ -180,6 +180,13 @@ [self refresh:nil]; } +- (void)viewLoaded +{ + float position = [[NSUserDefaults standardUserDefaults] floatForKey:@"PBGitSplitViewPosition"]; + if (position) + [historySplitView setPosition:position ofDividerAtIndex:0]; +} + - (NSResponder *)firstResponder; { return commitList; @@ -201,6 +208,9 @@ - (void) removeView { + float position = [[[historySplitView subviews] objectAtIndex:0] frame].size.height; + [[NSUserDefaults standardUserDefaults] setFloat:position forKey:@"PBGitSplitViewPosition"]; + [[NSUserDefaults standardUserDefaults] synchronize]; [webView close]; [commitController removeObserver:self forKeyPath:@"selection"]; [treeController removeObserver:self forKeyPath:@"selection"]; diff --git a/PBGitWindowController.m b/PBGitWindowController.m index 25a22ed..6444d32 100644 --- a/PBGitWindowController.m +++ b/PBGitWindowController.m @@ -70,28 +70,32 @@ selectedViewIndex = whichViewTag; [[NSUserDefaults standardUserDefaults] setInteger:whichViewTag forKey:@"selectedViewIndex"]; + BOOL justLoaded = NO; switch (whichViewTag) { - case 0: // swap in the "CustomImageViewController - NSImageView" - if (!historyViewController) + case 0: + if (!historyViewController) { historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; - else - [historyViewController updateView]; + justLoaded = YES; + } viewController = historyViewController; break; case 1: - if (!commitViewController) + if (!commitViewController) { commitViewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; - else - [commitViewController updateView]; - + justLoaded = YES; + } viewController = commitViewController; break; } // make sure we automatically resize the controller's view to the current window size [[viewController view] setFrame: [contentView bounds]]; - + if (justLoaded) + [viewController viewLoaded]; + else + [viewController updateView]; + //// embed the current view to our host view [contentView addSubview: [viewController view]]; diff --git a/PBViewController.h b/PBViewController.h index 6055ace..393e274 100644 --- a/PBViewController.h +++ b/PBViewController.h @@ -21,8 +21,20 @@ @property (readonly) NSToolbar *viewToolbar; - (id)initWithRepository:(PBGitRepository *)theRepository superController:(PBGitWindowController *)controller; + +/* removeView is called whenever the view is removed, either to be swapped + * with a different view, or when the repository window will be destroyed + */ - (void) removeView; + +/* Updateview is called every time it is loaded into the main view */ - (void) updateView; + +/* Called after awakeFromNib:, and the view has been loaded into the main view. + * Useful for resizing stuff after everything has been set in the right position + */ +- (void)viewLoaded; + - (NSResponder *)firstResponder; - (IBAction) refresh:(id)sender; diff --git a/PBViewController.m b/PBViewController.m index 3368d16..ba4a31c 100644 --- a/PBViewController.m +++ b/PBViewController.m @@ -35,19 +35,23 @@ { } -// This is called when the view is displayed again; it -// should be updated to show the most recent information -- (void) updateView -{ -} - - (NSResponder *)firstResponder; { return nil; } +// The next methods should be implemented in the subclass if necessary +- (void)updateView +{ +} + - (IBAction) refresh:(id)sender { return; } + +- (void)viewLoaded +{ +} + @end