Commit 9408378a authored by Christian Kamm's avatar Christian Kamm
Browse files

QmlJSEditor: Fix file/directory imports for qml files not in a project.

Reviewed-by: Roberto Raggi
parent 107ad1ca
......@@ -749,12 +749,11 @@ static void appendExtraSelectionsForMessages(
void QmlJSTextEditor::onDocumentUpdated(QmlJS::Document::Ptr doc)
{
if (file()->fileName() != doc->fileName()) {
return;
}
if (doc->documentRevision() != document()->revision()) {
// got an outdated document.
if (file()->fileName() != doc->fileName()
|| doc->documentRevision() != document()->revision()) {
// didn't get the currently open, or an up to date document.
// trigger a semantic rehighlight anyway, after a time
updateDocument();
return;
}
......@@ -764,6 +763,7 @@ void QmlJSTextEditor::onDocumentUpdated(QmlJS::Document::Ptr doc)
const SemanticHighlighter::Source source = currentSource(/*force = */ true);
m_semanticHighlighter->rehighlight(source);
} else {
// show parsing errors
QList<QTextEdit::ExtraSelection> selections;
appendExtraSelectionsForMessages(&selections, doc->diagnosticMessages(), document());
setExtraSelections(CodeWarningsSelection, selections);
......
......@@ -100,7 +100,19 @@ Snapshot ModelManager::snapshot() const
void ModelManager::updateSourceFiles(const QStringList &files)
{
refreshSourceFiles(files);
// for files that are not yet in the snapshot, scan the whole directory
QStringList filesToParse;
QSet<QString> sourceDirectories;
foreach (const QString &file, files) {
if (! _snapshot.document(file))
sourceDirectories.insert(QFileInfo(file).path());
else
filesToParse.append(file);
}
refreshSourceFiles(filesToParse);
refreshSourceDirectories(sourceDirectories.toList());
}
QFuture<void> ModelManager::refreshSourceFiles(const QStringList &sourceFiles)
......
......@@ -106,13 +106,7 @@ void QmlProject::parseProject(RefreshOptions options)
}
if (m_projectItem) {
m_projectItem.data()->setSourceDirectory(projectDir().path());
QSet<QString> sourceDirectories;
foreach (const QString &file, m_projectItem.data()->files()) {
sourceDirectories.insert(QFileInfo(file).path());
}
m_modelManager->updateSourceDirectories(sourceDirectories.toList());
m_modelManager->updateSourceDirectories(m_projectItem.data()->files());
}
m_rootNode->refresh();
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment