diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CMTextView.m | 10 | ||||
-rw-r--r-- | Source/TableDocument.m | 8 | ||||
-rw-r--r-- | Source/TableSource.m | 3 | ||||
-rw-r--r-- | Source/TablesList.m | 26 |
4 files changed, 45 insertions, 2 deletions
diff --git a/Source/CMTextView.m b/Source/CMTextView.m index 7378253a..036d221b 100644 --- a/Source/CMTextView.m +++ b/Source/CMTextView.m @@ -204,7 +204,15 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse) // Add structural db/table/field data to completions list or fallback to gathering TablesList data NSDictionary *dbs = [NSDictionary dictionaryWithDictionary:[mySQLConnection getDbStructure]]; if(dbs != nil && [dbs count]) { - NSArray *allDbs = [dbs allKeys]; + NSMutableArray *allDbs = [[NSMutableArray array] autorelease]; + [allDbs addObjectsFromArray:[dbs allKeys]]; + + // Add database names having no tables since they don't appear in the information_schema + if ([[[[self window] delegate] valueForKeyPath:@"tablesListInstance"] valueForKey:@"allDatabaseNames"] != nil) + for(id db in [[[[self window] delegate] valueForKeyPath:@"tablesListInstance"] valueForKey:@"allDatabaseNames"]) + if(![allDbs containsObject:db]) + [allDbs addObject:db]; + NSSortDescriptor *desc = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES selector:@selector(localizedCompare:)]; NSMutableArray *sortedDbs = [[NSMutableArray array] autorelease]; [sortedDbs addObjectsFromArray:[allDbs sortedArrayUsingDescriptors:[NSArray arrayWithObject:desc]]]; diff --git a/Source/TableDocument.m b/Source/TableDocument.m index 8d9bdca7..d0410044 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -1143,12 +1143,20 @@ if ([contextInfo isEqualToString:@"removeDatabase"]) { if (returnCode == NSAlertDefaultReturn) { [self _removeDatabase]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + } } // Add a new database else if ([contextInfo isEqualToString:@"addDatabase"]) { if (returnCode == NSOKButton) { [self _addDatabase]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + } else { // reset chooseDatabaseButton if([[self database] length]) diff --git a/Source/TableSource.m b/Source/TableSource.m index 1fd0cd44..1aa6185e 100644 --- a/Source/TableSource.m +++ b/Source/TableSource.m @@ -771,6 +771,9 @@ fetches the result as an array with a dictionary for each row in it // Mark the content table for refresh [tablesListInstance setContentRequiresReload:YES]; + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + return YES; } else { diff --git a/Source/TablesList.m b/Source/TablesList.m index 645e2305..e784f862 100644 --- a/Source/TablesList.m +++ b/Source/TablesList.m @@ -1315,7 +1315,10 @@ // Set window title [tableWindow setTitle:[tableDocumentInstance displaySPName]]; - } + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + + } else { // Error while renaming alertSheetOpened = YES; @@ -1871,6 +1874,10 @@ [tableWindow setTitle:[tableDocumentInstance displaySPName]]; [tablesListView deselectAll:self]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + } /** @@ -1965,6 +1972,10 @@ [self updateFilter:self]; [tablesListView scrollRowToVisible:[tablesListView selectedRow]]; [self updateSelectionWithTaskString:[NSString stringWithFormat:NSLocalizedString(@"Loading %@...", @"Loading table task string"), selectedTableName]]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + } else { // Error while creating new table @@ -2154,6 +2165,10 @@ [self updateFilter:self]; [tablesListView scrollRowToVisible:[tablesListView selectedRow]]; [self updateSelectionWithTaskString:[NSString stringWithFormat:NSLocalizedString(@"Loading %@...", @"Loading table task string"), selectedTableName]]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + } } } @@ -2181,6 +2196,10 @@ selectedTableName = [[NSString alloc] initWithString:[tableRenameField stringValue]]; [tablesListView reloadData]; [self updateSelectionWithTaskString:[NSString stringWithFormat:NSLocalizedString(@"Loading %@...", @"Loading table task string"), selectedTableName]]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + return; } } else { @@ -2243,12 +2262,17 @@ selectedTableName = [[NSString alloc] initWithString:[tableRenameField stringValue]]; [tablesListView reloadData]; [self updateSelectionWithTaskString:[NSString stringWithFormat:NSLocalizedString(@"Loading %@...", @"Loading table task string"), selectedTableName]]; + + // Query the structure of all databases in the background (mainly for completion) + [NSThread detachNewThreadSelector:@selector(queryDbStructure) toTarget:mySQLConnection withObject:nil]; + return; } } // Set window title [tableWindow setTitle:[tableDocumentInstance displaySPName]]; + } /* |