diff --git a/src/plugins/coreplugin/idocumentfactory.cpp b/src/plugins/coreplugin/idocumentfactory.cpp index 0d8280dc080..8730c6b01f1 100644 --- a/src/plugins/coreplugin/idocumentfactory.cpp +++ b/src/plugins/coreplugin/idocumentfactory.cpp @@ -46,10 +46,10 @@ const QList IDocumentFactory::allDocumentFactories() return g_documentFactories; } -IDocument *IDocumentFactory::open(const QString &filename) +IDocument *IDocumentFactory::open(const Utils::FilePath &filePath) { QTC_ASSERT(m_opener, return nullptr); - return m_opener(filename); + return m_opener(filePath); } } // namespace Core diff --git a/src/plugins/coreplugin/idocumentfactory.h b/src/plugins/coreplugin/idocumentfactory.h index 796eca0eb6c..bd60cc52ae6 100644 --- a/src/plugins/coreplugin/idocumentfactory.h +++ b/src/plugins/coreplugin/idocumentfactory.h @@ -33,6 +33,8 @@ #include +namespace Utils { class FilePath; } + namespace Core { class IDocument; @@ -45,8 +47,8 @@ public: static const QList allDocumentFactories(); - using Opener = std::function; - IDocument *open(const QString &filename); + using Opener = std::function; + IDocument *open(const Utils::FilePath &filePath); QStringList mimeTypes() const { return m_mimeTypes; } diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 4029f1a5575..95de5c7f02d 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -892,7 +892,7 @@ IDocument *MainWindow::openFiles(const FilePaths &filePaths, const QFileInfo fi(workingDir, fileName); const QString absoluteFilePath = fi.absoluteFilePath(); if (IDocumentFactory *documentFactory = findDocumentFactory(documentFactories, filePath)) { - IDocument *document = documentFactory->open(absoluteFilePath); + IDocument *document = documentFactory->open(FilePath::fromString(absoluteFilePath)); if (!document) { if (flags & ICore::StopOnLoadFail) return res; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index b55b75c0e47..f6893e6c50c 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2081,12 +2081,15 @@ void ProjectExplorerPlugin::extensionsInitialized() const QString filterSeparator = QLatin1String(";;"); QStringList filterStrings; - dd->m_documentFactory.setOpener([](QString fileName) { - const QFileInfo fi(fileName); - if (fi.isDir()) - fileName = FolderNavigationWidget::projectFilesInDirectory(fi.absoluteFilePath()).value(0, fileName); + dd->m_documentFactory.setOpener([](FilePath filePath) { + if (filePath.isDir()) { + const QStringList files = + FolderNavigationWidget::projectFilesInDirectory(filePath.absoluteFilePath().toString()); + if (!files.isEmpty()) + filePath = FilePath::fromString(files.front()); + } - OpenProjectResult result = ProjectExplorerPlugin::openProject(FilePath::fromString(fileName)); + OpenProjectResult result = ProjectExplorerPlugin::openProject(filePath); if (!result) showOpenProjectError(result); return nullptr; diff --git a/src/plugins/tasklist/tasklistplugin.cpp b/src/plugins/tasklist/tasklistplugin.cpp index d41996dcdec..6684f86a92c 100644 --- a/src/plugins/tasklist/tasklistplugin.cpp +++ b/src/plugins/tasklist/tasklistplugin.cpp @@ -209,8 +209,8 @@ bool TaskListPlugin::initialize(const QStringList &arguments, QString *errorMess TaskHub::addCategory(Constants::TASKLISTTASK_ID, tr("My Tasks")); d->m_fileFactory.addMimeType(QLatin1String("text/x-tasklist")); - d->m_fileFactory.setOpener([this](const QString &fileName) { - return openTasks(FilePath::fromString(fileName)); + d->m_fileFactory.setOpener([this](const FilePath &filePath) { + return openTasks(filePath); }); connect(SessionManager::instance(), &SessionManager::sessionLoaded,