aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2014-12-14 08:24:32 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2014-12-14 08:24:32 -0500
commite571839e140139a6a819077e94cf8cc01c13b29f (patch)
tree8263635257cfb5ed979a584a958103b700bf31e7 /SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp
parent407eac41f46936e3f346bb5a964a682e578b4237 (diff)
parent89214766d8e3e7b8dd749a1fa18a5b9727f5010d (diff)
Merge tag 'upstream/3.0.0'
Upstream version 3.0.0 # gpg: Signature made Sun 14 Dec 2014 08:24:31 AM EST using RSA key ID EBE9BD91 # gpg: Good signature from "Unit 193 <unit193@gmail.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.org>" # gpg: aka "Unit 193 <unit193@ubuntu.com>"
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/dbobjectorganizer.cpp24
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);
+}