From bfc53dc39c04f4c2eb3d0d79a938cf5dea368da5 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 26 Jun 2016 04:15:33 +0200 Subject: Fix a case of "background thread updating UI" --- Source/SPDatabaseDocument.m | 34 ++++++++++++++++++---------------- 1 file 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]; -- cgit v1.2.3