From ccd7365d7e8f300cc3a3d466b26a942fe6a06d4d Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 24 Nov 2022 09:29:50 +0100 Subject: [PATCH 01/22] Doc: Fix link to image in QDS Manual The image format changed from PNG to WEBP. Change-Id: I0b24fee9687f36ae38d5a0377fb79627cc4ca926 Reviewed-by: Mats Honkamaa Reviewed-by: Leena Miettinen --- doc/qtcreator/src/user-interface/creator-file-system-view.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc index 070b6072b33..a37467fc30d 100644 --- a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc @@ -81,7 +81,7 @@ \uicontrol {File System} view is displayed in the \l{Working with Sidebars} {sidebar}. It has a toolbar with additional options. - \image qtcreator-filesystem-view.png "File System view in the sidebar" + \image qtcreator-filesystem-view.webp "File System view in the sidebar" \else The toolbar in the \uicontrol {File System} view contains additional options. From 3d492c47e76e67634a66ef90c1754e5e0f0d49f8 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 18 Nov 2022 10:20:18 +0100 Subject: [PATCH 02/22] FilePath: Backport some pathView() changes After the change to a single-string representation, the QString construction for path() is expensive for the comparison operators and simple convienience functions. Change-Id: I643c7115d3ad52f971d1692230b6eab82645b810 Reviewed-by: Eike Ziller Reviewed-by: Qt CI Bot --- src/libs/utils/filepath.cpp | 13 +++++++++---- src/libs/utils/filepath.h | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index fa969ee7a86..44aa5727574 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -341,6 +341,11 @@ QStringView FilePath::host() const return QStringView{m_data}.mid(m_pathLen + m_schemeLen, m_hostLen); } +QStringView FilePath::pathView() const +{ + return QStringView{m_data}.left(m_pathLen); +} + QString FilePath::path() const { QTC_ASSERT(!m_data.startsWith(u"/./"), return m_data.mid(3, m_pathLen - 3)); @@ -871,7 +876,7 @@ QVariant FilePath::toVariant() const bool FilePath::operator==(const FilePath &other) const { - return QString::compare(path(), other.path(), caseSensitivity()) == 0 + return pathView().compare(other.pathView(), caseSensitivity()) == 0 && host() == other.host() && scheme() == other.scheme(); } @@ -883,7 +888,7 @@ bool FilePath::operator!=(const FilePath &other) const bool FilePath::operator<(const FilePath &other) const { - const int cmp = QString::compare(path(), other.path(), caseSensitivity()); + const int cmp = pathView().compare(other.pathView(), caseSensitivity()); if (cmp != 0) return cmp < 0; if (host() != other.host()) @@ -932,7 +937,7 @@ bool FilePath::isChildOf(const FilePath &s) const /// \returns whether path() startsWith \a s bool FilePath::startsWith(const QString &s) const { - return path().startsWith(s, caseSensitivity()); + return pathView().startsWith(s, caseSensitivity()); } /*! @@ -941,7 +946,7 @@ bool FilePath::startsWith(const QString &s) const */ bool FilePath::endsWith(const QString &s) const { - return path().endsWith(s, caseSensitivity()); + return pathView().endsWith(s, caseSensitivity()); } /*! diff --git a/src/libs/utils/filepath.h b/src/libs/utils/filepath.h index f7ba8631bcb..d0fb810e465 100644 --- a/src/libs/utils/filepath.h +++ b/src/libs/utils/filepath.h @@ -74,6 +74,7 @@ public: QStringView scheme() const; QStringView host() const; + QStringView pathView() const; QString path() const; void setParts(const QStringView scheme, const QStringView host, const QStringView path); From 5995810d341b22ff20f3350b851f55a856d87aae Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 18 Nov 2022 09:19:12 +0100 Subject: [PATCH 03/22] FilePath: optimize comparison * The QTC_ASSERT in pathView() is quite expensive * Constructing the scheme using scheme() is not required Change-Id: Ibea33dd6abf67c8bd184d118f23e2598075c362c Reviewed-by: hjk (cherry picked from commit e47141753995f91565f8e3781315b40fe620d16c) Reviewed-by: Thomas Hartmann --- src/libs/utils/filepath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 44aa5727574..75fba81867c 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1346,7 +1346,7 @@ bool FilePath::isNewerThan(const QDateTime &timeStamp) const */ Qt::CaseSensitivity FilePath::caseSensitivity() const { - if (scheme().isEmpty()) + if (m_schemeLen == 0) return HostOsInfo::fileNameCaseSensitivity(); // FIXME: This could or possibly should the target device's file name case sensitivity From e0b84100c302fd114fde71b11e7ed4ad5fb4860f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 23 Nov 2022 15:56:36 +0100 Subject: [PATCH 04/22] change log: adapt doc-snapshot link and add CMake preset QtC doc Change-Id: I5f7a086d55aefd3db8990c5fcb8a585dedbb5808 Reviewed-by: Cristian Adam --- dist/changelog/changes-9.0.0.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dist/changelog/changes-9.0.0.md b/dist/changelog/changes-9.0.0.md index 3997f62bab0..e968e526c10 100644 --- a/dist/changelog/changes-9.0.0.md +++ b/dist/changelog/changes-9.0.0.md @@ -120,7 +120,8 @@ Projects * Turned `Package manager auto setup` off by default * Added support for CMake configure and build presets, including conditions and toolchain files (QTCREATORBUG-24555) - ([CMake Documentation](https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-build-settings-cmake.html#cmake-presets), + [CMake Documentation](https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html)) * Added option for changing environment for configure step * Added option for hiding subfolders in source groups (QTCREATORBUG-27432) * Added support for `Build File` also from header files (QTCREATORBUG-26164) @@ -187,7 +188,7 @@ Test Integration ---------------- * Added support for Squish - ([Documentation](https://doc-snapshots.qt.io/qtcreator-9.0/creator-squish.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-squish.html)) * Catch 2 * Fixed handling of exceptions (QTCREATORBUG-28131) * Fixed crash (QTCREATORBUG-28269) From 27df7154797185378f8d3b6f8167d88569b039a9 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 24 Nov 2022 13:23:07 +0100 Subject: [PATCH 05/22] ClearCase: Fix display of mnemonic Change-Id: Ic0f8e55ad2a141031d8540c6fdf7b0ed5a9b0aba Reviewed-by: hjk Reviewed-by: Orgad Shaneh --- src/plugins/clearcase/settingspage.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/plugins/clearcase/settingspage.cpp b/src/plugins/clearcase/settingspage.cpp index 6b13f4bd092..47d49e4ba2e 100644 --- a/src/plugins/clearcase/settingspage.cpp +++ b/src/plugins/clearcase/settingspage.cpp @@ -108,9 +108,8 @@ SettingsPageWidget::SettingsPageWidget() using namespace Layouting; - Row { - Tr::tr("Arg&uments:"), - diffArgsEdit + Form { + Tr::tr("Arg&uments:"), diffArgsEdit }.attachTo(diffWidget, WithoutMargins); Column { From b6d3333daf7af245e0816ec0402c7c97e39f3993 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 24 Nov 2022 11:12:05 +0100 Subject: [PATCH 06/22] Bump version to 9.0.1 Change-Id: Iaa42623df5a1b35833cb1f9e0cfc3187b580e34b Reviewed-by: Eike Ziller --- cmake/QtCreatorIDEBranding.cmake | 4 ++-- qbs/modules/qtc/qtc.qbs | 4 ++-- qtcreator_ide_branding.pri | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index 3e5a9a6d8c6..e7f7b39cadc 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "9.0.0") # The IDE version. +set(IDE_VERSION "9.0.1") # The IDE version. set(IDE_VERSION_COMPAT "9.0.0") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "9.0.0") # The IDE display version. +set(IDE_VERSION_DISPLAY "9.0.1") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2022") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index 0acfbe4412e..527bfe5e6dd 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -6,10 +6,10 @@ import qbs.Utilities Module { Depends { name: "cpp"; required: false } - property string qtcreator_display_version: '9.0.0' + property string qtcreator_display_version: '9.0.1' property string ide_version_major: '9' property string ide_version_minor: '0' - property string ide_version_release: '0' + property string ide_version_release: '1' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release diff --git a/qtcreator_ide_branding.pri b/qtcreator_ide_branding.pri index 995bb15f623..f03edd9f28a 100644 --- a/qtcreator_ide_branding.pri +++ b/qtcreator_ide_branding.pri @@ -1,6 +1,6 @@ -QTCREATOR_VERSION = 9.0.0 +QTCREATOR_VERSION = 9.0.1 QTCREATOR_COMPAT_VERSION = 9.0.0 -QTCREATOR_DISPLAY_VERSION = 9.0.0 +QTCREATOR_DISPLAY_VERSION = 9.0.1 QTCREATOR_COPYRIGHT_YEAR = 2022 IDE_DISPLAY_NAME = Qt Creator From 7a2901d502ccf35ec8edcaf67f6ebff239e844f7 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 18 Nov 2022 15:37:28 +0100 Subject: [PATCH 07/22] JSON wizards: Read additional paths from settings Opens possibilities like the installers writings some. Change-Id: Ie8c87731fb6bb9c7129032f64878e42e9bcf4cf0 Reviewed-by: Qt CI Bot Reviewed-by: Reviewed-by: Alessandro Portale --- src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index 673e3bea0ae..dfcc80d6c59 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -513,6 +513,9 @@ FilePaths &JsonWizardFactory::searchPaths() Core::ICore::resourcePath(WIZARD_PATH)}; for (const QString &environmentTemplateDirName : environmentTemplatesPaths()) m_searchPaths << FilePath::fromString(environmentTemplateDirName); + m_searchPaths << Utils::transform( + Core::ICore::settings()->value("Wizards/SearchPaths").toStringList(), + [](const QString &s) { return FilePath::fromUserInput(s); }); } return m_searchPaths; From 2ff5f18bff8c5a5d7a18353148e1ed9e1e81310f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 24 Nov 2022 10:57:55 +0100 Subject: [PATCH 08/22] Transform doc.qt.io/qt-creator links to internal qthelp links, for links that are found locally in the documentation. That opens such links in Qt Creator, instead of in the web, if possible. Change-Id: I2270c6947db22f4aeb4968bf5b7245de57521c92 Reviewed-by: Cristian Adam --- src/plugins/coreplugin/mainwindow.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 9c63e36e708..4950eb909b1 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -11,6 +11,7 @@ #include "externaltoolmanager.h" #include "fancytabwidget.h" #include "generalsettings.h" +#include "helpmanager.h" #include "icore.h" #include "idocumentfactory.h" #include "jsexpander.h" @@ -1516,8 +1517,17 @@ void MainWindow::changeLog() return; const FilePath file = versionedFiles.at(index).second; QString contents = QString::fromUtf8(file.fileContents().value_or(QByteArray())); - contents.replace(QRegularExpression("(QT(CREATOR)?BUG-[0-9]+)"), - "[\\1](https://bugreports.qt.io/browse/\\1)"); + static const QRegularExpression bugexpr("(QT(CREATOR)?BUG-[0-9]+)"); + contents.replace(bugexpr, "[\\1](https://bugreports.qt.io/browse/\\1)"); + static const QRegularExpression docexpr("https://doc[.]qt[.]io/qtcreator/([.a-zA-Z/_-]*)"); + QList matches; + for (const QRegularExpressionMatch &m : docexpr.globalMatch(contents)) + matches.append(m); + Utils::reverseForeach(matches, [&contents](const QRegularExpressionMatch &match) { + const QString qthelpUrl = "qthelp://org.qt-project.qtcreator/doc/" + match.captured(1); + if (!HelpManager::fileData(qthelpUrl).isEmpty()) + contents.replace(match.capturedStart(), match.capturedLength(), qthelpUrl); + }); textEdit->setMarkdown(contents); }; connect(versionCombo, &QComboBox::currentIndexChanged, textEdit, showLog); From ea3e2279448cfa1756de7b277cc11eabc42de477 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 24 Nov 2022 16:35:51 +0100 Subject: [PATCH 09/22] CPlusPlus tools: Fix build Catch up to recent refactorings. Change-Id: I14e8fa03a50ea4169ccdd41ed0d147d6ecb8af8b Reviewed-by: hjk --- .../cplusplus-ast2png/cplusplus-ast2png.cpp | 6 +-- .../cplusplus-mkvisitor.cpp | 31 +++++++------- .../cplusplus-update-frontend.cpp | 40 +++++++++---------- 3 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp b/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp index d87b61bdad0..caa00072b8d 100644 --- a/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp +++ b/src/tools/cplusplus-ast2png/cplusplus-ast2png.cpp @@ -280,9 +280,9 @@ protected: virtual bool visit(Declaration *symbol) { out << _id[symbol].constData() << " [label=\""; out << "Declaration\\n"; - out << qPrintable(o(symbol->name())); + out << qPrintable(o.prettyName(symbol->name())); out << ": "; - out << qPrintable(o(symbol->type())); + out << qPrintable(o.prettyType(symbol->type())); if (symbol->isDeprecated()) out << "\\n(deprecated)"; if (Function *funTy = symbol->type()->asFunctionType()) { @@ -308,7 +308,7 @@ protected: virtual bool visit(BaseClass *symbol) { out << _id[symbol].constData() << " [label=\"BaseClass\\n"; - out << qPrintable(o(symbol->name())); + out << qPrintable(o.prettyName(symbol->name())); if (symbol->isDeprecated()) out << "\\n(deprecated)"; out << "\"];" << std::endl; diff --git a/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp b/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp index bf0629ca605..149d345b463 100644 --- a/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp +++ b/src/tools/cplusplus-mkvisitor/cplusplus-mkvisitor.cpp @@ -44,7 +44,7 @@ class MkVisitor: protected SymbolVisitor bool isMiscNode(ClassOrNamespace *b) const { for (const ClassOrNamespace *u : b->usings()) { - if (oo(u->symbols().first()->name()) == QLatin1String("AST")) + if (oo.prettyName(u->symbols().first()->name()) == QLatin1String("AST")) return true; } @@ -58,7 +58,7 @@ class MkVisitor: protected SymbolVisitor retType->clear(); if (interfaces.contains(b) || isMiscNode(b)) { - QString className = oo(b->symbols().first()->name()); + QString className = oo.prettyName(b->symbols().first()->name()); if (className.endsWith(QLatin1String("AST"))) { className.chop(3); @@ -114,7 +114,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); if (className == QLatin1String("AST")) continue; @@ -162,7 +162,7 @@ public: Q_ASSERT(klass != 0); QString retTy ; - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); std::cout << " void " << qPrintable(getAcceptFunctionName(b, &retTy)) << "(" << qPrintable(className) << " *ast);" << std::endl; } } @@ -170,7 +170,8 @@ public: std::cout << std::endl; for (ClassOrNamespace *iface : std::as_const(interfaces)) { - std::cout << " // " << qPrintable(oo(iface->symbols().first()->name())) << std::endl; + std::cout << " // " << qPrintable(oo.prettyName(iface->symbols().first()->name())) + << std::endl; const QList values = implements.value(iface); for (ClassOrNamespace *b : values) { Class *klass = 0; @@ -180,7 +181,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); std::cout << " virtual bool visit(" << qPrintable(className) << " *ast);" << std::endl; } std::cout << std::endl; @@ -197,7 +198,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); if (className == QLatin1String("AST")) continue; @@ -230,7 +231,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); if (className == QLatin1String("AST")) continue; @@ -256,7 +257,7 @@ public: } for (ClassOrNamespace *iface : std::as_const(interfaces)) { - std::cout << "// " << qPrintable(oo(iface->symbols().first()->name())) << std::endl; + std::cout << "// " << qPrintable(oo.prettyName(iface->symbols().first()->name())) << std::endl; const QList values = implements.value(iface); for (ClassOrNamespace *b : values) { Class *klass = 0; @@ -266,7 +267,7 @@ public: Q_ASSERT(klass != 0); - QString className = oo(klass->name()); + QString className = oo.prettyName(klass->name()); std::cout << "bool Semantic::visit(" << qPrintable(className) << " *ast)" << std::endl << "{" << std::endl; @@ -293,12 +294,12 @@ public: Declaration *decl = klass->memberAt(i)->asDeclaration(); if (! decl) continue; - if (decl->type()->isFunctionType()) + if (decl->type()->asFunctionType()) continue; - const QString declName = oo(decl->name()); + const QString declName = oo.prettyName(decl->name()); if (PointerType *ptrTy = decl->type()->asPointerType()) { if (NamedType *namedTy = ptrTy->elementType()->asNamedType()) { - const QString eltTyName = oo(namedTy->name()); + const QString eltTyName = oo.prettyName(namedTy->name()); if (eltTyName.endsWith(QLatin1String("ListAST"))) { QString name = eltTyName; name.chop(7); @@ -327,7 +328,7 @@ public: } if (ClassOrNamespace *ty = context.lookupType(namedTy->name(), klass)) { - QString className = oo(ty->symbols().first()->name()); + QString className = oo.prettyName(ty->symbols().first()->name()); QString baseClassName = className; if (baseClassName.endsWith(QLatin1String("AST"))) { baseClassName.chop(3); @@ -370,7 +371,7 @@ protected: } virtual bool visit(Class *klass) { - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); if (! className.endsWith(QLatin1String("AST"))) return false; diff --git a/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp b/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp index f9f9358b83c..82339a4b828 100644 --- a/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp +++ b/src/tools/cplusplus-update-frontend/cplusplus-update-frontend.cpp @@ -171,7 +171,7 @@ protected: Class *klass = ast->symbol; Q_ASSERT(klass != nullptr); - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); if (className.endsWith(QLatin1String("AST"))) { if (className == QLatin1String("AST")) @@ -271,7 +271,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { // nothing to do. The member is a token. } else if (PointerType *ptrTy = member->type()->asPointerType()) { @@ -394,7 +394,7 @@ protected: void visitMembers(Class *klass) { Overview oo; - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); *out << " if (" << className << " *_other = pattern->as" << className.left(className.length() - 3) << "())" << Qt::endl; @@ -518,7 +518,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { *out << " pattern->" << memberName << " = node->" << memberName << ";" << Qt::endl << Qt::endl; @@ -657,7 +657,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { *out << " ast->" << memberName << " = " << memberName << ";" << Qt::endl; } else if (PointerType *ptrTy = member->type()->asPointerType()) { if (NamedType *namedTy = ptrTy->elementType()->asNamedType()) { @@ -789,7 +789,7 @@ protected: continue; const QByteArray memberName = QByteArray::fromRawData(id->chars(), id->size()); - if (member->type()->isIntegerType() && memberName.endsWith("_token")) { + if (member->type()->asIntegerType() && memberName.endsWith("_token")) { out << " if (ast->" << memberName << ")" << Qt::endl; out << " terminal(ast->" << memberName << ", ast);" << Qt::endl; } else if (PointerType *ptrTy = member->type()->asPointerType()) { @@ -881,7 +881,7 @@ protected: virtual bool visit(FunctionDefinitionAST *ast) { Function *fun = ast->symbol; - const QString functionName = oo(fun->name()); + const QString functionName = oo.prettyName(fun->name()); if (functionName.length() > 3 && functionName.startsWith(QLatin1String("as")) && functionName.at(2).isUpper()) { @@ -909,18 +909,18 @@ static QStringList collectFieldNames(ClassSpecifierAST *classAST, bool onlyToken for (int i = 0; i < clazz->memberCount(); ++i) { Symbol *s = clazz->memberAt(i); if (Declaration *decl = s->asDeclaration()) { - const QString declName = oo(decl->name()); + const QString declName = oo.prettyName(decl->name()); const FullySpecifiedType ty = decl->type(); if (const PointerType *ptrTy = ty->asPointerType()) { if (onlyTokensAndASTNodes) { if (const NamedType *namedTy = ptrTy->elementType()->asNamedType()) { - if (oo(namedTy->name()).endsWith(QLatin1String("AST"))) + if (oo.prettyName(namedTy->name()).endsWith(QLatin1String("AST"))) fields.append(declName); } } else { fields.append(declName); } - } else if (ty->isIntegerType()) { + } else if (ty->asIntegerType()) { fields.append(declName); } } @@ -1021,7 +1021,7 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) // find all classes with method declarations for firstToken/lastToken for (ClassSpecifierAST *classAST : std::as_const(astNodes.deriveds)) { - const QString className = oo(classAST->symbol->name()); + const QString className = oo.prettyName(classAST->symbol->name()); if (className.isEmpty()) continue; @@ -1032,7 +1032,7 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) std::cerr << "Found simple declaration with multiple symbols in " << className.toLatin1().data() << std::endl; Symbol *s = decl->symbols->value; - const QString funName = oo(s->name()); + const QString funName = oo.prettyName(s->name()); if (funName == QLatin1String("firstToken")) { // found it: classesNeedingFirstToken.insert(className, classAST); @@ -1052,8 +1052,8 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) if (FunctionDefinitionAST *funDef = iter->value->asFunctionDefinition()) { if (const Name *name = funDef->symbol->name()) { if (const QualifiedNameId *qName = name->asQualifiedNameId()) { - const QString className = oo(qName->base()); - const QString methodName = oo(qName->name()); + const QString className = oo.prettyName(qName->base()); + const QString methodName = oo.prettyName(qName->name()); QTextCursor cursor(&cpp_document); @@ -1121,7 +1121,7 @@ void generateAST_cpp(const Snapshot &snapshot, const QDir &cplusplusDir) Overview oo; - const QString className = oo(info.classAST->symbol->name()); + const QString className = oo.prettyName(info.classAST->symbol->name()); QString method; QTextStream os(&method); @@ -1320,7 +1320,7 @@ QStringList generateAST_H(const Snapshot &snapshot, const QDir &cplusplusDir, co QStringList castMethods; for (ClassSpecifierAST *classAST : std::as_const(astNodes.deriveds)) { cursors[classAST] = removeCastMethods(classAST); - const QString className = oo(classAST->symbol->name()); + const QString className = oo.prettyName(classAST->symbol->name()); const QString methodName = QLatin1String("as") + className.mid(0, className.length() - 3); replacementCastMethods[classAST] = QString::fromLatin1(" virtual %1 *%2() { return this; }\n") @@ -1401,7 +1401,7 @@ protected: if (ElaboratedTypeSpecifierAST *e = ast->decl_specifier_list->value->asElaboratedTypeSpecifier()) { if (tokenKind(e->classkey_token) == T_CLASS && !ast->declarator_list) { - QString className = oo(e->name->name); + QString className = oo.prettyName(e->name->name); if (className.length() > 3 && className.endsWith(QLatin1String("AST"))) { QTextCursor tc = createCursor(translationUnit(), ast, document); @@ -1499,7 +1499,7 @@ void generateASTPatternBuilder_h(const QDir &cplusplusDir) if (! match0Method) continue; - const QString className = oo(klass->name()); + const QString className = oo.prettyName(klass->name()); if (! className.endsWith(QLatin1String("AST"))) continue; @@ -1521,14 +1521,14 @@ void generateASTPatternBuilder_h(const QDir &cplusplusDir) if (! ptrTy) continue; - const QString tyName = oo(ptrTy->elementType()); + const QString tyName = oo.prettyType(ptrTy->elementType()); if (tyName.endsWith(QLatin1String("ListAST"))) classesSet.insert(tyName); if (tyName.endsWith(QLatin1String("AST"))) { if (! first) out << ", "; - const QString memberName = oo(member->name()); + const QString memberName = oo.prettyName(member->name()); out << tyName << " *" << memberName << " = nullptr"; args.append(qMakePair(tyName, memberName)); From 2605639144b9e74e8d8623f8ffd1a76e49085185 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 22 Nov 2022 15:21:30 +0100 Subject: [PATCH 10/22] German translation: Clang* Change-Id: I7712ea38738448d9e017fb805d7adba11ae13c04 Reviewed-by: Reviewed-by: Christian Stenger --- share/qtcreator/translations/qtcreator_de.ts | 259 ++++++++++--------- 1 file changed, 131 insertions(+), 128 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 8c4a5e934e5..8bfd982e27a 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -42519,22 +42519,22 @@ Are you sure? [Source: %1] - + [Quelle: %1] ClangCodeModel Component - Komponente + Komponente Total Memory - + Gesamtspeicher Update - Aktualisieren + Aktualisieren @@ -42590,7 +42590,7 @@ Ausgabe: Documentation: - + Dokumentation: @@ -42616,11 +42616,11 @@ Ausgabe: Filter for This Diagnostic Kind - Nach dieser Art von Einträgen filtern + Nach dieser Art von Meldungen filtern Filter out This Diagnostic Kind - Diese Art von Einträgen herausfiltern + Diese Art von Meldungen herausfiltern Web Page @@ -42628,19 +42628,19 @@ Ausgabe: Suppress Selected Diagnostics - + Ausgewählte Meldungen unterdrücken Suppress This Diagnostic - Diese Art von Einträgen nicht anzeigen + Diese Art von Meldungen nicht anzeigen Disable These Checks - + Diese Checks deaktivieren Disable This Check - + Diesen Check deaktivieren @@ -43132,7 +43132,7 @@ Was soll %1 tun? ClangFormat::ClangFormatConfigWidget Clang-Format Style - + Clang-Format-Stil @@ -43150,7 +43150,7 @@ Was soll %1 tun? The ClangFormat plugin has been built against an unmodified Clang. You might experience formatting glitches in certain circumstances. See https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/README.md for more information. - + Das ClangFormat-Plugin wurde gegen ein unmodifiziertes Clang gebaut. Unter Umständen werden Sie Mängel beim Formatieren feststellen. Unter https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/README.md können Sie mehr erfahren. @@ -44729,11 +44729,11 @@ You might find further explanations in the Application Output view. Filters - Filter + Filter Reset Topic Filter - + Themenfilter zurücksetzen Checks @@ -44746,7 +44746,8 @@ You might find further explanations in the Application Output view. Could not query the supported checks from the clazy-standalone executable. Set a valid executable first. - + Konnte die von clazy-standalone unterstützten Überprüfungen nicht abfragen. +Setzen Sie erst eine gültige ausführbare Datei. Enable lower levels automatically @@ -44761,19 +44762,19 @@ Set a valid executable first. Select All - + Alle auswählen Select All with Fixits - + Alle mit Korrekturen auswählen Clear Selection - + Auswahl löschen Select the diagnostics to display. - + Wählen Sie die anzuzeigenden Meldungen. @@ -44784,11 +44785,11 @@ Set a valid executable first. Analyze open files - + Offene Dateien analysieren Run Options - + Ausführungseinstellungen Parallel jobs: @@ -44812,7 +44813,8 @@ Set a valid executable first. Could not query the supported checks from the clang-tidy executable. Set a valid executable first. - + Konnte die von clang-tidy unterstützten Überprüfungen nicht abfragen. +Setzen Sie erst eine gültige ausführbare Datei. @@ -45701,11 +45703,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. ClangTools::Internal::ClangTool Analyze Project... - + Projekt analysieren... Analyze Current File - + Aktuelle Datei analysieren Go to previous diagnostic. @@ -45717,7 +45719,7 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Load diagnostics from YAML files exported with "-export-fixes". - + Meldungen, die mit "-export-fixes" exportiert wurden, aus YAML-Datei laden. Clear @@ -45725,11 +45727,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Expand All - + Alle aufklappen Collapse All - + Alle einklappen Filter Diagnostics @@ -45773,119 +45775,119 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Cannot analyze current file: No files open. - + Kann aktuelle Datei nicht analysieren: Keine Dateien geöffnet. Cannot analyze current file: "%1" is not a known source file. - + Kann aktuelle Datei nicht analysieren: "%1" ist keine bekannte Quelldatei. Select YAML Files with Diagnostics - + Wählen Sie YAML-Datei mit Meldungen YAML Files (*.yml *.yaml);;All Files (*) - + YAML-Dateien (*.yml *.yaml);;Alle Dateien (*) Error Loading Diagnostics - + Fehler beim Laden der Meldungen Set a valid Clang-Tidy executable. - + Wählen Sie eine gültige ausführbare Datei für Clang-Tidy. Set a valid Clazy-Standalone executable. - + Wählen Sie eine gültige ausführbare Datei für Clazy-Standalone. Project "%1" is not a C/C++ project. - + Das Projekt "%1" ist kein C/C++-Projekt. Open a C/C++ project to start analyzing. - + Öffnen Sie ein C/C++-Projekt, um mit der Analyse zu beginnen. Failed to build the project. - + Das Projekt konnte nicht erstellt werden. Failed to start the analyzer. - + Das Analyse-Werkzeug konnte nicht gestartet werden. All Files - + Alle Dateien Opened Files - + Geöffnete Dateien Edited Files - + Bearbeitete Dateien Failed to analyze %n file(s). - - - + + Eine Datei konnte nicht analysiert werden. + %n Dateien konnten nicht analysiert werden. Analyzing... - + Analysiere... Analyzing... %1 of %n file(s) processed. - - - + + Analysiere... %1 von einer Datei verarbeitet. + Analysiere... %1 von %n Dateien verarbeitet. Analysis stopped by user. - + Analyse durch den Benutzer gestoppt. Finished processing %n file(s). - - - + + Verarbeitung einer Datei abgeschlossen. + Verarbeitung von %n Dateien abgeschlossen. Diagnostics imported. - + Meldungen importiert. %1 diagnostics. %2 fixits, %3 selected. - + %1 Meldung(en). %2 Korrektur(en), %3 ausgewählt. No diagnostics. - + Keine Meldungen. In general, the project should be built before starting the analysis to ensure that the code to analyze is valid.<br/><br/>Building the project might also run code generators that update the source files as necessary. - + Im Allgemeinen sollte das Projekt vor der Analyse gebaut werden, um sicherzustellen, dass der zu analysierende Code gültig ist.<br/><br/>Beim Erstellen des Projekts werden möglicherweise auch Code-Generatoren ausgeführt, die Quelldateien nach Bedarf aktualisieren. Info About Build the Project Before Analysis - + Information über das Erstellen des Projekts vor der Analyse ClangTools::Internal::ClangToolRunWorker Failed to build the project. - + Das Projekt konnte nicht erstellt werden. No code model data available for project. - + Für das Projekt sind keine Codemodell-Daten vorhanden. The project configuration changed since the start of the %1. Please re-run with current configuration. @@ -45893,11 +45895,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Failed to create temporary directory: %1. - + Das temporäre Verzeichnis konnte nicht erstellt werden: %1. Running %1 on %2 with configuration "%3". - + Führe %1 auf %2 mit der Konfiguration "%3" aus. Analyzing @@ -45905,11 +45907,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Analyzing "%1" [%2]. - + Analysiere "%1" [%2]. Failed to start runner "%1". - + Das Werkzeug "%1" konnte nicht gestartet werden. Failed to analyze "%1": %2 @@ -45917,14 +45919,14 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Error: Failed to analyze %n files. - - - + + Fehler: Eine Datei konnte nicht analysiert werden. + Fehler: %n Dateien konnten nicht analysiert werden. Note: You might need to build the project to generate or update source files. To build automatically, enable "Build the project before analysis". - + Hinweis: Möglicherweise müssen Sie das Projekt erstellen, um Quelldateien zu generieren oder aktualisieren. Aktivieren Sie "Projekt vor der Analyse erstellen", um das Projekt automatisch zu erstellen. %1 finished: Processed %2 files successfully, %3 failed. @@ -45973,11 +45975,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Clang-Tidy Checks - + Clang-Tidy Checks Clazy Checks - + Clazy Checks Edit Checks as String... @@ -52413,43 +52415,43 @@ in "%2" aus. ClangCodeModel::Internal::ClangdClient clangd - + clangd Indexing %1 with clangd - + Indiziere %1 mit clangd Indexing session with clangd - + Indiziere Sitzung mit clangd Memory Usage - Speicherverbrauch + Speicherverbrauch Location: %1 Parent folder for proposed #include completion - Pfad: %1 + Pfad: %1 collecting overrides ... - + Suche überschriebene Methoden ... <base declaration> - + <Basisdeklaration> ClangCodeModel::Internal::ClangdFindReferences C++ Usages: - + C++ Referenzen: Re&name %n files - + Eine Datei umbe&nennen %n Dateien umbe&nennen @@ -52457,7 +52459,7 @@ in "%2" aus. Files: %1 - Dateien: + Dateien: %1 @@ -52465,233 +52467,234 @@ in "%2" aus. ClangCodeModel::Internal::ClangModelManagerSupport The use of clangd for the C/C++ code model was disabled, because it is likely that its memory requirements would be higher than what your system can handle. - + Clangd wurde für das C/C++-Codemodell deaktiviert, da dessen Speicheranforderung wahrscheinlich die Leistungsfähigkeit Ihres Systems übersteigt. With clangd enabled, Qt Creator fully supports modern C++ when highlighting code, completing symbols and so on.<br>This comes at a higher cost in terms of CPU load and memory usage compared to the built-in code model, which therefore might be the better choice on older machines and/or with legacy code.<br>You can enable/disable and fine-tune clangd <a href="dummy">here</a>. - + Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum eingebauten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. Enable Anyway - + Trotzdem aktivieren Cannot use clangd: Failed to generate compilation database: %1 - + Kann Clangd nicht nutzen: Erstellen der Kompilierungsdatenbank fehlgeschlagen: +%1 ClangdTextMark Code Model Error - Codemodell-Fehler + Codemodell-Fehler Code Model Warning - Codemodell-Warnung + Codemodell-Warnung Copy to Clipboard Clang Code Model Marks - In die Zwischenablage kopieren + In die Zwischenablage kopieren Disable Diagnostic in Current Project - + Meldung für aktuelles Projekt deaktivieren ClangUtils Could not retrieve build directory. - + Build-Verzeichnis konnte nicht abgefragt werden. Could not create "%1": %2 - + Konnte "%1" nicht erzeugen: %2 ClangFormat::ClangFormatGlobalConfigWidget Formatting mode: - + Formatierungsart: Format while typing - Bei der Eingabe formatieren + Bei der Eingabe formatieren Format edited code on file save - Bearbeiteten Quelltext beim Speichern der Datei formatieren + Bearbeiteten Quelltext beim Speichern der Datei formatieren Override Clang Format configuration file - Clang-Format-Konfigurationsdatei überschreiben + Clang-Format-Konfigurationsdatei überschreiben ClangFormat global setting: - + Globale Einstellungen für ClangFormat: Indenting only - + Nur Einrückung Full formatting - + Komplette Formatierung Disable - Deaktivieren + Deaktivieren The current project has its own .clang-format file which can be overridden by the settings below. - + Das aktuelle Projekt hat ihre eigene .clang-format-Datei, die in den untenstehenden Einstellungen überschrieben werden kann. Override Clang Format configuration file with the chosen configuration. - + Die Clang-Format-Konfigurationsdatei mit der gewählten Konfiguration überschreiben. ClangFormatStyleFactory ClangFormat - ClangFormat + ClangFormat ClangTools::Internal::ClangToolsProjectSettingsWidget Restore Global Settings - Globale Einstellungen wiederherstellen + Globale Einstellungen wiederherstellen Go to Analyzer - + Zum Analyzer wechseln Remove Selected - Ausgewählte entfernen + Ausgewählte entfernen Remove All - Alle entfernen + Alle entfernen Suppressed diagnostics - Unterdrückte Diagnosemeldungen + Unterdrückte Meldungen ClangToolsDiagnosticModel No Fixits - Keine Korrekturen + Keine Korrekturen Not Scheduled - nicht eingeplant + Nicht eingeplant Invalidated - Ungültig + Ungültig Scheduled - eingeplant + Eingeplant Failed to Apply - Konnte nicht angewendet werden + Konnte nicht angewendet werden Applied - Angewendet + Angewendet ClangTools::Internal::TidyOptionsDialog Options for %1 - + Einstellungen für %1 Option - + Einstellung Value - Wert + Wert Add Option - + Einstellung hinzufügen Remove Option - + Einstellung entfernen <new option> - + <Neue Einstellung> ClangTools::Internal::TidyChecksTreeModel Options - Einstellungen + Einstellungen Clang Tools Custom Configuration - + Benutzerdefinierte Konfiguration ClangTools::Internal::DiagnosticMark Copy to Clipboard - In die Zwischenablage kopieren + In die Zwischenablage kopieren Disable Diagnostic - + Meldung deaktivieren ClangTools::Internal::FilterChecksModel Check - + Check ClangTools::Internal::SettingsWidget Clang-Tidy Executable - + Ausführbare Datei für Clang-Tidy Clazy Executable - + Ausführbare Datei für Clazy Executables - + Ausführbare Dateien Clang-Tidy: - + Clang-Tidy: Clazy-Standalone: - + Clazy-Standalone: From a0e74ce3e0f08a9d3fd7f89ae038c51f8e37b60d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 25 Nov 2022 10:36:10 +0100 Subject: [PATCH 11/22] UpdateInfo: Fix wrong properties for progress info It was no longer showing "No updates found." in the status bar if the progress details are off, and the progress details were no longer directly hidden if updates were found. Amends 93401c9c8181dd4a72ec29217984b9a979090fbc Change-Id: I53c441a990c9cbda1a49969f57eb76128ab020c1 Reviewed-by: Jarek Kobus --- src/plugins/updateinfo/updateinfoplugin.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index 5aef0531dc2..f5d234dcff2 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -124,14 +124,13 @@ void UpdateInfoPlugin::startCheckForUpdates() return; // do not trigger while update task is already running QFutureInterface futureIf; - FutureProgress *futureProgress - = ProgressManager::addTimedTask(futureIf, - tr("Checking for Updates"), - Id("UpdateInfo.CheckingForUpdates"), - 60); - futureProgress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction); - futureProgress->setSubtitleVisibleInStatusBar(true); - connect(futureProgress, &FutureProgress::canceled, this, [this, futureIf]() mutable { + d->m_progress = ProgressManager::addTimedTask(futureIf, + tr("Checking for Updates"), + Id("UpdateInfo.CheckingForUpdates"), + 60); + d->m_progress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction); + d->m_progress->setSubtitleVisibleInStatusBar(true); + connect(d->m_progress, &FutureProgress::canceled, this, [this, futureIf]() mutable { futureIf.reportCanceled(); futureIf.reportFinished(); stopCheckForUpdates(); From 1966591c7ff51ab0720c2c554a067e398fd1245a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 24 Nov 2022 10:12:22 +0100 Subject: [PATCH 12/22] Doc: Use fixed links to Qt 5 Graphical Effects To suppress qdoc errors. Change-Id: I48556e98c7f58d9f0b59ad47051bf166edf50387 Reviewed-by: Thomas Hartmann --- .../examples/doc/webinardemo.qdoc | 3 +- .../qtdesignstudio-visual-effects.qdoc | 65 ++++++++++++------- .../src/views/qtquick-properties.qdoc | 3 +- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/doc/qtdesignstudio/examples/doc/webinardemo.qdoc b/doc/qtdesignstudio/examples/doc/webinardemo.qdoc index a5fa528b3da..56aedef21be 100644 --- a/doc/qtdesignstudio/examples/doc/webinardemo.qdoc +++ b/doc/qtdesignstudio/examples/doc/webinardemo.qdoc @@ -90,7 +90,8 @@ \image webinardemo-qb-fastblur.png "Settings for exporting blurEffect layer" - We want to apply the \l {FastBlur} effect to the \e smallPopup UI control. + We want to apply the \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-fastblur.html} + {Fast Blur} effect to the \e smallPopup UI control. In the artboard, we have a \e blurEffect layer that we want to export as a \e FastBlurItem component. In the \uicontrol Component field, we enter \e FastBlurItem. diff --git a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc index e8a4d65d518..9cff12750c0 100644 --- a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc +++ b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc @@ -78,7 +78,7 @@ \li Description \row \li \inlineimage icons/blend-mode-16px.png - \li \l [QML] {Blend} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-blend.html}{Blend} \li \li Merges two source components by using a blend mode. @@ -88,28 +88,34 @@ is subtracted from the source and written over it. For a list of possible \uicontrol Mode values and examples of their - use, see \l{Blend::mode}{Blend.mode}. + use, see + \l{https://doc.qt.io/qt-5/qml-qtgraphicaleffects-blend.html#mode-prop} + {Blend.mode}. \row \li \inlineimage icons/brightness-contrast-16px.png - \li \l {BrightnessContrast}{Brightness Contrast} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-brightnesscontrast.html} + {Brightness Contrast} \li \inlineimage ok.png \li Adjusts \uicontrol Brightness and \uicontrol Contrast. \row \li \inlineimage icons/colourize-16px.png - \li \l {ColorOverlay}{Color Overlay} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-coloroverlay.html} + {Color Overlay} \li \inlineimage ok.png \li Alters the colors of the source component by applying an \uicontrol {Overlay color}. You can use the color picker to \l{Picking Colors}{select the color}. \row \li \inlineimage icons/colourize-16px.png - \li \l Colorize + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-colorize.html} + {Colorize} \li \inlineimage ok.png \li Sets the color in the HSL color space by specifying \uicontrol Hue, \uicontrol Lightness, and \uicontrol Saturation values. \row \li \inlineimage icons/desaturation-16px.png - \li \l {Desaturate}{Desaturation} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-desaturate.html} + {Desaturation} \li \inlineimage ok.png \li Reduces the saturation of the colors by the value set in the \uicontrol Desaturation field. The value ranges from \c 0.0 @@ -118,7 +124,8 @@ of the source component. \row \li \inlineimage icons/directional-blur-16px.png - \li \l {DirectionalBlur}{Directional Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-directionalblur.html} + {Directional Blur} \li \inlineimage ok.png \li Applies a blur effect to the specified direction. The value of the \uicontrol Angle field defines the direction of the blur. This @@ -135,7 +142,8 @@ more samples are needed to preserve high visual quality. \row \li \inlineimage icons/displace-16px.png - \li \l Displace + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-displace.html} + {Displace} \li \inlineimage ok.png \li Moves the pixels of the source component according to the displacement map specified in the \uicontrol {Displacement source} field. @@ -148,7 +156,8 @@ maximum shift. \row \li \inlineimage icons/drop-shadow-16px.png - \li \l {DropShadow}{Drop Shadow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-dropshadow.html} + {Drop Shadow} \li \inlineimage ok.png \li Generates a soft shadow behind the source component using a gaussian blur. This effect blurs the alpha channel of the input and @@ -170,7 +179,8 @@ FPS on high-end graphics hardware. \row \li \inlineimage icons/fast-blur-16px.png - \li \l {FastBlur}{Fast Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-fastblur.html} + {Fast Blur} \li \inlineimage ok.png \li Applies a fast blur effect to one or more source components. \uicontrol {Fast Blur} offers lower blur quality than @@ -188,7 +198,8 @@ to provide good rendering performance. \row \li \inlineimage icons/gamma-adjust-16px.png - \li \l [QML] {GammaAdjust}{Gamma Adjust} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-gammaadjust.html} + {Gamma Adjust} \li \inlineimage ok.png \li Alters the luminance of the source component. This effect is applied to each pixel according to the curve that is pre-defined as a @@ -196,7 +207,8 @@ field is used as the reciprocal scaling exponent. \row \li \inlineimage icons/gaussian-blur-16px.png - \li \l [QML] {GaussianBlur}{Gaussian Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-gaussianblur.html} + {Gaussian Blur} \li \li Applies a gaussian blur effect to one or more source components. The effect softens the image by blurring it with an algorithm that @@ -218,7 +230,7 @@ the radius. \row \li \inlineimage icons/glow-16px.png - \li \l [QML] {Glow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-glow.html}{Glow} \li \inlineimage ok.png \li Generates a halo-like glow around the source component. This effect blurs the alpha channel of the source and colorizes it with @@ -229,7 +241,8 @@ glow can be changed using the value of the \uicontrol Spread field. \row \li \inlineimage icons/hue-saturation-16px.png - \li \l {HueSaturation}{Hue Saturation} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-huesaturation.html} + {Hue Saturation} \li \inlineimage ok.png \li Alters the source component colors in the HSL color space. This effect is similar to the \uicontrol Colorize effect, but @@ -239,7 +252,8 @@ setting them. \row \li \inlineimage icons/inner-shadow-16px.png - \li \l {InnerShadow}{Inner Shadow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-innershadow.html} + {Inner Shadow} \li \li Generates a colorized and blurred shadow inside the source using the color that you specify in the \uicontrol {Inner shadow color} @@ -261,7 +275,8 @@ check box. \row \li \inlineimage icons/levels-16px.png - \li \l {LevelAdjust}{Level Adjust} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-leveladjust.html} + {Level Adjust} \li \inlineimage ok.png \li Adjusts color levels in the RGBA color space. This effect adjusts the source component colors separately for each color channel. Source @@ -291,7 +306,8 @@ value of the \uicontrol Minimum output field. \row \li \inlineimage icons/mask-blur-16px.png - \li \l {MaskedBlur}{Masked Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-maskedblur.html} + {Masked Blur} \li \li Softens the image by blurring it. The intensity of the blur can be controlled for each pixel by specifying a \uicontrol {Mask source}, @@ -306,7 +322,8 @@ samples produce better quality, but are slower to render. \row \li \inlineimage icons/opacity-mask-16px.png - \li \l {OpacityMask}{Opacity Mask} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-opacitymask.html} + {Opacity Mask} \li \inlineimage ok.png \li Masks the source component with another component specified in the \uicontrol {Mask source} field. The mask component gets rendered into an @@ -321,7 +338,8 @@ with the mask alpha: \c {As * Am}. \row \li \inlineimage icons/radial-blur-16px.png - \li \l {RadialBlur}{Radial Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-radialblur.html} + {Radial Blur} \li \li Applies a directional blur effect in a circular direction around the component's center point. This effect makes the source component appear @@ -336,7 +354,8 @@ samples are needed to preserve high visual quality. \row \li \inlineimage icons/recursive-blur-16px.png - \li \l {RecursiveBlur}{Recursive Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-recursiveblur.html} + {Recursive Blur} \li \li Blurs repeatedly, providing a strong blur effect. This effect softens the image by blurring it with an algorithm that uses a @@ -352,7 +371,8 @@ but the result is produced asynchronously and takes more time. \row \li \inlineimage icons/threshold-16px.png - \li \l {ThresholdMask}{Threshold Mask} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-thresholdmask.html} + {Threshold Mask} \li \inlineimage ok.png \li Masks the source component with another component specified by \uicontrol {Mask source}. The value of the \uicontrol Spread @@ -363,7 +383,8 @@ opaque mask pixels by adding interpolated values between them. \row \li \inlineimage icons/zoom-blur-16px.png - \li \l {ZoomBlur}{Zoom Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-zoomblur.html} + {Zoom Blur} \li \li Applies a directional blur effect towards source component's center point. This effect makes the source component appear to be diff --git a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc index 0f7547c1195..8f8a1da66b8 100644 --- a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc +++ b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc @@ -392,7 +392,8 @@ Typically, this component should be a shader effect with a source texture specified. You can use the effects in \uicontrol Components > \uicontrol {Qt Quick Studio Effects} that are based on the components in the - \l {Qt Graphical Effects} module. + \l {https://doc.qt.io/qt-5/qtgraphicaleffects-index.html} + {Qt Graphical Effects} module. To enable the component to pass the layer's offscreen surface to the effect correctly, the \uicontrol {Sampler name} field is set to the source From 0f202ea72434564e42a324bef03c047061793754 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 24 Nov 2022 16:08:12 +0100 Subject: [PATCH 13/22] ClangCodeModel: Restrict opening non-project files to headers We cannot tell clangd to opt out of indexing for certain files, so we must prevent "foreign" sources from ever getting opened, or we will have strange effects in the case of non-unique symbols. Note that there are more (upstream) problems in this area, but this patch limits the damage at least. Amends 8ad7ab2d2a7fefcd3a9ef3ff2f0ef7e5fe792417. Fixes: QTCREATORBUG-28452 Change-Id: I131be699a35da8eacea6415c630e9012cc905a47 Reviewed-by: David Schulz --- .../clangmodelmanagersupport.cpp | 26 +++++++++++-------- src/plugins/cppeditor/cppprojectfile.cpp | 6 +++++ src/plugins/cppeditor/cppprojectfile.h | 3 +++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 679e41004bf..b92f12279f3 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -517,12 +517,14 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr && currentClient->project() == docProject) { continue; } - if (!docProject || docProject == project) { - if (currentClient) - currentClient->closeDocument(doc); - LanguageClientManager::openDocumentWithClient(doc, client); - hasDocuments = true; + if (docProject != project + && (docProject || !ProjectFile::isHeader(doc->filePath()))) { + continue; } + if (currentClient) + currentClient->closeDocument(doc); + LanguageClientManager::openDocumentWithClient(doc, client); + hasDocuments = true; } for (auto it = m_queuedShadowDocuments.begin(); it != m_queuedShadowDocuments.end();) { @@ -625,11 +627,13 @@ void ClangModelManagerSupport::claimNonProjectSources(ClangdClient *client) } if (!ClangdSettings::instance().sizeIsOkay(doc->filePath())) continue; - if (!ProjectExplorer::SessionManager::projectForFile(doc->filePath())) { - if (currentClient) - currentClient->closeDocument(doc); - LanguageClientManager::openDocumentWithClient(doc, client); - } + if (ProjectExplorer::SessionManager::projectForFile(doc->filePath())) + continue; + if (client->project() && !ProjectFile::isHeader(doc->filePath())) + continue; + if (currentClient) + currentClient->closeDocument(doc); + LanguageClientManager::openDocumentWithClient(doc, client); } } @@ -717,7 +721,7 @@ void ClangModelManagerSupport::onEditorOpened(Core::IEditor *editor) return; if (sessionModeEnabled()) project = nullptr; - else if (!project) + else if (!project && ProjectFile::isHeader(document->filePath())) project = fallbackProject(); if (ClangdClient * const client = clientForProject(project)) LanguageClientManager::openDocumentWithClient(textDocument, client); diff --git a/src/plugins/cppeditor/cppprojectfile.cpp b/src/plugins/cppeditor/cppprojectfile.cpp index c28f41a2291..c5a5d57d5b8 100644 --- a/src/plugins/cppeditor/cppprojectfile.cpp +++ b/src/plugins/cppeditor/cppprojectfile.cpp @@ -6,6 +6,7 @@ #include "cppeditorconstants.h" #include +#include #include #include @@ -125,6 +126,11 @@ bool ProjectFile::isHeader(ProjectFile::Kind kind) } } +bool ProjectFile::isHeader(const Utils::FilePath &fp) +{ + return isHeader(classify(fp.toString())); +} + bool ProjectFile::isSource(ProjectFile::Kind kind) { switch (kind) { diff --git a/src/plugins/cppeditor/cppprojectfile.h b/src/plugins/cppeditor/cppprojectfile.h index 71310fec8a2..16894555cf5 100644 --- a/src/plugins/cppeditor/cppprojectfile.h +++ b/src/plugins/cppeditor/cppprojectfile.h @@ -7,6 +7,8 @@ #include +namespace Utils { class FilePath; } + namespace CppEditor { class CPPEDITOR_EXPORT ProjectFile @@ -39,6 +41,7 @@ public: static bool isSource(Kind kind); static bool isHeader(Kind kind); + static bool isHeader(const Utils::FilePath &fp); static bool isC(Kind kind); static bool isCxx(Kind kind); static bool isAmbiguousHeader(const QString &filePath); From ead1b7aa4ae591ba090779fdcd6316b21ee0fde3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 25 Nov 2022 10:29:56 +0100 Subject: [PATCH 14/22] Editor: extend visual whitespace documentation Tell users where the color of the visual whitespace can be configured. Task-number: QTCREATORBUG-28501 Change-Id: I9c12cbe9d7be61dd96ad27c1eaa1a2daf69cf31d Reviewed-by: Leena Miettinen --- doc/qtcreator/src/editors/creator-code-indentation.qdoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/qtcreator/src/editors/creator-code-indentation.qdoc b/doc/qtcreator/src/editors/creator-code-indentation.qdoc index 11cae3c5b3f..f00ecdc4f15 100644 --- a/doc/qtcreator/src/editors/creator-code-indentation.qdoc +++ b/doc/qtcreator/src/editors/creator-code-indentation.qdoc @@ -65,7 +65,9 @@ To visualize whitespace in the editor, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Visualize whitespace}. To visualize indentation, select - \uicontrol {Visualize Indent}. + \uicontrol {Visualize Indent}. To adjust the color of the visualization, + change the value of the Visual Whitespace setting of the editor color scheme + in \uicontrol {Font & Colors}. \image qtcreator-options-text-editor-display.png "Text Editor Display preferences" From 4225f475a49ad188df8786087b8281de7cc0eef4 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 23 Nov 2022 12:53:18 +0200 Subject: [PATCH 15/22] FilePath: Do not strip macros when normalizing path Fixes: QTCREATORBUG-28484 Change-Id: Id6bcd2aef048bd355c196013c54799e4944135bd Reviewed-by: Qt CI Bot Reviewed-by: hjk --- src/libs/utils/filepath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 75fba81867c..a5b3381acc6 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1529,7 +1529,7 @@ static QString normalizePathSegmentHelper(const QString &name) { const int len = name.length(); - if (len == 0) + if (len == 0 || name.contains("%{")) return name; int i = len - 1; From 3cd3bba720bd5451e86c3585db5294c2948c0e65 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 22 Nov 2022 11:32:14 +0100 Subject: [PATCH 16/22] Debugger: update thread selector after setting current thread manually The issue is only reproducible when interrupting a running inferior with cdb. Change-Id: I336413d7f36aad28108623eb1bf8015b42f3dbb4 Reviewed-by: Christian Stenger --- src/plugins/debugger/threadshandler.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp index cc0920fb121..286b58258f1 100644 --- a/src/plugins/debugger/threadshandler.cpp +++ b/src/plugins/debugger/threadshandler.cpp @@ -268,6 +268,7 @@ void ThreadsHandler::setCurrentThread(const Thread &thread) m_currentThread = thread; thread->update(); + threadSwitcher()->setCurrentIndex(thread->index().row()); } void ThreadsHandler::notifyGroupCreated(const QString &groupId, const QString &pid) From cb8742ccab3f17e3320bea10cf5f174839ead687 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 25 Nov 2022 10:52:24 +0100 Subject: [PATCH 17/22] Make it possible to select default session from menu when we are in the limbo state where no session has been loaded, and the default session has not been explicitly created or loaded yet. Fixes: QTCREATORBUG-28393 Change-Id: I66d69561e18b5073a477d90c1926074e3cd97cee Reviewed-by: Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/projectexplorer.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index c6ee39013b0..c7ed9c192c3 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -4173,6 +4173,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() auto *ag = new QActionGroup(m_sessionMenu); connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPluginPrivate::setSession); const QString activeSession = SessionManager::activeSession(); + const bool isDefaultVirgin = SessionManager::isDefaultVirgin(); const QStringList sessions = SessionManager::sessions(); for (int i = 0; i < sessions.size(); ++i) { @@ -4184,7 +4185,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() QAction *act = ag->addAction(actionText); act->setData(session); act->setCheckable(true); - if (session == activeSession) + if (session == activeSession && !isDefaultVirgin) act->setChecked(true); } m_sessionMenu->addActions(ag->actions()); @@ -4193,9 +4194,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() void ProjectExplorerPluginPrivate::setSession(QAction *action) { - QString session = action->data().toString(); - if (session != SessionManager::activeSession()) - SessionManager::loadSession(session); + SessionManager::loadSession(action->data().toString()); } void ProjectExplorerPlugin::setProjectExplorerSettings(const ProjectExplorerSettings &pes) From c210ffb2d6ea14bd8efb25c390f84dd8c9d4cb6c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 25 Nov 2022 13:45:28 +0100 Subject: [PATCH 18/22] AutoTest: Fix debugging of gtest based tests Amends 6ae6390661df7c4776a875995680c29039fa3f07. Fixes: QTCREATORBUG-28504 Change-Id: I7617b080f4ac872c1f806a8e89fa9084a0ac948f Reviewed-by: David Schulz --- src/plugins/autotest/gtest/gtestconfiguration.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/autotest/gtest/gtestconfiguration.cpp b/src/plugins/autotest/gtest/gtestconfiguration.cpp index 2ff3b5c6b1e..231dea01ff2 100644 --- a/src/plugins/autotest/gtest/gtestconfiguration.cpp +++ b/src/plugins/autotest/gtest/gtestconfiguration.cpp @@ -60,8 +60,12 @@ QStringList GTestConfiguration::argumentsForTestRunner(QStringList *omitted) con } const QStringList &testSets = testCases(); - if (!testSets.isEmpty()) - arguments << "--gtest_filter=\"" + testSets.join(':') + '"'; + if (!testSets.isEmpty()) { + if (isDebugRunMode()) // debugger does its own special quoting + arguments << "--gtest_filter=" + testSets.join(':'); + else + arguments << "--gtest_filter=\"" + testSets.join(':') + '"'; + } auto gSettings = static_cast(framework()->testSettings()); if (!gSettings) From e24ad7ac55ddd22734b035916bb616069e741df0 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 25 Nov 2022 15:21:58 +0100 Subject: [PATCH 19/22] JSON wizards: Print parsing issues only with -customwizard-verbose Some wizards will miss required components when corresponding plugins are disabled. That is fine, and not an error per se. When actually developing a wizard, these kind of errors should of course be posted, but that is what -customwizard-verbose is for. Fixes: QTCREATORBUG-28502 Change-Id: I3647d37ef7ca4dace7592c5443bdd13720290016 Reviewed-by: Christian Stenger --- src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index dfcc80d6c59..2a471734906 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -480,7 +480,8 @@ JsonWizardFactory *JsonWizardFactory::createWizardFactory(const QVariantMap &dat if (!factory->initialize(data, baseDir, errorMessage)) { delete factory; factory = nullptr; - Core::MessageManager::writeDisrupting(*errorMessage); + if (verbose()) + Core::MessageManager::writeDisrupting(*errorMessage); } return factory; } From 98a40b369061ad32fb63b680a878807287e3022b Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 16 Nov 2022 11:59:52 +0100 Subject: [PATCH 20/22] CMake build: Make errors of execute_process fail the build Instead of silenty failing and resulting in broken builds/packages. The property is only available since CMake 3.19, so limit the feature to that. Change-Id: I82b06e78540e81a809f7fdfe130648becfc9672e Reviewed-by: Cristian Adam Reviewed-by: Qt CI Bot --- cmake/CreatePythonXY.cmake | 2 ++ cmake/QtCreatorAPI.cmake | 4 ++-- cmake/QtCreatorAPIInternal.cmake | 4 ++++ cmake/QtCreatorDocumentation.cmake | 3 ++- cmake/Utils.cmake | 1 + src/plugins/qmldesigner/CMakeLists.txt | 4 ++-- tests/manual/android/setup/setup_android.cmake | 16 ++++++++++------ 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/cmake/CreatePythonXY.cmake b/cmake/CreatePythonXY.cmake index 8aeeb156cb2..0475b259f68 100644 --- a/cmake/CreatePythonXY.cmake +++ b/cmake/CreatePythonXY.cmake @@ -64,6 +64,7 @@ function(create_python_xy PythonExe PythonZipFilePath) set(ENV{PYTHONOPTIMIZE} "2") execute_process( COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b + ${QTC_COMMAND_ERROR_IS_FATAL} ) file(GLOB_RECURSE python_lib_files "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*.py") @@ -75,5 +76,6 @@ function(create_python_xy PythonExe PythonZipFilePath) execute_process( COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/" + ${QTC_COMMAND_ERROR_IS_FATAL} ) endfunction() diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 52ba2f44026..68461f8bcd6 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -778,14 +778,14 @@ function(add_qtc_executable name) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -delete_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() foreach(_rpath ${install_rpath}) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -add_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() install(CODE "${_code}") diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 4efb59c988d..ace1f3c8d1c 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -1,3 +1,7 @@ +if (CMAKE_VERSION GREATER_EQUAL 3.19) + set(QTC_COMMAND_ERROR_IS_FATAL COMMAND_ERROR_IS_FATAL ANY) +endif() + if (CMAKE_VERSION VERSION_LESS 3.18) if (CMAKE_CXX_COMPILER_ID STREQUAL GNU) set(BUILD_WITH_PCH OFF CACHE BOOL "" FORCE) diff --git a/cmake/QtCreatorDocumentation.cmake b/cmake/QtCreatorDocumentation.cmake index 49bf3d2d02d..a652d625176 100644 --- a/cmake/QtCreatorDocumentation.cmake +++ b/cmake/QtCreatorDocumentation.cmake @@ -22,7 +22,8 @@ function(qt5_query_qmake) TIMEOUT 10 RESULT_VARIABLE _qmake_result OUTPUT_VARIABLE _qmake_stdout - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE + ${QTC_COMMAND_ERROR_IS_FATAL}) if (NOT "${_qmake_result}" STREQUAL "0") message(FATAL_ERROR "Qmake did not execute successfully: ${_qmake_result}.") diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index e43674e4a35..602781ca391 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -47,6 +47,7 @@ function(setup_dependencies_component) \"\${_ide_app_target}\" \"${_qmake_binary}\" COMMAND_ECHO STDOUT + \${QTC_COMMAND_ERROR_IS_FATAL} ) " COMPONENT Dependencies diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 78da7fa5ded..eeebb70177c 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -86,10 +86,10 @@ function(get_and_add_as_subdirectory name repository git_tag build_dir source_di ) execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" "${build_dir}/${name}" WORKING_DIRECTORY "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) execute_process(COMMAND "${CMAKE_COMMAND}" --build "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) add_subdirectory(${source_dir}/${name}/${source_subdir} ${name}) endfunction() diff --git a/tests/manual/android/setup/setup_android.cmake b/tests/manual/android/setup/setup_android.cmake index c6a4f8ae298..c4dfb275b35 100644 --- a/tests/manual/android/setup/setup_android.cmake +++ b/tests/manual/android/setup/setup_android.cmake @@ -43,7 +43,7 @@ function(download_jdk) message("Downloading: ${jdk_url}") file(DOWNLOAD ${jdk_url} ./jdk.zip SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip COMMAND_ERROR_IS_FATAL ANY) endfunction() function(download_android_commandline) @@ -61,7 +61,7 @@ function(download_android_commandline) file(DOWNLOAD ${android_cmdtools_url} ./android_commandline_tools.zip SHOW_PROGRESS) file(MAKE_DIRECTORY android-sdk) file(MAKE_DIRECTORY android-cmdlinetools) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools COMMAND_ERROR_IS_FATAL ANY) endfunction() function(setup_android) @@ -78,9 +78,11 @@ function(setup_android) file(WRITE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n") execute_process( INPUT_FILE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt - COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( - COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( COMMAND ${sdkmanager} "platforms;${ANDROID_PLATFORM}" @@ -90,13 +92,15 @@ function(setup_android) "cmdline-tools;latest" "tools" "emulator" - "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) if (WIN32) execute_process( COMMAND ${sdkmanager} "extras;google;usb_driver" - --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) endif() endfunction() From ed06978830e45774a8a5febbc9a64b492d94fb26 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 24 Nov 2022 12:25:07 +0100 Subject: [PATCH 21/22] ClangCodeModel: Switch off clangd persistently ... after failed machine suitability check. Fixes: QTCREATORBUG-28441 Change-Id: Ic0fb956168204d8023ff96f92ae3fcd7cea8b0e9 Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger --- src/plugins/clangcodemodel/clangmodelmanagersupport.cpp | 4 ++-- src/plugins/cppeditor/cppcodemodelsettings.cpp | 6 ++++++ src/plugins/cppeditor/cppcodemodelsettings.h | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index b92f12279f3..0e76423e69f 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -127,7 +127,7 @@ static void checkSystemForClangdSuitability() if (ClangdSettings::hardwareFulfillsRequirements()) return; - ClangdSettings::setUseClangd(false); + ClangdSettings::setUseClangdAndSave(false); const QString warnStr = ClangModelManagerSupport::tr("The use of clangd for the C/C++ " "code model was disabled, because it is likely that its memory requirements " "would be higher than what your system can handle."); @@ -148,7 +148,7 @@ static void checkSystemForClangdSuitability() return label; }); info.addCustomButton(ClangModelManagerSupport::tr("Enable Anyway"), [clangdWarningSetting] { - ClangdSettings::setUseClangd(true); + ClangdSettings::setUseClangdAndSave(true); Core::ICore::infoBar()->removeInfo(clangdWarningSetting); }); Core::ICore::infoBar()->addInfo(info); diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index 18512cf10c4..b713583dfe4 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -218,6 +218,12 @@ bool ClangdSettings::useClangd() const void ClangdSettings::setUseClangd(bool use) { instance().m_data.useClangd = use; } +void ClangdSettings::setUseClangdAndSave(bool use) +{ + setUseClangd(use); + instance().saveSettings(); +} + bool ClangdSettings::hardwareFulfillsRequirements() { instance().m_data.haveCheckedHardwareReqirements = true; diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h index cd010eec995..93e9e550608 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.h +++ b/src/plugins/cppeditor/cppcodemodelsettings.h @@ -126,6 +126,7 @@ public: static ClangdSettings &instance(); bool useClangd() const; static void setUseClangd(bool use); + static void setUseClangdAndSave(bool use); static bool hardwareFulfillsRequirements(); static bool haveCheckedHardwareRequirements(); From d852ec53a14e64f6993929130e95b5581cfaa3a4 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Mon, 28 Nov 2022 10:36:25 +0100 Subject: [PATCH 22/22] GitHub Actions / COIN: Update Qt to 6.4.0 Amends 169f2c4af66c4703e6d708b0b10fa3b8a9062fa1 due to the task number QTBUG-108593. Change-Id: Id3ab685632e32fad953d837d2f7ab357b034d739 Reviewed-by: Eike Ziller Reviewed-by: --- .github/workflows/build_cmake.yml | 2 +- coin/instructions/common_environment.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index e1be45d67c6..d695061f95d 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -7,7 +7,7 @@ on: - 'doc/**' env: - QT_VERSION: 6.4.1 + QT_VERSION: 6.4.0 CLANG_VERSION: 15.0.0 ELFUTILS_VERSION: 0.175 CMAKE_VERSION: 3.21.1 diff --git a/coin/instructions/common_environment.yaml b/coin/instructions/common_environment.yaml index 7c6bcfe14c0..5843ca790b0 100644 --- a/coin/instructions/common_environment.yaml +++ b/coin/instructions/common_environment.yaml @@ -10,7 +10,7 @@ instructions: variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_15.0.0-based - type: EnvironmentVariable variableName: QTC_QT_BASE_URL - variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.1-released/Qt" + variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.0-released/Qt" - type: EnvironmentVariable variableName: QTC_QT_MODULES variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"