diff --git a/doc/qtcreator/images/qtcreator-build-cmake-output.png b/doc/qtcreator/images/qtcreator-build-cmake-output.png index 80040e8bfe6..b8086d9b513 100644 Binary files a/doc/qtcreator/images/qtcreator-build-cmake-output.png and b/doc/qtcreator/images/qtcreator-build-cmake-output.png differ diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc index b36fc863825..17f920bc0ab 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc @@ -155,6 +155,9 @@ (\uicontrol {Zoom In}) or \inlineimage icons/minus.png (\uicontrol {Zoom Out}), or press \key Ctrl++ or \key Ctrl+-. + To hide the output, select the \inlineimage icons/rightsidebaricon.png + (\uicontrol {Hide/Show Right Sidebar}) button or press \key {Alt+Shift+0}. + \section1 CMake Build Steps \QC builds CMake projects by running \c {cmake . --build}, which then runs diff --git a/doc/qtcreator/src/editors/creator-coding-edit-mode.qdoc b/doc/qtcreator/src/editors/creator-coding-edit-mode.qdoc index e75de83bfd9..10283d1c667 100644 --- a/doc/qtcreator/src/editors/creator-coding-edit-mode.qdoc +++ b/doc/qtcreator/src/editors/creator-coding-edit-mode.qdoc @@ -284,6 +284,12 @@ supported for namespaces, classes, functions, variables, include statements, and macros. + To move to the type definition of a symbol, select + \uicontrol {Follow Symbol Under Cursor to Type} or press + \key {Ctrl+Shift+F2}. To follow the symbol in the next split, select + \uicontrol {Follow Symbol Under Cursor to Type in Next Split} or + press \key {Ctrl+E, Ctrl+Shift+F2}. + When the cursor is on a string literal and the string is a QRC file path, following the symbol opens the specified resource file for editing in the \uicontrol {Resource Browser}. diff --git a/share/qtcreator/templates/wizards/projects/git.ignore b/share/qtcreator/templates/wizards/projects/git.ignore index fab7372d796..4a0b530afd2 100644 --- a/share/qtcreator/templates/wizards/projects/git.ignore +++ b/share/qtcreator/templates/wizards/projects/git.ignore @@ -37,6 +37,7 @@ Thumbs.db # qtcreator generated files *.pro.user* +CMakeLists.txt.user* # xemacs temporary files *.flc diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 8110cd9d34c..73b414cbac5 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -629,7 +629,7 @@ FilePathInfo FilePath::filePathInfo() const QFileInfo fi(path()); result.fileSize = fi.size(); result.lastModified = fi.lastModified(); - result.fileFlags = (FilePathInfo::FileFlag) fi.permissions().toInt(); + result.fileFlags = (FilePathInfo::FileFlag) int(fi.permissions()); if (fi.isDir()) result.fileFlags |= FilePathInfo::DirectoryType; diff --git a/src/plugins/coreplugin/locator/executefilter.cpp b/src/plugins/coreplugin/locator/executefilter.cpp index 854ea514519..7242c294bcf 100644 --- a/src/plugins/coreplugin/locator/executefilter.cpp +++ b/src/plugins/coreplugin/locator/executefilter.cpp @@ -4,6 +4,7 @@ #include "executefilter.h" #include +#include #include #include #include @@ -114,6 +115,7 @@ void ExecuteFilter::done() { QTC_ASSERT(m_process, return); MessageManager::writeFlashing(m_process->exitMessage()); + EditorManager::updateWindowTitles(); // Refresh VCS topic if needed removeProcess(); runHeadCommand(); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index fdc1c9a6251..50ba5047813 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -916,11 +916,12 @@ FilePaths GitClient::unmanagedFiles(const FilePaths &filePaths) const const CommandResult result = vcsSynchronousExec(it.key(), args, RunFlags::NoOutput); if (result.result() != ProcessResult::FinishedWithSuccess) return filePaths; - const QStringList managedFilePaths - = transform(result.cleanedStdOut().split('\0', Qt::SkipEmptyParts), - [&wd](const QString &fp) { return wd.absoluteFilePath(fp); }); - const QStringList filtered = Utils::filtered(it.value(), [&managedFilePaths, &wd](const QString &fp) { - return !managedFilePaths.contains(wd.absoluteFilePath(fp)); + const auto toAbs = [&wd](const QString &fp) { return wd.absoluteFilePath(fp); }; + const QStringList managedFilePaths = + Utils::transform(result.cleanedStdOut().split('\0', Qt::SkipEmptyParts), toAbs); + const QStringList absPaths = Utils::transform(it.value(), toAbs); + const QStringList filtered = Utils::filtered(absPaths, [&managedFilePaths](const QString &fp) { + return !managedFilePaths.contains(fp); }); res += FileUtils::toFilePathList(filtered); } @@ -1530,7 +1531,9 @@ bool GitClient::synchronousAdd(const FilePath &workingDirectory, const QStringList &extraOptions) { QStringList args{"add"}; - args += extraOptions + files; + args += extraOptions; + args += "--"; + args += files; return vcsSynchronousExec(workingDirectory, args).result() == ProcessResult::FinishedWithSuccess; } @@ -1542,6 +1545,7 @@ bool GitClient::synchronousDelete(const FilePath &workingDirectory, QStringList arguments = {"rm"}; if (force) arguments << "--force"; + arguments << "--"; arguments.append(files); return vcsSynchronousExec(workingDirectory, arguments).result() == ProcessResult::FinishedWithSuccess; diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 0972ac8b36f..d93b66f4f70 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -1834,7 +1834,7 @@ bool GitPluginPrivate::vcsAdd(const FilePath &filePath) bool GitPluginPrivate::vcsDelete(const FilePath &filePath) { - return m_gitClient.synchronousDelete(filePath.parentDir().absolutePath(), true, {filePath.fileName()}); + return m_gitClient.synchronousDelete(filePath.absolutePath(), true, {filePath.fileName()}); } bool GitPluginPrivate::vcsMove(const FilePath &from, const FilePath &to) diff --git a/src/plugins/mesonprojectmanager/mesonprocess.cpp b/src/plugins/mesonprojectmanager/mesonprocess.cpp index da6afe8656e..fbd659ec8af 100644 --- a/src/plugins/mesonprojectmanager/mesonprocess.cpp +++ b/src/plugins/mesonprojectmanager/mesonprocess.cpp @@ -85,6 +85,8 @@ void MesonProcess::setupProcess(const Command &command, const Environment env, bool captureStdo) { + if (m_process) + m_process.release()->deleteLater(); m_process.reset(new QtcProcess); connect(m_process.get(), &QtcProcess::done, this, &MesonProcess::handleProcessDone); if (!captureStdo) { diff --git a/src/plugins/mesonprojectmanager/mesonprojectparser.cpp b/src/plugins/mesonprojectmanager/mesonprojectparser.cpp index dfa8da8e172..8ba63bc0961 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectparser.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectparser.cpp @@ -196,20 +196,18 @@ QList MesonProjectParser::appsTargets() const } return apps; } + bool MesonProjectParser::startParser() { m_parserFutureResult = Utils::runAsync( - ProjectExplorer::ProjectExplorerPlugin::sharedThreadPool(), - [process = &m_process, - introType = m_introType, - buildDir = m_buildDir.toString(), - srcDir = m_srcDir]() { - if (introType == IntroDataType::file) { - return extractParserResults(srcDir, MesonInfoParser::parse(buildDir)); - } else { - return extractParserResults(srcDir, MesonInfoParser::parse(process->stdOut())); - } - }); + ProjectExplorer::ProjectExplorerPlugin::sharedThreadPool(), + [processOutput = m_process.stdOut(), introType = m_introType, + buildDir = m_buildDir.toString(), srcDir = m_srcDir] { + if (introType == IntroDataType::file) + return extractParserResults(srcDir, MesonInfoParser::parse(buildDir)); + else + return extractParserResults(srcDir, MesonInfoParser::parse(processOutput)); + }); Utils::onFinished(m_parserFutureResult, this, &MesonProjectParser::update); return true; diff --git a/src/plugins/squish/suiteconf.cpp b/src/plugins/squish/suiteconf.cpp index 787f14698ea..17e7c383f52 100644 --- a/src/plugins/squish/suiteconf.cpp +++ b/src/plugins/squish/suiteconf.cpp @@ -291,9 +291,7 @@ bool SuiteConf::ensureObjectMapExists() const { if (m_objectMapStyle != "script") { const Utils::FilePath objectMap = objectMapPath(); - bool ok = objectMap.parentDir().ensureWritableDir(); - ok |= objectMap.ensureExistingFile(); - return ok; + return objectMap.parentDir().ensureWritableDir() && objectMap.ensureExistingFile(); } const Utils::FilePath scripts = SquishPlugin::squishSettings()->scriptsPath(language());