Files
gitx/PBWebDiffController.m
T
Nathan Kinsinger 53d92fb73e Cleanup the views when the repository window closes and stop memory leaks.
- make sure to remove themselves from KV and notification center observers
    - add the PBWebHistoryController to PBHistoryController so it can be told to close
    - replaced the -removeView methods with -closeView (-removeView was not being used)
    - clear any obj-c objects set in web scripting objects

This last item seems to be the reason that the web controllers and the current commit did not get collected which then held the repository document from being collected as well.
2010-07-04 09:46:22 -06:00

53 lines
1.1 KiB
Objective-C

//
// PBWebDiffController.m
// GitX
//
// Created by Pieter de Bie on 13-10-08.
// Copyright 2008 Pieter de Bie. All rights reserved.
//
#import "PBWebDiffController.h"
@implementation PBWebDiffController
- (void) awakeFromNib
{
startFile = @"diff";
[super awakeFromNib];
[diffController addObserver:self forKeyPath:@"diff" options:0 context:@"ChangedDiff"];
}
- (void)closeView
{
[diffController removeObserver:self forKeyPath:@"diff"];
[super closeView];
}
- (void) didLoad
{
[self showDiff:diffController.diff];
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([(NSString *)context isEqualToString: @"ChangedDiff"])
[self showDiff:diffController.diff];
}
- (void) showDiff: (NSString *) diff
{
if (diff == nil || !finishedLoading)
return;
id script = [view windowScriptObject];
if ([diff length] == 0)
[script callWebScriptMethod:@"setMessage" withArguments:[NSArray arrayWithObject:@"There are no differences"]];
else
[script callWebScriptMethod:@"showDiff" withArguments:[NSArray arrayWithObject:diff]];
}
@end