aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/SPDatabaseViewController.m6
-rw-r--r--Source/SPTablesList.h2
-rw-r--r--Source/SPTablesList.m5
3 files changed, 7 insertions, 6 deletions
diff --git a/Source/SPDatabaseViewController.m b/Source/SPDatabaseViewController.m
index 0ea8216e..c1b1bdbf 100644
--- a/Source/SPDatabaseViewController.m
+++ b/Source/SPDatabaseViewController.m
@@ -276,9 +276,7 @@
selectedTableType = SPTableTypeNone;
// Clear the views
- if ([[tablesListInstance selectedTableNames] count] == 1) {
- [[tablesListInstance onMainThread] setSelection:nil];
- }
+ [[tablesListInstance onMainThread] setSelectionState:nil];
[tableSourceInstance loadTable:nil];
[tableContentInstance loadTable:nil];
[[extendedTableInfoInstance onMainThread] loadTable:nil];
@@ -315,7 +313,7 @@
}
// Update the tables list interface - also updates menus to reflect the selected table type
- [[tablesListInstance onMainThread] setSelection:[NSDictionary dictionaryWithObjectsAndKeys:aTable, @"name", [NSNumber numberWithInteger:aTableType], @"type", nil]];
+ [[tablesListInstance onMainThread] setSelectionState:[NSDictionary dictionaryWithObjectsAndKeys:aTable, @"name", [NSNumber numberWithInteger:aTableType], @"type", nil]];
// If on the main thread, fire up a thread to deal with view changes and data loading;
// if already on a background thread, make the changes on the existing thread.
diff --git a/Source/SPTablesList.h b/Source/SPTablesList.h
index 8487358d..e53fb178 100644
--- a/Source/SPTablesList.h
+++ b/Source/SPTablesList.h
@@ -119,7 +119,7 @@
// Additional methods
- (void)setConnection:(MCPConnection *)theConnection;
- (void)doPerformQueryService:(NSString *)query;
-- (void)setSelection:(NSDictionary *)selectionDetails;
+- (void)setSelectionState:(NSDictionary *)selectionDetails;
- (void)selectTableAtIndex:(NSNumber *)row;
- (void)makeTableListFilterHaveFocus;
diff --git a/Source/SPTablesList.m b/Source/SPTablesList.m
index 2071f793..45999ea1 100644
--- a/Source/SPTablesList.m
+++ b/Source/SPTablesList.m
@@ -685,12 +685,14 @@
}
/**
+ * Updates application state to match the current selection, including
+ * updating the interface selection if appropriate.
* Takes a dictionary of selection details, containing the selection name
* and type, and updates stored variables and the table list interface to
* match.
* Should be called on the main thread.
*/
-- (void)setSelection:(NSDictionary *)selectionDetails
+- (void)setSelectionState:(NSDictionary *)selectionDetails
{
// First handle empty or multiple selections
if (!selectionDetails || ![selectionDetails objectForKey:@"name"]) {
@@ -1390,6 +1392,7 @@
// Ensure the state is cleared
if ([tableDocumentInstance table]) [tableDocumentInstance loadTable:nil ofType:SPTableTypeNone];
+ else [self setSelectionState:nil];
if (selectedTableName) [selectedTableName release], selectedTableName = nil;
selectedTableType = SPTableTypeNone;
return;