From 0a2ddc36f74252a55a5ded3f5f028ae42294ab4f Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Wed, 26 Nov 2008 17:28:40 +0100 Subject: [PATCH] GitWindowController: Store multiple views This keeps the subviews in memory, which means that switching views will be faster if a view has already been opened. This also allows you to type a commit message, switch to the history view, and then switch back to continue typing. --- PBGitWindowController.h | 7 ++++++- PBGitWindowController.m | 19 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/PBGitWindowController.h b/PBGitWindowController.h index d243a37..6935d6a 100644 --- a/PBGitWindowController.h +++ b/PBGitWindowController.h @@ -9,11 +9,16 @@ #import #import "PBGitRepository.h" +@class PBViewController; @interface PBGitWindowController : NSWindowController { __weak PBGitRepository* repository; int selectedViewIndex; IBOutlet NSView* contentView; - NSViewController* viewController; + + PBViewController *historyViewController; + PBViewController *commitViewController; + + PBViewController* viewController; } @property (assign) __weak PBGitRepository *repository; diff --git a/PBGitWindowController.m b/PBGitWindowController.m index 6cf01b5..4bc08b8 100644 --- a/PBGitWindowController.m +++ b/PBGitWindowController.m @@ -10,7 +10,6 @@ #import "PBGitHistoryController.h" #import "PBGitCommitController.h" - @implementation PBGitWindowController @@ -35,7 +34,11 @@ - (void)windowWillClose:(NSNotification *)notification { - [viewController removeView]; + NSLog(@"Window will close!"); + if (historyViewController) + [historyViewController removeView]; + if (commitViewController) + [commitViewController removeView]; } - (void) setSelectedViewIndex: (int) i @@ -49,16 +52,20 @@ { [self willChangeValueForKey:@"viewController"]; - if ([viewController view] != nil) - [(PBViewController *)viewController removeView]; + if (viewController != nil) + [[viewController view] removeFromSuperview]; switch (whichViewTag) { case 0: // swap in the "CustomImageViewController - NSImageView" - viewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; + if (!historyViewController) + historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; + viewController = historyViewController; break; case 1: - viewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; + if (!commitViewController) + commitViewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; + viewController = commitViewController; break; }