diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPDatabaseDocument.m | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index 2931ba9f..51fc7a7e 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -6303,22 +6303,24 @@ static int64_t SPDatabaseDocumentInstanceCounter = 0; #ifndef SP_CODA /* update selected table in SPTablesList */ - BOOL focusOnFilter = YES; - if (targetItemName) focusOnFilter = NO; - - // If a the table has changed, update the selection - if (![targetItemName isEqualToString:[self table]] && targetItemName) { - focusOnFilter = ![tablesListInstance selectItemWithName:targetItemName]; - } - - // Ensure the window focus is on the table list or the filter as appropriate - [[tablesListInstance onMainThread] setTableListSelectability:YES]; - if (focusOnFilter) { - [[tablesListInstance onMainThread] makeTableListFilterHaveFocus]; - } else { - [[tablesListInstance onMainThread] makeTableListHaveFocus]; - } - [[tablesListInstance onMainThread] setTableListSelectability:NO]; + SPMainQSync(^{ + BOOL focusOnFilter = YES; + if (targetItemName) focusOnFilter = NO; + + // If a the table has changed, update the selection + if (![targetItemName isEqualToString:[self table]] && targetItemName) { + focusOnFilter = ![tablesListInstance selectItemWithName:targetItemName]; + } + + // Ensure the window focus is on the table list or the filter as appropriate + [tablesListInstance setTableListSelectability:YES]; + if (focusOnFilter) { + [tablesListInstance makeTableListFilterHaveFocus]; + } else { + [tablesListInstance makeTableListHaveFocus]; + } + [tablesListInstance setTableListSelectability:NO]; + }); #endif [self endTask]; |