diff options
Diffstat (limited to 'Source/SPNarrowDownCompletion.m')
-rw-r--r-- | Source/SPNarrowDownCompletion.m | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/Source/SPNarrowDownCompletion.m b/Source/SPNarrowDownCompletion.m index 9079954d..4dc2711d 100644 --- a/Source/SPNarrowDownCompletion.m +++ b/Source/SPNarrowDownCompletion.m @@ -35,6 +35,7 @@ #import "RegexKitLite.h" #import "SPTextView.h" #import "SPQueryDocumentsController.h" +#import "SPDatabaseStructure.h" #pragma mark - #pragma mark attribute definition @@ -165,12 +166,20 @@ if(suggestions) [suggestions release]; if (filtered) [filtered release]; + if (databaseStructureRetrieval) [databaseStructureRetrieval release]; [super dealloc]; } - (void)close { + + // Invalidate the timer now to prevent retain cycles preventing deallocation + if (stateTimer != nil) { + [stateTimer invalidate]; + [stateTimer release]; + } + closeMe = YES; [theView setCompletionIsOpen:NO]; [super close]; @@ -186,7 +195,7 @@ timeCounter++; if(timeCounter > 20) { timeCounter = 0; - if(![[theView valueForKeyPath:@"mySQLConnection"] isQueryingDatabaseStructure]) { + if(![databaseStructureRetrieval isQueryingDatabaseStructure]) { isQueryingDatabaseStructure = NO; if(stateTimer) { [stateTimer invalidate]; @@ -222,7 +231,7 @@ dictMode:(BOOL)mode dbMode:(BOOL)theDbMode tabTriggerMode:(BOOL)tabTriggerMode fuzzySearch:(BOOL)fuzzySearch backtickMode:(NSInteger)theBackTickMode withDbName:(NSString*)dbName withTableName:(NSString*)tableName selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft autoComplete:(BOOL)autoComplete oneColumn:(BOOL)oneColumn - alias:(NSString*)anAlias isQueryingDBStructure:(BOOL)isQueryingDBStructure + alias:(NSString*)anAlias withDBStructureRetriever:(SPDatabaseStructure *)theDatabaseStructure { if((self = [self init])) { @@ -238,10 +247,6 @@ theAliasName = anAlias; oneColumnMode = oneColumn; - isQueryingDatabaseStructure = isQueryingDBStructure; - - if(isQueryingDatabaseStructure) - stateTimer = [[NSTimer scheduledTimerWithTimeInterval:0.07f target:self selector:@selector(updateSyncArrowStatus) userInfo:nil repeats:YES] retain]; fuzzyMode = fuzzySearch; if(fuzzyMode) @@ -299,6 +304,11 @@ if(someAdditionalWordCharacters) [textualInputCharacters addCharactersInString:someAdditionalWordCharacters]; + databaseStructureRetrieval = [theDatabaseStructure retain]; + isQueryingDatabaseStructure = [databaseStructureRetrieval isQueryingDatabaseStructure]; + + if(isQueryingDatabaseStructure) + stateTimer = [[NSTimer scheduledTimerWithTimeInterval:0.07f target:self selector:@selector(updateSyncArrowStatus) userInfo:nil repeats:YES] retain]; } return self; } |