Merge remote-tracking branch 'origin/3.1'

Conflicts:
	qtcreator.pri
	qtcreator.qbs
	src/libs/qmljs/qmljsmodelmanagerinterface.cpp
	src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp

Change-Id: Ie216b715d6f87a6d72d3b8fe3d4e777e561579f9
This commit is contained in:
Eike Ziller
2014-05-02 10:00:20 +02:00
64 changed files with 442 additions and 245 deletions

View File

@@ -963,6 +963,41 @@ QmlLanguageBundles ModelManagerInterface::extendedBundles() const
return m_extendedBundles;
}
void ModelManagerInterface::maybeScan(const QStringList &importPaths,
Language::Enum defaultLanguage)
{
QStringList pathToScan;
{
QMutexLocker l(&m_mutex);
foreach (QString importPath, importPaths)
if (!m_scannedPaths.contains(importPath)) {
pathToScan.append(importPath);
}
}
if (pathToScan.count() > 1) {
QFuture<void> result = QtConcurrent::run(&ModelManagerInterface::importScan,
workingCopyInternal(), pathToScan,
this, defaultLanguage,
true);
if (m_synchronizer.futures().size() > 10) {
QList<QFuture<void> > futures = m_synchronizer.futures();
m_synchronizer.clearFutures();
foreach (const QFuture<void> &future, futures) {
if (! (future.isFinished() || future.isCanceled()))
m_synchronizer.addFuture(future);
}
}
m_synchronizer.addFuture(result);
addTaskInternal(result, tr("Scanning QML Imports"), Constants::TASK_IMPORT_SCAN);
}
}
void ModelManagerInterface::updateImportPaths()
{
QStringList allImportPaths;
@@ -1026,36 +1061,7 @@ void ModelManagerInterface::updateImportPaths()
if (!m_shouldScanImports)
return;
QStringList pathToScan;
{
QMutexLocker l(&m_mutex);
foreach (QString importPath, allImportPaths)
if (!m_scannedPaths.contains(importPath)) {
pathToScan.append(importPath);
}
}
if (pathToScan.count() > 1) {
QFuture<void> result = QtConcurrent::run(&ModelManagerInterface::importScan,
workingCopyInternal(), pathToScan,
this, Language::Qml,
true);
if (m_synchronizer.futures().size() > 10) {
QList<QFuture<void> > futures = m_synchronizer.futures();
m_synchronizer.clearFutures();
foreach (const QFuture<void> &future, futures) {
if (! (future.isFinished() || future.isCanceled()))
m_synchronizer.addFuture(future);
}
}
m_synchronizer.addFuture(result);
addTaskInternal(result, tr("Scanning QML Imports"), Constants::TASK_IMPORT_SCAN);
}
maybeScan(allImportPaths, Language::Qml);
}
ModelManagerInterface::ProjectInfo ModelManagerInterface::defaultProjectInfo() const

View File

@@ -244,6 +244,7 @@ protected:
CPlusPlus::Snapshot snapshot,
QHash<QString, QPair<CPlusPlus::Document::Ptr, bool> > documents);
void maybeScan(const QStringList &importPaths, Language::Enum defaultLanguage);
void updateImportPaths();
void loadQmlTypeDescriptionsInternal(const QString &path);