From 356bfcc9fd4fa51c0f6299beeba701768be0f2cb Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 25 May 2021 10:11:31 +0200 Subject: [PATCH] Utils: filepathify Link Change-Id: Ie62500bde139158e776f9698ee0ea00c2a113f93 Reviewed-by: Eike Ziller --- src/libs/3rdparty/cplusplus/Symbol.cpp | 2 +- src/libs/languageserverprotocol/lsptypes.cpp | 4 +++- src/libs/utils/link.h | 11 +++++++---- src/plugins/autotest/ctest/ctesttreeitem.cpp | 2 +- src/plugins/autotest/testnavigationwidget.cpp | 5 +++-- src/plugins/autotest/testtreeitem.cpp | 7 ++++--- src/plugins/clangcodemodel/clangfollowsymbol.cpp | 11 +++++++---- .../clangcodemodel/clanggloballocatorfilters.cpp | 8 +++++--- src/plugins/clangcodemodel/clangoverviewmodel.cpp | 2 +- .../clangrefactoring/refactoringengine.cpp | 2 +- src/plugins/cmakeprojectmanager/cmakeeditor.cpp | 2 +- src/plugins/cppeditor/cppincludehierarchy.cpp | 14 +++++++------- src/plugins/cppeditor/cpptypehierarchy.cpp | 8 ++++---- src/plugins/cpptools/cppelementevaluator.cpp | 4 ++-- .../cpptools/cppfollowsymbolundercursor.cpp | 6 +++--- .../cpptools/cppvirtualfunctionproposalitem.cpp | 2 +- .../languageclientsymbolsupport.cpp | 2 +- src/plugins/languageclient/locatorfilter.cpp | 4 ++-- src/plugins/nim/editor/nimtexteditorwidget.cpp | 2 +- src/plugins/qmakeprojectmanager/profileeditor.cpp | 6 +++--- src/plugins/qmljseditor/qmljseditor.cpp | 8 ++++---- src/plugins/texteditor/texteditor.cpp | 15 ++++++++++----- tests/unit/unittest/gtest-creator-printing.cpp | 4 ++-- tests/unit/unittest/refactoringengine-test.cpp | 4 ++-- 24 files changed, 76 insertions(+), 59 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/Symbol.cpp b/src/libs/3rdparty/cplusplus/Symbol.cpp index 62100474b42..05254e9d96a 100644 --- a/src/libs/3rdparty/cplusplus/Symbol.cpp +++ b/src/libs/3rdparty/cplusplus/Symbol.cpp @@ -450,5 +450,5 @@ Utils::Link Symbol::toLink() const if (isGenerated()) column = 0; - return Utils::Link(filename, line, column); + return Utils::Link(Utils::FilePath::fromString(filename), line, column); } diff --git a/src/libs/languageserverprotocol/lsptypes.cpp b/src/libs/languageserverprotocol/lsptypes.cpp index bbc8271dce3..bae7f157f11 100644 --- a/src/libs/languageserverprotocol/lsptypes.cpp +++ b/src/libs/languageserverprotocol/lsptypes.cpp @@ -366,7 +366,9 @@ Utils::Link Location::toLink() const // fromPercentEncoding convert %xx encoding to raw values and then interpret // the result as utf-8, so toUtf8() must be used here. file = QUrl::fromPercentEncoding(file.toUtf8()); - return Utils::Link(file, range().start().line() + 1, range().start().character()); + return Utils::Link(Utils::FilePath::fromString(file), + range().start().line() + 1, + range().start().character()); } DocumentUri::DocumentUri(const QString &other) diff --git a/src/libs/utils/link.h b/src/libs/utils/link.h index caf58a02514..53d8f408264 100644 --- a/src/libs/utils/link.h +++ b/src/libs/utils/link.h @@ -25,23 +25,26 @@ #pragma once +#include + #include #include #include + namespace Utils { struct Link { - Link(const QString &fileName = QString(), int line = 0, int column = 0) - : targetFileName(fileName) + Link(const Utils::FilePath &filePath = Utils::FilePath(), int line = 0, int column = 0) + : targetFilePath(filePath) , targetLine(line) , targetColumn(column) {} bool hasValidTarget() const - { return !targetFileName.isEmpty(); } + { return !targetFilePath.isEmpty(); } bool hasValidLinkText() const { return linkTextStart != linkTextEnd; } @@ -52,7 +55,7 @@ struct Link int linkTextStart = -1; int linkTextEnd = -1; - QString targetFileName; + Utils::FilePath targetFilePath; int targetLine; int targetColumn; }; diff --git a/src/plugins/autotest/ctest/ctesttreeitem.cpp b/src/plugins/autotest/ctest/ctesttreeitem.cpp index d2ebdcc709b..3f9cbb9e343 100644 --- a/src/plugins/autotest/ctest/ctesttreeitem.cpp +++ b/src/plugins/autotest/ctest/ctesttreeitem.cpp @@ -88,7 +88,7 @@ QVariant CTestTreeItem::data(int column, int role) const return checked(); if (role == LinkRole) { QVariant itemLink; - itemLink.setValue(Utils::Link(filePath(), line())); + itemLink.setValue(Utils::Link(Utils::FilePath::fromString(filePath()), line())); return itemLink; } return ITestTreeItem::data(column, role); diff --git a/src/plugins/autotest/testnavigationwidget.cpp b/src/plugins/autotest/testnavigationwidget.cpp index 0af3120d68f..525a38a5bac 100644 --- a/src/plugins/autotest/testnavigationwidget.cpp +++ b/src/plugins/autotest/testnavigationwidget.cpp @@ -267,8 +267,9 @@ void TestNavigationWidget::onItemActivated(const QModelIndex &index) { const Utils::Link link = index.data(LinkRole).value(); if (link.hasValidTarget()) { - Core::EditorManager::openEditorAt(link.targetFileName, link.targetLine, - link.targetColumn); + Core::EditorManager::openEditorAt(link.targetFilePath, + link.targetLine, + link.targetColumn); } } diff --git a/src/plugins/autotest/testtreeitem.cpp b/src/plugins/autotest/testtreeitem.cpp index a93b2ec45bc..c84259b0cbd 100644 --- a/src/plugins/autotest/testtreeitem.cpp +++ b/src/plugins/autotest/testtreeitem.cpp @@ -137,12 +137,12 @@ bool ITestTreeItem::lessThan(const ITestTreeItem *other, ITestTreeItem::SortMode const Utils::Link &leftLink = data(0, LinkRole).value(); const Utils::Link &rightLink = other->data(0, LinkRole).value(); - if (leftLink.targetFileName == rightLink.targetFileName) { + if (leftLink.targetFilePath == rightLink.targetFilePath) { return leftLink.targetLine == rightLink.targetLine ? leftLink.targetColumn > rightLink.targetColumn : leftLink.targetLine > rightLink.targetLine; } - return leftLink.targetFileName > rightLink.targetFileName; + return leftLink.targetFilePath > rightLink.targetFilePath; } } return true; @@ -185,7 +185,8 @@ QVariant TestTreeItem::data(int column, int role) const if (type() == GroupNode) return QVariant(); QVariant itemLink; - itemLink.setValue(Utils::Link(filePath(), line(), int(m_column))); + itemLink.setValue( + Utils::Link(Utils::FilePath::fromString(filePath()), line(), int(m_column))); return itemLink; } return ITestTreeItem::data(column, role); diff --git a/src/plugins/clangcodemodel/clangfollowsymbol.cpp b/src/plugins/clangcodemodel/clangfollowsymbol.cpp index 221c59aae63..07c4b84cb48 100644 --- a/src/plugins/clangcodemodel/clangfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangfollowsymbol.cpp @@ -117,7 +117,7 @@ static Utils::Link linkAtCursor(const QTextCursor &cursor, if (mark.extraInfo.includeDirectivePath && !isValidIncludePathToken(mark)) return Link(); - Link token(filePath, mark.line, mark.column); + Link token(Utils::FilePath::fromString(filePath), mark.line, mark.column); token.linkTextStart = getMarkPos(cursor, mark); token.linkTextEnd = token.linkTextStart + mark.length; @@ -155,8 +155,9 @@ static ::Utils::ProcessLinkCallback extendedCallback(::Utils::ProcessLinkCallbac // If globalFollowSymbol finds nothing follow to the declaration. return [original_callback = std::move(callback), result](const ::Utils::Link &link) { if (link.linkTextStart < 0 && result.isResultOnlyForFallBack) { - return original_callback(::Utils::Link(result.fileName, result.startLine, - result.startColumn - 1)); + return original_callback(::Utils::Link(::Utils::FilePath::fromString(result.fileName), + result.startLine, + result.startColumn - 1)); } return original_callback(link); }; @@ -243,7 +244,9 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data, symbolFinder, inNextSplit); } else { - callback(Link(result.fileName, result.startLine, result.startColumn - 1)); + callback(Link(Utils::FilePath::fromString(result.fileName), + result.startLine, + result.startColumn - 1)); } }); diff --git a/src/plugins/clangcodemodel/clanggloballocatorfilters.cpp b/src/plugins/clangcodemodel/clanggloballocatorfilters.cpp index 38e45f8e355..cee2f8718bf 100644 --- a/src/plugins/clangcodemodel/clanggloballocatorfilters.cpp +++ b/src/plugins/clangcodemodel/clanggloballocatorfilters.cpp @@ -162,17 +162,19 @@ QList ClangGlobalSymbolFilter::matchesFor( QList matches = m_cppFilter->matchesFor(future, entry); const QList lspMatches = m_lspFilter->matchesFor(future, entry); if (!lspMatches.isEmpty()) { - std::set> locations; + std::set> locations; for (const auto &entry : qAsConst(matches)) { const CppTools::IndexItem::Ptr item = qvariant_cast(entry.internalData); - locations.insert(std::make_tuple(item->fileName(), item->line(), item->column())); + locations.insert(std::make_tuple(Utils::FilePath::fromString(item->fileName()), + item->line(), + item->column())); } for (const auto &entry : lspMatches) { if (!entry.internalData.canConvert()) continue; const auto link = qvariant_cast(entry.internalData); - if (locations.find(std::make_tuple(link.targetFileName, link.targetLine, + if (locations.find(std::make_tuple(link.targetFilePath, link.targetLine, link.targetColumn)) == locations.cend()) { matches << entry; // TODO: Insert sorted? } diff --git a/src/plugins/clangcodemodel/clangoverviewmodel.cpp b/src/plugins/clangcodemodel/clangoverviewmodel.cpp index 88c5aa9d9fb..48ba29924be 100644 --- a/src/plugins/clangcodemodel/clangoverviewmodel.cpp +++ b/src/plugins/clangcodemodel/clangoverviewmodel.cpp @@ -226,7 +226,7 @@ Link OverviewModel::linkFromIndex(const QModelIndex &sourceIndex) const auto item = static_cast(itemForIndex(sourceIndex)); if (!item) return {}; - return Link(m_filePath, item->token.line, item->token.column - 1); + return Link(FilePath::fromString(m_filePath), item->token.line, item->token.column - 1); } LineColumn OverviewModel::lineColumnFromIndex(const QModelIndex &sourceIndex) const diff --git a/src/plugins/clangrefactoring/refactoringengine.cpp b/src/plugins/clangrefactoring/refactoringengine.cpp index 1b6c81538d0..f376d5806b4 100644 --- a/src/plugins/clangrefactoring/refactoringengine.cpp +++ b/src/plugins/clangrefactoring/refactoringengine.cpp @@ -132,7 +132,7 @@ void RefactoringEngine::globalFollowSymbol(const CppTools::CursorInEditor &data, }); - processLinkCallback(Link(usage.path, usage.line, usage.column - 1)); + processLinkCallback(Link(Utils::FilePath::fromString(usage.path), usage.line, usage.column - 1)); } bool RefactoringEngine::isRefactoringEngineAvailable() const diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index 755c4f3b625..1ec3414b2d6 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -212,7 +212,7 @@ void CMakeEditorWidget::findLinkAt(const QTextCursor &cursor, else return processLinkCallback(link); } - link.targetFileName = fileName; + link.targetFilePath = Utils::FilePath::fromString(fileName); link.linkTextStart = cursor.position() - positionInBlock + beginPos + 1; link.linkTextEnd = cursor.position() - positionInBlock + endPos; } diff --git a/src/plugins/cppeditor/cppincludehierarchy.cpp b/src/plugins/cppeditor/cppincludehierarchy.cpp index 2a9e9b7cfee..c16a8c6855e 100644 --- a/src/plugins/cppeditor/cppincludehierarchy.cpp +++ b/src/plugins/cppeditor/cppincludehierarchy.cpp @@ -162,7 +162,7 @@ private: Qt::ItemFlags flags(int) const override { - Utils::Link link(m_filePath, m_line); + const Utils::Link link(Utils::FilePath::fromString(m_filePath), m_line); if (link.hasValidTarget()) return Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable; return Qt::ItemIsEnabled | Qt::ItemIsSelectable; @@ -199,7 +199,7 @@ QVariant CppIncludeHierarchyItem::data(int column, int role) const case Qt::DecorationRole: return FileIconProvider::icon(QFileInfo(m_filePath)); case LinkRole: - return QVariant::fromValue(Utils::Link(m_filePath, m_line)); + return QVariant::fromValue(Utils::Link(Utils::FilePath::fromString(m_filePath), m_line)); } return QVariant(); @@ -282,7 +282,7 @@ QMimeData *CppIncludeHierarchyModel::mimeData(const QModelIndexList &indexes) co for (const QModelIndex &index : indexes) { auto link = index.data(LinkRole).value(); if (link.hasValidTarget()) - data->addFile(link.targetFileName, link.targetLine, link.targetColumn); + data->addFile(link.targetFilePath.toString(), link.targetLine, link.targetColumn); } return data; } @@ -434,11 +434,11 @@ void CppIncludeHierarchyWidget::perform() if (!m_editor) return; - QString document = m_editor->textDocument()->filePath().toString(); - m_model.buildHierarchy(document); + const Utils::FilePath documentPath = m_editor->textDocument()->filePath(); + m_model.buildHierarchy(documentPath.toString()); m_inspectedFile->setText(m_editor->textDocument()->displayName()); - m_inspectedFile->setLink(Utils::Link(document)); + m_inspectedFile->setLink(Utils::Link(documentPath)); // expand "Includes" and "Included by" m_treeView->expand(m_model.index(0, 0)); @@ -465,7 +465,7 @@ void CppIncludeHierarchyWidget::onItemActivated(const QModelIndex &index) { const auto link = index.data(LinkRole).value(); if (link.hasValidTarget()) - EditorManager::openEditorAt(link.targetFileName, + EditorManager::openEditorAt(link.targetFilePath, link.targetLine, link.targetColumn, Constants::CPPEDITOR_ID); diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp index 6d1dad94160..ab850b5f4ea 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.cpp +++ b/src/plugins/cppeditor/cpptypehierarchy.cpp @@ -332,11 +332,11 @@ void CppTypeHierarchyWidget::onItemActivated(const QModelIndex &index) return; const Link updatedLink = CppElementEvaluator::linkFromExpression( - getExpression(index), link.targetFileName); + getExpression(index), link.targetFilePath.toString()); if (updatedLink.hasValidTarget()) link = updatedLink; - Core::EditorManager::openEditorAt(link.targetFileName, + Core::EditorManager::openEditorAt(link.targetFilePath, link.targetLine, link.targetColumn, Constants::CPPEDITOR_ID); @@ -346,7 +346,7 @@ void CppTypeHierarchyWidget::onItemDoubleClicked(const QModelIndex &index) { const auto link = index.data(LinkRole).value(); if (link.hasValidTarget()) - performFromExpression(getExpression(index), link.targetFileName); + performFromExpression(getExpression(index), link.targetFilePath.toString()); } // CppTypeHierarchyFactory @@ -390,7 +390,7 @@ QMimeData *CppTypeHierarchyModel::mimeData(const QModelIndexList &indexes) const foreach (const QModelIndex &index, indexes) { auto link = index.data(LinkRole).value(); if (link.hasValidTarget()) - data->addFile(link.targetFileName, link.targetLine, link.targetColumn); + data->addFile(link.targetFilePath.toString(), link.targetLine, link.targetColumn); } return data; } diff --git a/src/plugins/cpptools/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp index 9cb6c6f8076..2fff470bf77 100644 --- a/src/plugins/cpptools/cppelementevaluator.cpp +++ b/src/plugins/cpptools/cppelementevaluator.cpp @@ -90,7 +90,7 @@ public: helpCategory = Core::HelpItem::Brief; helpIdCandidates = QStringList(fileName); helpMark = fileName; - link = Utils::Link(path); + link = Utils::Link(Utils::FilePath::fromString(path)); tooltip = path; } @@ -108,7 +108,7 @@ public: const QString macroName = QString::fromUtf8(macro.name(), macro.name().size()); helpIdCandidates = QStringList(macroName); helpMark = macroName; - link = Utils::Link(macro.fileName(), macro.line()); + link = Utils::Link(Utils::FilePath::fromString(macro.fileName()), macro.line()); tooltip = macro.toStringWithLineBreaks(); } }; diff --git a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp index 4fc2c8e3160..a9cfe89360f 100644 --- a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp +++ b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp @@ -208,7 +208,7 @@ Link findMacroLink_helper(const QByteArray &name, Document::Ptr doc, const Snaps foreach (const Macro ¯o, doc->definedMacros()) { if (macro.name() == name) { Link link; - link.targetFileName = macro.fileName(); + link.targetFilePath = Utils::FilePath::fromString(macro.fileName()); link.targetLine = macro.line(); return link; } @@ -643,7 +643,7 @@ void FollowSymbolUnderCursor::findLink( const int lineno = cursor.blockNumber() + 1; foreach (const Document::Include &incl, doc->resolvedIncludes()) { if (incl.line() == lineno) { - link.targetFileName = incl.resolvedFileName(); + link.targetFilePath = Utils::FilePath::fromString(incl.resolvedFileName()); link.linkTextStart = beginOfToken + 1; link.linkTextEnd = endOfToken - 1; processLinkCallback(link); @@ -671,7 +671,7 @@ void FollowSymbolUnderCursor::findLink( editorWidget->showPreProcessorWidget(); } else if (fileName != CppModelManager::configurationFileName()) { const Macro ¯o = use->macro(); - link.targetFileName = macro.fileName(); + link.targetFilePath = Utils::FilePath::fromString(macro.fileName()); link.targetLine = macro.line(); link.linkTextStart = use->utf16charsBegin(); link.linkTextEnd = use->utf16charsEnd(); diff --git a/src/plugins/cpptools/cppvirtualfunctionproposalitem.cpp b/src/plugins/cpptools/cppvirtualfunctionproposalitem.cpp index c0e1a1308e4..3b88ebcbb34 100644 --- a/src/plugins/cpptools/cppvirtualfunctionproposalitem.cpp +++ b/src/plugins/cpptools/cppvirtualfunctionproposalitem.cpp @@ -46,7 +46,7 @@ void VirtualFunctionProposalItem::apply(TextEditor::TextDocumentManipulatorInter Core::EditorManager::OpenEditorFlags flags = Core::EditorManager::NoFlags; if (m_openInSplit) flags |= Core::EditorManager::OpenInOtherSplit; - Core::EditorManager::openEditorAt(m_link.targetFileName, + Core::EditorManager::openEditorAt(m_link.targetFilePath, m_link.targetLine, m_link.targetColumn, CppEditor::Constants::CPPEDITOR_ID, diff --git a/src/plugins/languageclient/languageclientsymbolsupport.cpp b/src/plugins/languageclient/languageclientsymbolsupport.cpp index 5d78618e20b..fabb628bebc 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.cpp +++ b/src/plugins/languageclient/languageclientsymbolsupport.cpp @@ -110,7 +110,7 @@ void SymbolSupport::findLinkAt(TextEditor::TextDocument *document, if (!resolveTarget) { QTextCursor linkCursor = cursor; linkCursor.select(QTextCursor::WordUnderCursor); - Utils::Link link(document->filePath().toString(), + Utils::Link link(document->filePath(), linkCursor.blockNumber() + 1, linkCursor.positionInBlock()); link.linkTextStart = linkCursor.selectionStart(); diff --git a/src/plugins/languageclient/locatorfilter.cpp b/src/plugins/languageclient/locatorfilter.cpp index cd8f6d6fa40..11470ecd8da 100644 --- a/src/plugins/languageclient/locatorfilter.cpp +++ b/src/plugins/languageclient/locatorfilter.cpp @@ -195,7 +195,7 @@ void DocumentLocatorFilter::accept(Core::LocatorFilterEntry selection, lineColumn.column); } else if (selection.internalData.canConvert()) { auto link = qvariant_cast(selection.internalData); - Core::EditorManager::openEditorAt(link.targetFileName, link.targetLine, link.targetColumn); + Core::EditorManager::openEditorAt(link.targetFilePath, link.targetLine, link.targetColumn); } } @@ -295,7 +295,7 @@ void WorkspaceLocatorFilter::accept(Core::LocatorFilterEntry selection, { if (selection.internalData.canConvert()) { auto link = qvariant_cast(selection.internalData); - Core::EditorManager::openEditorAt(link.targetFileName, link.targetLine, link.targetColumn); + Core::EditorManager::openEditorAt(link.targetFilePath, link.targetLine, link.targetColumn); } } diff --git a/src/plugins/nim/editor/nimtexteditorwidget.cpp b/src/plugins/nim/editor/nimtexteditorwidget.cpp index 56d8dfacb27..7ec1791c962 100644 --- a/src/plugins/nim/editor/nimtexteditorwidget.cpp +++ b/src/plugins/nim/editor/nimtexteditorwidget.cpp @@ -105,5 +105,5 @@ void NimTextEditorWidget::onFindLinkFinished() } const Line &line = m_request->lines().front(); - m_callback(Utils::Link{line.abs_path, line.row, line.column}); + m_callback(Utils::Link{Utils::FilePath::fromString(line.abs_path), line.row, line.column}); } diff --git a/src/plugins/qmakeprojectmanager/profileeditor.cpp b/src/plugins/qmakeprojectmanager/profileeditor.cpp index 6443af2635c..a3cc9528348 100644 --- a/src/plugins/qmakeprojectmanager/profileeditor.cpp +++ b/src/plugins/qmakeprojectmanager/profileeditor.cpp @@ -238,11 +238,11 @@ void ProFileEditorWidget::findLinkAt(const QTextCursor &cursor, else return processLinkCallback(link); } - link.targetFileName = QDir::cleanPath(fileName); + link.targetFilePath = Utils::FilePath::fromString(QDir::cleanPath(fileName)); } else { - link.targetFileName = checkForPrfFile(buffer); + link.targetFilePath = Utils::FilePath::fromString(checkForPrfFile(buffer)); } - if (!link.targetFileName.isEmpty()) { + if (!link.targetFilePath.isEmpty()) { link.linkTextStart = cursor.position() - positionInBlock + beginPos + 1; link.linkTextEnd = cursor.position() - positionInBlock + endPos; } diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index e7c26c8a05c..39105a0406c 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -772,7 +772,7 @@ void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor, // if it's a file import, link to the file foreach (const ImportInfo &import, semanticInfo.document->bind()->imports()) { if (import.ast() == importAst && import.type() == ImportType::File) { - Utils::Link link(import.path()); + Utils::Link link(Utils::FilePath::fromString(import.path())); link.linkTextStart = importAst->firstSourceLocation().begin(); link.linkTextEnd = importAst->lastSourceLocation().end(); processLinkCallback(Utils::Link()); @@ -790,7 +790,7 @@ void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor, link.linkTextStart = literal->literalToken.begin(); link.linkTextEnd = literal->literalToken.end(); if (semanticInfo.snapshot.document(text)) { - link.targetFileName = text; + link.targetFilePath = Utils::FilePath::fromString(text); processLinkCallback(link); return; } @@ -798,7 +798,7 @@ void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor, semanticInfo.document->path(), text); if (QFileInfo::exists(relative)) { - link.targetFileName = relative; + link.targetFilePath = Utils::FilePath::fromString(relative); processLinkCallback(link); return; } @@ -815,7 +815,7 @@ void QmlJSEditorWidget::findLinkAt(const QTextCursor &cursor, return processLinkCallback(Utils::Link()); Utils::Link link; - link.targetFileName = fileName; + link.targetFilePath = Utils::FilePath::fromString(fileName); link.targetLine = line; link.targetColumn = column - 1; // adjust the column diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 787d4de9b77..2b53bbe1ba1 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -6244,7 +6244,7 @@ bool TextEditorWidget::openLink(const Utils::Link &link, bool inNextSplit) if (!link.hasValidTarget()) return false; - if (!inNextSplit && textDocument()->filePath().toString() == link.targetFileName) { + if (!inNextSplit && textDocument()->filePath() == link.targetFilePath) { EditorManager::addCurrentPositionToNavigationHistory(); gotoLine(link.targetLine, link.targetColumn, true, true); setFocus(); @@ -6254,8 +6254,11 @@ bool TextEditorWidget::openLink(const Utils::Link &link, bool inNextSplit) if (inNextSplit) flags |= EditorManager::OpenInOtherSplit; - return EditorManager::openEditorAt(link.targetFileName, link.targetLine, link.targetColumn, - Id(), flags); + return EditorManager::openEditorAt(link.targetFilePath, + link.targetLine, + link.targetColumn, + Id(), + flags); } bool TextEditorWidgetPrivate::isMouseNavigationEvent(QMouseEvent *e) const @@ -8670,7 +8673,7 @@ void TextEditorLinkLabel::mouseMoveEvent(QMouseEvent *event) return; auto data = new DropMimeData; - data->addFile(m_link.targetFileName, m_link.targetLine, m_link.targetColumn); + data->addFile(m_link.targetFilePath.toString(), m_link.targetLine, m_link.targetColumn); auto drag = new QDrag(this); drag->setMimeData(data); drag->exec(Qt::CopyAction); @@ -8682,7 +8685,9 @@ void TextEditorLinkLabel::mouseReleaseEvent(QMouseEvent *event) if (!m_link.hasValidTarget()) return; - EditorManager::openEditorAt(m_link.targetFileName, m_link.targetLine, m_link.targetColumn); + EditorManager::openEditorAt(m_link.targetFilePath.toString(), + m_link.targetLine, + m_link.targetColumn); } // diff --git a/tests/unit/unittest/gtest-creator-printing.cpp b/tests/unit/unittest/gtest-creator-printing.cpp index af8fc6c0eb4..bbe9e64b178 100644 --- a/tests/unit/unittest/gtest-creator-printing.cpp +++ b/tests/unit/unittest/gtest-creator-printing.cpp @@ -189,8 +189,8 @@ std::ostream &operator<<(std::ostream &out, const LineColumn &lineColumn) std::ostream &operator<<(std::ostream &out, const Link &link) { - return out << "(" << link.targetFileName << ", " << link.targetLine << ", " << link.targetColumn - << ", " << link.linkTextStart << ", " << link.linkTextEnd << ")"; + return out << "(" << link.targetFilePath.toString() << ", " << link.targetLine << ", " + << link.targetColumn << ", " << link.linkTextStart << ", " << link.linkTextEnd << ")"; } const char * toText(Utils::Language language) diff --git a/tests/unit/unittest/refactoringengine-test.cpp b/tests/unit/unittest/refactoringengine-test.cpp index 0648cca8e00..37cfde0d766 100644 --- a/tests/unit/unittest/refactoringengine-test.cpp +++ b/tests/unit/unittest/refactoringengine-test.cpp @@ -155,7 +155,7 @@ TEST_F(RefactoringEngine, InGlobalFollowSymbol) ON_CALL(mockSymbolQuery, declarationsAt(Eq(12), 2, 5)).WillByDefault(Return(usages)); EXPECT_CALL(mockCallback, - Call(AllOf(Field(&Link::targetFileName, Eq("/path1")), + Call(AllOf(Field(&Link::targetFilePath, Eq(Utils::FilePath::fromString("/path1"))), Field(&Link::targetLine, Eq(1)), Field(&Link::targetColumn, Eq(2))))); @@ -171,7 +171,7 @@ TEST_F(RefactoringEngine, InGlobalFollowSymbolSkipCurrentFile) ON_CALL(mockSymbolQuery, declarationsAt(Eq(12), 2, 5)).WillByDefault(Return(usages)); EXPECT_CALL(mockCallback, - Call(AllOf(Field(&Link::targetFileName, Eq("/path2")), + Call(AllOf(Field(&Link::targetFilePath, Eq(Utils::FilePath::fromString("/path2"))), Field(&Link::targetLine, Eq(4)), Field(&Link::targetColumn, Eq(4)))));