diff options
| author | 2014-12-14 08:24:26 -0500 | |
|---|---|---|
| committer | 2014-12-14 08:24:26 -0500 | |
| commit | 89214766d8e3e7b8dd749a1fa18a5b9727f5010d (patch) | |
| tree | 34ad5aa84ac9674ebb5b7a23b5a3377e8629ee33 /SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp | |
| parent | 7167ce41b61d2ba2cdb526777a4233eb84a3b66a (diff) | |
Imported Upstream version 3.0.0upstream/3.0.0
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp b/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp index 61f5cb2..f8c51dc 100644 --- a/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp @@ -174,7 +174,7 @@ void DbObjectOrganizer::processPreparation() } } - if (referencedTables.size() > 0 && !confirmFunction(referencedTables.toList())) + if (referencedTables.size() > 0 && !execConfirmFunctionInMainThread(referencedTables.toList())) referencedTables.clear(); for (const QString& srcTable : referencedTables) @@ -370,8 +370,6 @@ bool DbObjectOrganizer::copyTableToDb(const QString& table) { QString ddl; QString targetTable = table; -// AttachGuard attach = srcDb->guardedAttach(dstDb, true); -// QString attachName = attach->getName(); if (renamed.contains(table) || !attachName.isNull()) { SqliteQueryPtr parsedObject = srcResolver->getParsedObject(table, SchemaResolver::TABLE); @@ -737,6 +735,21 @@ void DbObjectOrganizer::emitFinished(bool success) setExecuting(false); } +bool DbObjectOrganizer::execConfirmFunctionInMainThread(const QStringList& tables) +{ + bool res; + bool invokation = QMetaObject::invokeMethod(this, "confirmFunctionSlot", Qt::BlockingQueuedConnection, + Q_RETURN_ARG(bool, res), Q_ARG(QStringList, tables)); + + if (!invokation) + { + qCritical() << "Could not call DbObjectOrganizer::confirmFunctionSlot() between threads!"; + return false; + } + + return res; +} + void DbObjectOrganizer::processPreparationFinished() { if (errorsToConfirm.size() > 0 && !conversionErrorsConfimFunction(errorsToConfirm)) @@ -775,3 +788,8 @@ void DbObjectOrganizer::processPreparationFinished() QThreadPool::globalInstance()->start(this); } + +bool DbObjectOrganizer::confirmFunctionSlot(const QStringList& tables) +{ + return confirmFunction(tables); +} |
