From b41280b9427d2563d825646134e7f1353cb317b3 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 15 Nov 2021 14:42:25 +0100 Subject: [PATCH 01/41] LanguageClient: do not send semantic requests to unrelated server Change-Id: I97207a8569a5e26a7587fefc07d638b17d36d40b Reviewed-by: Christian Kandeler --- src/plugins/languageclient/semantichighlightsupport.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp index 5132cd9326a..4bab1e6fcf3 100644 --- a/src/plugins/languageclient/semantichighlightsupport.cpp +++ b/src/plugins/languageclient/semantichighlightsupport.cpp @@ -369,6 +369,8 @@ void SemanticTokenSupport::setAdditionalTokenTypeStyles( SemanticRequestTypes SemanticTokenSupport::supportedSemanticRequests(TextDocument *document) const { + if (!m_client->documentOpen(document)) + return SemanticRequestType::None; auto supportedRequests = [&](const QJsonObject &options) -> SemanticRequestTypes { TextDocumentRegistrationOptions docOptions(options); if (docOptions.isValid() From 5769dbe0aac7f40af48e65f1819c34a79705fd83 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 15 Nov 2021 14:58:40 +0100 Subject: [PATCH 02/41] ClangCodeModel: Force clangd re-highlighting on font settings change Change-Id: Ie449a5329bd49eac116751e66a07602f316e147d Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 10 +++++----- .../languageclient/semantichighlightsupport.cpp | 6 +++--- src/plugins/languageclient/semantichighlightsupport.h | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 7d034f7aac3..40f726f90ce 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -1072,7 +1072,7 @@ public: const QString &type = {}); void handleSemanticTokens(TextDocument *doc, const QList &tokens, - int version); + int version, bool force); enum class AstCallbackMode { SyncIfPossible, AlwaysAsync }; using TextDocOrFile = const Utils::variant; @@ -1270,8 +1270,8 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir) setDiagnosticsHandlers(textMarkCreator, hideDiagsHandler); setSymbolStringifier(displayNameFromDocumentSymbol); setSemanticTokensHandler([this](TextDocument *doc, const QList &tokens, - int version) { - d->handleSemanticTokens(doc, tokens, version); + int version, bool force) { + d->handleSemanticTokens(doc, tokens, version, force); }); hoverHandler()->setHelpItemProvider([this](const HoverRequest::Response &response, const DocumentUri &uri) { @@ -2630,7 +2630,7 @@ static void semanticHighlighter(QFutureInterface &future, // in the semantic tokens nor in the AST. void ClangdClient::Private::handleSemanticTokens(TextDocument *doc, const QList &tokens, - int version) + int version, bool force) { SubtaskTimer t(highlightingTimer); qCDebug(clangdLog) << "handling LSP tokens" << doc->filePath() << tokens.size(); @@ -2641,7 +2641,7 @@ void ClangdClient::Private::handleSemanticTokens(TextDocument *doc, } const auto previous = previousTokens.find(doc); if (previous != previousTokens.end()) { - if (previous->first == tokens && previous->second == version) { + if (!force && previous->first == tokens && previous->second == version) { qCDebug(clangdLogHighlight) << "tokens and version same as last time; nothing to do"; return; } diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp index 4bab1e6fcf3..260cabd7e49 100644 --- a/src/plugins/languageclient/semantichighlightsupport.cpp +++ b/src/plugins/languageclient/semantichighlightsupport.cpp @@ -261,7 +261,7 @@ void SemanticTokenSupport::updateSemanticTokens(TextDocument *textDocument) void SemanticTokenSupport::rehighlight() { for (const Utils::FilePath &filePath : m_tokens.keys()) - highlight(filePath); + highlight(filePath, true); } void addModifiers(int key, @@ -474,7 +474,7 @@ void SemanticTokenSupport::handleSemanticTokensDelta( highlight(filePath); } -void SemanticTokenSupport::highlight(const Utils::FilePath &filePath) +void SemanticTokenSupport::highlight(const Utils::FilePath &filePath, bool force) { TextDocument *doc = TextDocument::textDocumentForFilePath(filePath); if (!doc || LanguageClientManager::clientForDocument(doc) != m_client) @@ -517,7 +517,7 @@ void SemanticTokenSupport::highlight(const Utils::FilePath &filePath) } } - m_tokensHandler(doc, expandedTokens, versionedTokens.version); + m_tokensHandler(doc, expandedTokens, versionedTokens.version, force); return; } int line = 1; diff --git a/src/plugins/languageclient/semantichighlightsupport.h b/src/plugins/languageclient/semantichighlightsupport.h index 110b14f23b0..1f205fe7813 100644 --- a/src/plugins/languageclient/semantichighlightsupport.h +++ b/src/plugins/languageclient/semantichighlightsupport.h @@ -56,7 +56,7 @@ inline bool operator==(const ExpandedSemanticToken &t1, const ExpandedSemanticTo && t1.type == t2.type && t1.modifiers == t2.modifiers; } using SemanticTokensHandler = std::function &, int)>; + const QList &, int, bool)>; namespace SemanticHighligtingSupport { @@ -99,7 +99,7 @@ private: void handleSemanticTokensDelta(const Utils::FilePath &filePath, const LanguageServerProtocol::SemanticTokensDeltaResult &result, int documentVersion); - void highlight(const Utils::FilePath &filePath); + void highlight(const Utils::FilePath &filePath, bool force = false); void updateFormatHash(); void currentEditorChanged(); void onCurrentEditorChanged(Core::IEditor *editor); From 20641cac7e05bf02c3fd5ba3889494dc20b53b4e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 15 Nov 2021 14:27:38 +0100 Subject: [PATCH 03/41] XcodebuildParser: Remove unused variables Change-Id: I753bfb50a5274d8c5e9f52b26e0f8173b243f9e6 Reviewed-by: Christian Kandeler --- src/plugins/projectexplorer/xcodebuildparser.cpp | 3 --- src/plugins/projectexplorer/xcodebuildparser.h | 2 -- 2 files changed, 5 deletions(-) diff --git a/src/plugins/projectexplorer/xcodebuildparser.cpp b/src/plugins/projectexplorer/xcodebuildparser.cpp index d967cd40b38..d2305845e45 100644 --- a/src/plugins/projectexplorer/xcodebuildparser.cpp +++ b/src/plugins/projectexplorer/xcodebuildparser.cpp @@ -59,8 +59,6 @@ OutputLineParser::Result XcodebuildParser::handleLine(const QString &line, Outpu QRegularExpressionMatch match = m_buildRe.match(line); if (match.hasMatch()) { m_xcodeBuildParserState = InXcodebuild; - m_lastTarget = match.captured(2); - m_lastProject = match.captured(3); return Status::Done; } if (m_xcodeBuildParserState == InXcodebuild @@ -89,7 +87,6 @@ OutputLineParser::Result XcodebuildParser::handleLine(const QString &line, Outpu if (match.hasMatch()) { ++m_fatalErrorCount; m_xcodeBuildParserState = UnknownXcodebuildState; - // unfortunately the m_lastTarget, m_lastProject might not be in sync scheduleTask(CompileTask(Task::Error, tr("Xcodebuild failed.")), 1); } if (m_xcodeBuildParserState == OutsideXcodebuild) diff --git a/src/plugins/projectexplorer/xcodebuildparser.h b/src/plugins/projectexplorer/xcodebuildparser.h index 0c31e27cddd..f7197322acc 100644 --- a/src/plugins/projectexplorer/xcodebuildparser.h +++ b/src/plugins/projectexplorer/xcodebuildparser.h @@ -56,8 +56,6 @@ private: const QRegularExpression m_successRe; const QRegularExpression m_buildRe; XcodebuildStatus m_xcodeBuildParserState = OutsideXcodebuild; - QString m_lastTarget; - QString m_lastProject; #if defined WITH_TESTS friend class XcodebuildParserTester; From d99145fc54dc687b457ba78b151ad56ca252604a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Nov 2021 14:15:07 +0100 Subject: [PATCH 04/41] Doc: Update info about compiler options Add screenshots. Task-number: QTCREATORBUG-26278 Change-Id: I55a7f903fd740744c2fc9ada44544641291b95bd Reviewed-by: Christian Kandeler --- .../qtcreator-options-clang-compilers.png | Bin 0 -> 4888 bytes .../qtcreator-options-cpp-compilers.png | Bin 0 -> 5706 bytes .../qtcreator-options-qcc-compilers.png | Bin 0 -> 4019 bytes .../creator-projects-compilers.qdoc | 65 ++++++++++++------ 4 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-options-clang-compilers.png create mode 100644 doc/qtcreator/images/qtcreator-options-cpp-compilers.png create mode 100644 doc/qtcreator/images/qtcreator-options-qcc-compilers.png diff --git a/doc/qtcreator/images/qtcreator-options-clang-compilers.png b/doc/qtcreator/images/qtcreator-options-clang-compilers.png new file mode 100644 index 0000000000000000000000000000000000000000..04dd4bfd7fb3e653dc84688fd68f05a70bdb3ff8 GIT binary patch literal 4888 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 Qd{vOBr>mdKI;Vst08QY8G5`Po literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-options-qcc-compilers.png b/doc/qtcreator/images/qtcreator-options-qcc-compilers.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8630f67283484d579203782a534701a755d04d GIT binary patch literal 4019 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 VOA||^7#J8BJYD@<);T3K0RY_dTp9oX literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc index 17995bffb15..e03e367aba0 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc @@ -54,18 +54,6 @@ \list - \li GNU Compiler Collection (GCC) is a compiler for Linux and - \macos. - - \li \MinGW (Minimalist GNU for Windows) is a native software port of GCC - and GNU Binutils for use in the development of native Microsoft - Windows applications on Windows. \MinGW is distributed together with - \QC and Qt for Windows. - - \li ICC (Intel C++ Compiler) is a group of C and C++ compilers. - Only the GCC-compatible variant, available for Linux and \macos, - is currently supported by \QC. - \li Clang is a C, C++, Objective C, and Objective C++ front-end for the LLVM compiler for Windows, Linux, and \macos. @@ -73,6 +61,21 @@ is an alternative command-line interface to Clang that is compatible with the Visual C++ compiler, \c cl.exe. + \li GNU Compiler Collection (GCC) is a compiler for Linux and + \macos. + + \li ICC (Intel C++ Compiler) is a group of C and C++ compilers. + Only the GCC-compatible variant, available for Linux and \macos, + is currently supported by \QC. + + \li \MinGW (Minimalist GNU for Windows) is a native software port of GCC + and GNU Binutils for use in the development of native Microsoft + Windows applications on Windows. \MinGW is distributed together with + \QC and Qt for Windows. + + \li MSVC (Microsoft Visual C++ Compiler) is a C++ compiler that is + installed with Microsoft Visual Studio. + \li Nim is the Nim Compiler for Windows, Linux, and \macos. \li QCC is the interface for compiling C++ applications for QNX. @@ -100,6 +103,9 @@ \endlist + The emscripten compiler is tool chain for compiling to + \l{Building Applications for the Web}{WebAssembly}. + \section1 Redetecting Compilers When \QC finds an x86_64 GCC compiler, it sets up an instance for the native @@ -118,31 +124,37 @@ to the directory where the compiler is located and select the application binary interface (ABI) version from the list of available versions. You can also create a custom ABI definition. - For QCC, also specify the path to the QNX Software Development Platform (SDP). + For QCC, also specify the path to the QNX Software Development Platform + (SDP) in the \uicontrol {SPD path} field. To enable Microsoft Visual C++ Compilers (MSVC) and clang-cl to find system headers, libraries, and the linker, \QC executes them inside a command prompt where the environment has been set up using \c {vcvarsall.bat}. For these compilers, you also specify the path to the script that sets up the - command prompt. + command prompt in the \uicontrol Initialization field. You specify the compiler to use for each kit in \uicontrol Tools > \uicontrol Options > \uicontrol Kits. - To add C or C++ compilers: + To add a C or C++ compiler, select \uicontrol Tools > \uicontrol Options > + \uicontrol Kits > \uicontrol Compilers > \uicontrol Add. Select a compiler + in the list, and then select \uicontrol C or \uicontrol C++. - \list 1 + To clone the selected compiler, select \uicontrol Clone. - \li Select \uicontrol Tools > \uicontrol Options > - \uicontrol Kits > \uicontrol Compilers > \uicontrol Add, - then select a compiler in the list, and then select \uicontrol C or - \uicontrol C++ to add a C or C++ compiler. + The settings to specify depend on the compiler: - To clone the selected compiler, select \uicontrol Clone. + \list \li In the \uicontrol Name field, enter a name for the compiler to identify it in \QC. + \image qtcreator-options-cpp-compilers.png "Adding a clang-cl compiler" + + \li In the \uicontrol Initialization field, select the + \c {vcvarsall.bat} file for setting up the command + prompt to use. + \li In the \uicontrol {Compiler path} field, enter the path to the directory where the compiler is located. @@ -154,7 +166,16 @@ the linker that specify the architecture on the target platform. The linker flags are used only when building with Qbs. - The other settings to specify depend on the compiler. + \image qtcreator-options-clang-compilers.png "Adding a Clang compiler" + + \li In the \uicontrol {Parent toolchain} field, select a \MinGW + compiler, which is needed because Clang does not have its own + standard library. + + \li In the \uicontrol {SPD path} field, specify the path to the QNX + Software Development Platform (SDP). + + \image qtcreator-options-qcc-compilers.png "Adding a QCC compiler" \li In the \uicontrol ABI field, provide an identification for the target architecture. This is used to warn about ABI mismatches From d8c8d7a25ee7cf13d7532644fb99eb35967cfb12 Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Mon, 15 Nov 2021 14:33:53 +0200 Subject: [PATCH 05/41] Update background colors in all themes other than design dark While we have chosen lower contrast lighter values for the design dark theme (via normalBackground and alternateBackground from Palette), the New Project dialog box did not look well on other themes. I have replaced the background colors for those other themes, so that DSBackgroundColorNormal is now set to the value of DSsectionHeadBackground, while DSBackgroundColorAlternate is set to the value of DSpanelBackground, which makes the dialog look more like the property editor. Also, fixed the item delegate in NewProjectView, which had a non-transparent background. This background was visible on light versions of the theme. Change-Id: Iad7dea1ea1a03839293148178dbc441c05b3fb7f Reviewed-by: Brook Cronin Reviewed-by: Mahmoud Badri Reviewed-by: Thomas Hartmann --- .../imports/NewProjectDialog/NewProjectView.qml | 1 + share/qtcreator/themes/dark.creatortheme | 4 ++-- share/qtcreator/themes/default.creatortheme | 4 ++-- share/qtcreator/themes/design-light.creatortheme | 4 ++-- share/qtcreator/themes/flat-dark.creatortheme | 4 ++-- share/qtcreator/themes/flat-light.creatortheme | 4 ++-- share/qtcreator/themes/flat.creatortheme | 4 ++-- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/NewProjectView.qml b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/NewProjectView.qml index 049b955420c..3b72dc1b83f 100644 --- a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/NewProjectView.qml +++ b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/NewProjectView.qml @@ -134,6 +134,7 @@ GridView { width: DialogValues.projectItemWidth height: DialogValues.projectItemHeight + background: null function fontIconCode(index) { var code = projectModel.fontIconCode(index) diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme index e0e02c6d49d..7826a271884 100644 --- a/share/qtcreator/themes/dark.creatortheme +++ b/share/qtcreator/themes/dark.creatortheme @@ -155,8 +155,8 @@ DStoolTipText=ffdadada DSUnimportedModuleColor=ffe33c2e -DSBackgroundColorAlternate=alternateBackground -DSBackgroundColorNormal=normalBackground +DSBackgroundColorAlternate=ff323232 +DSBackgroundColorNormal=ff1f1f1f ;DS controls theme END diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme index 9a7729b9cf0..43a894ce89c 100644 --- a/share/qtcreator/themes/default.creatortheme +++ b/share/qtcreator/themes/default.creatortheme @@ -146,8 +146,8 @@ DStoolTipText=ffdadada DSUnimportedModuleColor=ffe33c2e -DSBackgroundColorAlternate=alternateBackground -DSBackgroundColorNormal=normalBackground +DSBackgroundColorAlternate=ffeaeaea +DSBackgroundColorNormal=ffd8d8d8 ;DS controls theme END diff --git a/share/qtcreator/themes/design-light.creatortheme b/share/qtcreator/themes/design-light.creatortheme index 9f5dae6d574..acb7ac9cd27 100644 --- a/share/qtcreator/themes/design-light.creatortheme +++ b/share/qtcreator/themes/design-light.creatortheme @@ -160,8 +160,8 @@ DStoolTipText=ffdadada DSUnimportedModuleColor=ffe33c2e -DSBackgroundColorAlternate=alternateBackground -DSBackgroundColorNormal=normalBackground +DSBackgroundColorAlternate=ffeaeaea +DSBackgroundColorNormal=ffd8d8d8 ;DS controls theme END diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme index a09df062adb..ee4d8e85ec8 100644 --- a/share/qtcreator/themes/flat-dark.creatortheme +++ b/share/qtcreator/themes/flat-dark.creatortheme @@ -159,8 +159,8 @@ DStoolTipText=ffdadada DSUnimportedModuleColor=ffe33c2e -DSBackgroundColorAlternate=alternateBackground -DSBackgroundColorNormal=normalBackground +DSBackgroundColorAlternate=ff323232 +DSBackgroundColorNormal=ff1f1f1f ;DS controls theme END diff --git a/share/qtcreator/themes/flat-light.creatortheme b/share/qtcreator/themes/flat-light.creatortheme index c7704cfb783..dc894638f32 100644 --- a/share/qtcreator/themes/flat-light.creatortheme +++ b/share/qtcreator/themes/flat-light.creatortheme @@ -155,8 +155,8 @@ DStoolTipText=ffdadada DSUnimportedModuleColor=ffe33c2e -DSBackgroundColorAlternate=alternateBackground -DSBackgroundColorNormal=normalBackground +DSBackgroundColorAlternate=ffeaeaea +DSBackgroundColorNormal=ffd8d8d8 ;DS controls theme END diff --git a/share/qtcreator/themes/flat.creatortheme b/share/qtcreator/themes/flat.creatortheme index 17e3b1aafd0..b4769cbe741 100644 --- a/share/qtcreator/themes/flat.creatortheme +++ b/share/qtcreator/themes/flat.creatortheme @@ -153,8 +153,8 @@ DStoolTipText=ffdadada DSUnimportedModuleColor=ffe33c2e -DSBackgroundColorAlternate=alternateBackground -DSBackgroundColorNormal=normalBackground +DSBackgroundColorAlternate=ff323232 +DSBackgroundColorNormal=ff1f1f1f ;DS controls theme END From e76b47f1840a668902fece65b6ed3c3a72f388fa Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Nov 2021 16:12:22 +0100 Subject: [PATCH 06/41] Doc: Update info about Qbs build settings Task-number: QTCREATORBUG-26278 Change-Id: Iab2df11d613f6c0a1aa119fcc85104e1bc53e08e Reviewed-by: Christian Kandeler --- .../images/qtcreator-build-settings-qbs.png | Bin 9830 -> 10842 bytes .../creator-projects-settings-build-qbs.qdoc | 3 +++ .../creator-projects-targets.qdoc | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/qtcreator/images/qtcreator-build-settings-qbs.png b/doc/qtcreator/images/qtcreator-build-settings-qbs.png index 4aba9efc58dd94f2ef63790ad2206e428c1340c4..a5b3caed8341d5896dd9a175b1a50f83fbeda85e 100644 GIT binary patch literal 10842 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 GgeCyjPKf>h literal 9830 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 Pfq}u()z4*}Q$iB}!V&aI diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc index 8ffef125ea1..64ab2f468ec 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc @@ -48,6 +48,9 @@ more information, see \l{Using the Performance Analyzer}. To use default settings, select \uicontrol {Leave at Default}. + For more information about the QML and Qt Quick options, see + \l{Compiling QML}. + For more information about configuring Qbs, see \l{Setting Up Qbs}. \section1 Qbs Build Steps diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc index 109be0f8483..e05b586aca5 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc @@ -212,7 +212,8 @@ \list 1 - \li Select \uicontrol Change next to the + \li In \uicontrol Tools > \uicontrol Options > \uicontrol Kits, select + the kit, and then select \uicontrol Change next to the \uicontrol {Additional Qbs Profile Settings} field to open the \uicontrol {Custom Properties} dialog. From ccf2e920dc4a02aa447c3600ed3357b9b151e324 Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Fri, 22 Oct 2021 11:03:32 +0200 Subject: [PATCH 07/41] Doc: Update Qt-Bridge plugin doc for adobe XD Document Text Rendering, XD Component support and limitations Task-number: QDS-5256 Change-Id: I6a83b0ee5e67db60392cd5dbe17a3feb70564b7e Reviewed-by: Leena Miettinen Reviewed-by: Thomas Hartmann --- .../src/qtbridge/qtbridge-xd-using.qdoc | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-xd-using.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-xd-using.qdoc index 2988954af91..7a94f9054ec 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-xd-using.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-xd-using.qdoc @@ -40,8 +40,11 @@ layers that are imported into \QDS as separate files. \li Use descriptive and unique IDs to avoid duplicate asset names and IDs in the generated UI. + \li Use XD Components and instances to reuse the UI elements. \endlist + \note Although \QBXD preserves the XD Component and instance's relationship, overrides + and states are not yet supported. To use the fonts that you use in Adobe XD also in \QDS, you need to import them to \QDS as assets. \QDS deploys them to devices when you preview the @@ -60,11 +63,15 @@ The following design elements might not be exported as expected. \list - \li Components + \li Component states + \li Component overrides \li Prototype \li Repeat Grid \endlist + \note Adobe XD's plugin API support is incomplete. Specifically, the support + for XD Components is limited. This might change in the future and \QBXD might + extend the XD Component support. \section2 Using Artboards @@ -120,6 +127,8 @@ properties will be ignored if \uicontrol {Component} is defined for a text layer, but explicit properties defined in the \uicontrol {Properties} field will be applied. + \li Select the \uicontrol {Render Text} check box to render the text layer + as an image \li In the \uicontrol {Imports} field, enter additional import statements to have them added to the generated code file. For example, to use Qt Quick Controls 2.3, you need the import statement @@ -134,10 +143,13 @@ bounding rectangle. \li Select the \uicontrol Visible check box to determine the visibility of the layer in the generated UI in \QDS. - \li Select \uicontrol Export to export the document into a .qtbridge - archive. + \li Select \uicontrol Export to launch the export dialog to export the document + into a .qtbridge archive. \endlist + \note XD Components can not be skipped and Text layers can only be merged when + \uicontrol {Render Text} is selected. + \section2 Export Defaults @@ -145,9 +157,9 @@ By default: \list - \li Artboards are exported as \e components. - \li Immediate children of an Artboard and Text layers are exported as - \e child. + \li Artboards and XD Components are exported as \e components. + \li Component instances, Text layers and immediate children of an Artboard + are exported as \e child. \li Any layer not falling under the aforementioned criteria is exported as \e merged. \li Images are exported as PNGs by default with no Hi-DPI images. From 949f7c3e846a7361ad1fd36c1b54c96601ae3e55 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Nov 2021 16:38:38 +0100 Subject: [PATCH 08/41] Doc: Describe "Build missing" option in Conan build step Task-number: QTCREATORBUG-26278 Change-Id: I0b13495c9bf4b20b4b19e00913b544931d29363d Reviewed-by: Jarek Kobus --- .../qtcreator-build-steps-conan-install.png | Bin 8032 -> 9912 bytes .../creator-projects-conan-building.qdoc | 3 +++ 2 files changed, 3 insertions(+) diff --git a/doc/qtcreator/images/qtcreator-build-steps-conan-install.png b/doc/qtcreator/images/qtcreator-build-steps-conan-install.png index 09ab3549aa2952ad04c89384ecc3d2279b70b1b5..b70814dcafa6718d89e47e0c2d435a5321b0974d 100644 GIT binary patch literal 9912 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 M>FVdQ&MBb@0D|1WJOBUy diff --git a/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc index 20e0c4159bd..836748e3b03 100644 --- a/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc +++ b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc @@ -47,4 +47,7 @@ The \uicontrol {Conan install} field displays the effective build command. You can add arguments for the command in the \uicontrol {Additional arguments} field. + + Select \uicontrol {Build missing} to build packages from source if binary + packages are not found. */ From 6efcd09063e4cc4a460fd484a165ab8441d9e3e3 Mon Sep 17 00:00:00 2001 From: Jonathan Mouchou Date: Sun, 14 Nov 2021 17:25:44 -0800 Subject: [PATCH 09/41] Android: Fix AndroidManifest wizard invalid package source dir Fix the wizard from inserting the filename for the file path leading to an invalid directory. Example invalid path: /projectpath/projectname/projectname.pro/android With fixed path: /projectpath/projectname/android Fixes: QTCREATORBUG-26580 Change-Id: If82a6f795ca400beddc26b959e65ea066ad79433 Reviewed-by: hjk Reviewed-by: Alessandro Portale --- src/plugins/android/createandroidmanifestwizard.cpp | 5 ++++- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/android/createandroidmanifestwizard.cpp b/src/plugins/android/createandroidmanifestwizard.cpp index 266f77cf038..1b24191ccc3 100644 --- a/src/plugins/android/createandroidmanifestwizard.cpp +++ b/src/plugins/android/createandroidmanifestwizard.cpp @@ -227,7 +227,10 @@ void ChooseDirectoryPage::initializePage() "The files in the Android package source directory are copied to the build directory's " "Android directory and the default files are overwritten.")); - m_androidPackageSourceDir->setFilePath(bti.projectFilePath / "android"); + const FilePath projectPath = bti.projectFilePath.isFile() + ? bti.projectFilePath.parentDir() : bti.projectFilePath; + + m_androidPackageSourceDir->setFilePath(projectPath / "android"); connect(m_androidPackageSourceDir, &PathChooser::rawPathChanged, this, &ChooseDirectoryPage::checkPackageSourceDir); } else { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 4eb6fdc97fc..e8a617768dc 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1014,7 +1014,7 @@ const QList CMakeBuildSystem::appTargets() const BuildTargetInfo bti; bti.displayName = ct.title; bti.targetFilePath = ct.executable; - bti.projectFilePath = ct.sourceDirectory.stringAppended("/"); + bti.projectFilePath = ct.sourceDirectory.cleanPath(); bti.workingDirectory = ct.workingDirectory; bti.buildKey = buildKey; bti.usesTerminal = !ct.linksToQtGui; From 35e6991772e7bc93c131564814ad2205d8f195c6 Mon Sep 17 00:00:00 2001 From: Piotr Mikolajczyk Date: Mon, 8 Nov 2021 10:43:15 +0100 Subject: [PATCH 10/41] Fix bad activity if designviewer built with qt6 Changed the activity name run, so only the Qt6 version of Qt Design Viewer is launched. Change-Id: I79efc2a4ab37e9015b2feabda08ce274c6fca553 Reviewed-by: Assam Boudjelthia --- src/plugins/android/androidqmlpreviewworker.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidqmlpreviewworker.cpp b/src/plugins/android/androidqmlpreviewworker.cpp index 5eb0c887d7c..f58adf0ec63 100644 --- a/src/plugins/android/androidqmlpreviewworker.cpp +++ b/src/plugins/android/androidqmlpreviewworker.cpp @@ -75,7 +75,8 @@ ApkInfo::ApkInfo() : ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A}), appId(APP_ID), uploadDir("/data/local/tmp/" APP_ID "/"), - activityId(APP_ID "/org.qtproject.qt5.android.bindings.QtActivity"), +#TODO Add possibility to run Qt5 built version of Qt Design Viewer + activityId(APP_ID "/org.qtproject.qt.android.bindings.QtActivity"), name("Qt Design Viewer") { } From 9116256a865b63dc379ca40e8e0dd7da589aaad3 Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Wed, 10 Nov 2021 19:49:59 +0100 Subject: [PATCH 11/41] QmlDesigner: Add fake Android kit workaround Add a workaround to make a fake Android kit work. Fake in this case that it uses a default desktop Qt version which doesn't contain any Android compilers. In order for that to work the deploy step needs to be skipped. Task-number: QDS-5385 Change-Id: I69a5c78ac810de916b3180736e61d6083d66d121 Reviewed-by: Alessandro Portale Reviewed-by: Vikas Pachdha --- src/plugins/qmlpreview/qmlpreviewplugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmlpreview/qmlpreviewplugin.cpp b/src/plugins/qmlpreview/qmlpreviewplugin.cpp index 4902ac52361..6bd695ac72b 100644 --- a/src/plugins/qmlpreview/qmlpreviewplugin.cpp +++ b/src/plugins/qmlpreview/qmlpreviewplugin.cpp @@ -222,8 +222,8 @@ QmlPreviewPluginPrivate::QmlPreviewPluginPrivate(QmlPreviewPlugin *parent) bool skipDeploy = false; const Kit *kit = SessionManager::startupTarget()->kit(); if (SessionManager::startupTarget() && kit) - skipDeploy = kit-> - supportedPlatforms().contains(Android::Constants::ANDROID_DEVICE_TYPE); + skipDeploy = kit->supportedPlatforms().contains(Android::Constants::ANDROID_DEVICE_TYPE) + || DeviceTypeKitAspect::deviceTypeId(kit) == Android::Constants::ANDROID_DEVICE_TYPE; ProjectExplorerPlugin::runStartupProject(Constants::QML_PREVIEW_RUN_MODE, skipDeploy); }); menu->addAction( From 55c21cecdfd1fe9b192860dc4ed0847ee8df2a57 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 15 Nov 2021 14:31:19 +0100 Subject: [PATCH 12/41] QtDesignStudio: Split "New Files" from "New Project" Just having the "New Project" dialog there is confusing to many users and they do not know how to add new files. Upstream in master we can remove the condition and split the dialog also for Qt Creator. Task-number: QDS-5494 Change-Id: I9a21f27fad932759fcfc412ecfac7f3f6d2bcfee Reviewed-by: Eike Ziller Reviewed-by: Qt CI Bot Reviewed-by: Samuel Ghinet --- src/plugins/coreplugin/coreconstants.h | 1 + src/plugins/coreplugin/mainwindow.cpp | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 51cfbfc382f..f74c212a838 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -87,6 +87,7 @@ const char ZOOM_OUT[] = "QtCreator.ZoomOut"; const char ZOOM_RESET[] = "QtCreator.ZoomReset"; const char NEW[] = "QtCreator.New"; +const char NEW_FILE[] = "QtCreator.NewFile"; const char OPEN[] = "QtCreator.Open"; const char OPEN_WITH[] = "QtCreator.OpenWith"; const char REVERTTOSAVED[] = "QtCreator.RevertToSaved"; diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 83d5a257a57..d2043b733ae 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -527,7 +527,9 @@ void MainWindow::registerDefaultActions() // New File Action QIcon icon = QIcon::fromTheme(QLatin1String("document-new"), Utils::Icons::NEWFILE.icon()); - QString newActionText = isQtDesignStudio() ? tr("&New Project...") : tr("&New File or Project..."); + + const bool isQDS = isQtDesignStudio(); + const QString newActionText = isQDS ? tr("&New Project...") : tr("&New File or Project..."); m_newAction = new QAction(icon, newActionText, this); cmd = ActionManager::registerAction(m_newAction, Constants::NEW); cmd->setDefaultKeySequence(QKeySequence::New); @@ -541,6 +543,24 @@ void MainWindow::registerDefaultActions() } }); + if (isQDS) { + auto action = new QAction(icon, tr("New File..."), this); + cmd = ActionManager::registerAction(action, Constants::NEW_FILE); + mfile->addAction(cmd, Constants::G_FILE_NEW); + connect(action, &QAction::triggered, this, []() { + if (!ICore::isNewItemDialogRunning()) { + ICore::showNewItemDialog( + tr("New File", "Title of dialog"), + Utils::filtered(Core::IWizardFactory::allWizardFactories(), + Utils::equal(&Core::IWizardFactory::kind, + Core::IWizardFactory::FileWizard)), + FilePath()); + } else { + ICore::raiseWindow(ICore::newItemDialog()); + } + }); + } + // Open Action icon = QIcon::fromTheme(QLatin1String("document-open"), Utils::Icons::OPENFILE.icon()); m_openAction = new QAction(icon, tr("&Open File or Project..."), this); From 0030836f9612673cceee59663f5620393dc256c0 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 16 Nov 2021 12:35:49 +0100 Subject: [PATCH 13/41] Android: Fix compilation Amends 35e6991772. Change-Id: Iba3dcf86b7b1ca7963a0b99798dafec85d19bd65 Reviewed-by: Cristian Adam --- src/plugins/android/androidqmlpreviewworker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androidqmlpreviewworker.cpp b/src/plugins/android/androidqmlpreviewworker.cpp index f58adf0ec63..ced1c06f5fa 100644 --- a/src/plugins/android/androidqmlpreviewworker.cpp +++ b/src/plugins/android/androidqmlpreviewworker.cpp @@ -75,7 +75,7 @@ ApkInfo::ApkInfo() : ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A}), appId(APP_ID), uploadDir("/data/local/tmp/" APP_ID "/"), -#TODO Add possibility to run Qt5 built version of Qt Design Viewer + // TODO Add possibility to run Qt5 built version of Qt Design Viewer activityId(APP_ID "/org.qtproject.qt.android.bindings.QtActivity"), name("Qt Design Viewer") { From 5a073962054b5935025fcad33b81db0675436d55 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 15 Nov 2021 14:51:30 +0100 Subject: [PATCH 14/41] XcodebuildParser: Fix parsing for newer Xcode versions The output of xcodebuild changed, and no longer contains "BUILD (AGGREGATE ...)". Instead it prints various "note:"s. Use "note: Build preparation complete" to trigger parsing the following output on stdout for error messages. Task-number: QTCREATORBUG-26541 Change-Id: I9dabcc30389352aa5f78dae31104a8c9cf56eb19 Reviewed-by: Christian Kandeler --- .../projectexplorer/xcodebuildparser.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/xcodebuildparser.cpp b/src/plugins/projectexplorer/xcodebuildparser.cpp index d2305845e45..8b538472cdc 100644 --- a/src/plugins/projectexplorer/xcodebuildparser.cpp +++ b/src/plugins/projectexplorer/xcodebuildparser.cpp @@ -54,10 +54,13 @@ XcodebuildParser::XcodebuildParser() OutputLineParser::Result XcodebuildParser::handleLine(const QString &line, OutputFormat type) { + static const QStringList notesPatterns({"note: Build preparation complete", + "note: Building targets in parallel", + "note: Planning build"}); const QString lne = rightTrimmed(line); if (type == StdOutFormat) { QRegularExpressionMatch match = m_buildRe.match(line); - if (match.hasMatch()) { + if (match.hasMatch() || notesPatterns.contains(lne)) { m_xcodeBuildParserState = InXcodebuild; return Status::Done; } @@ -190,6 +193,19 @@ void ProjectExplorerPlugin::testXcodebuildParserParsing_data() << Tasks() << QString() << XcodebuildParser::OutsideXcodebuild; + QTest::newRow("switch outside->in->outside (new)") + << XcodebuildParser::OutsideXcodebuild + << QString::fromLatin1("outside\n" + "note: Build preparation complete\n" + "in xcodebuild\n" + "in xcodebuild2\n" + "** BUILD SUCCEEDED **\n" + "outside2") + << OutputParserTester::STDOUT + << QString::fromLatin1("outside\noutside2\n") << QString::fromLatin1("in xcodebuild\nin xcodebuild2\n") + << Tasks() + << QString() + << XcodebuildParser::OutsideXcodebuild; QTest::newRow("switch Unknown->in->outside") << XcodebuildParser::UnknownXcodebuildState << QString::fromLatin1("unknown\n" From 531f3ada2cabb5a67f990eb1a060c530bee362be Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 15 Nov 2021 15:11:43 +0100 Subject: [PATCH 15/41] CMake: Add xcodebuild parser for "Darwin" targets Similar to the qmake make build step, so build issues are parsed for iOS builds. Task-number: QTCREATORBUG-26541 Change-Id: Ie71a3087feab2720f6d8b4974d221a70c3fe76fa Reviewed-by: Christian Kandeler --- src/plugins/cmakeprojectmanager/cmakebuildstep.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 0973bbc519a..cd537172c8e 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include @@ -285,6 +286,13 @@ void CMakeBuildStep::setupOutputFormatter(Utils::OutputFormatter *formatter) formatter->addLineParser(progressParser); cmakeParser->setSourceDirectory(project()->projectDirectory().toString()); formatter->addLineParsers({cmakeParser, new GnuMakeParser}); + ToolChain *tc = ToolChainKitAspect::cxxToolChain(kit()); + OutputTaskParser *xcodeBuildParser = nullptr; + if (tc && tc->targetAbi().os() == Abi::DarwinOS) { + xcodeBuildParser = new XcodebuildParser; + formatter->addLineParser(xcodeBuildParser); + progressParser->setRedirectionDetector(xcodeBuildParser); + } const QList additionalParsers = kit()->createOutputParsers(); for (Utils::OutputLineParser * const p : additionalParsers) p->setRedirectionDetector(progressParser); From dd1882b8177a8059a159f52d22ea73c66f31427c Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Fri, 12 Nov 2021 10:05:42 +0100 Subject: [PATCH 16/41] WebAssembly: fix the running of targets with name != project.name The new QtQuick application wizard for Qt 6.2-based applications now uses different names for the project and for the main target. The WebAssembly plugin cannot construct the html file name for launching like .html, anymore. It instead would need to use .html for that. The author of this patch did not manage to programmatically retrieve the target name or buildkey. So, as a hack, we simply chose the first html file that we find in the build directory. Fixes: QTCREATORBUG-26562 Change-Id: I7e929fe265a15501c7275e2c76b7f5fa4ed1e6b5 Reviewed-by: hjk Reviewed-by: Alessandro Portale --- .../webassemblyrunconfiguration.cpp | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/plugins/webassembly/webassemblyrunconfiguration.cpp b/src/plugins/webassembly/webassemblyrunconfiguration.cpp index 123887caf7b..29bd1b5d047 100644 --- a/src/plugins/webassembly/webassemblyrunconfiguration.cpp +++ b/src/plugins/webassembly/webassemblyrunconfiguration.cpp @@ -55,14 +55,20 @@ static FilePath pythonInterpreter(const Environment &env) return {}; } -static CommandLine emrunCommand(Target *target, const QString &browser, const QString &port) +static FilePath htmlFileInDir(const FilePath &dir) { - if (BuildConfiguration *bc = target->activeBuildConfiguration()) { + const FilePaths htmlFiles = dir.dirEntries(QStringList("*.html"), QDir::Files); + return htmlFiles.isEmpty() ? FilePath() : htmlFiles.first(); +} + +static CommandLine emrunCommand(const RunConfiguration *rc, const QString &browser, + const QString &port) +{ + if (BuildConfiguration *bc = rc->target()->activeBuildConfiguration()) { const Environment env = bc->environment(); const FilePath emrun = env.searchInPath("emrun"); const FilePath emrunPy = emrun.absolutePath().pathAppended(emrun.baseName() + ".py"); - const FilePath html = - bc->buildDirectory().pathAppended(target->project()->displayName() + ".html"); + const FilePath html = htmlFileInDir(bc->buildDirectory()); return CommandLine(pythonInterpreter(env), { emrunPy.path(), @@ -91,8 +97,8 @@ public: effectiveEmrunCall->setDisplayStyle(StringAspect::TextEditDisplay); effectiveEmrunCall->setReadOnly(true); - setUpdater([target, effectiveEmrunCall, webBrowserAspect] { - effectiveEmrunCall->setValue(emrunCommand(target, + setUpdater([this, effectiveEmrunCall, webBrowserAspect] { + effectiveEmrunCall->setValue(emrunCommand(this, webBrowserAspect->currentBrowser(), "").toUserOutput()); }); @@ -122,7 +128,7 @@ public: setStarter([this, runControl, portsGatherer] { Runnable r; - r.command = emrunCommand(runControl->target(), + r.command = emrunCommand(runControl->runConfiguration(), runControl->aspect()->currentBrowser(), QString::number(portsGatherer->findEndPoint().port())); SimpleTargetRunner::doStart(r, {}); From 899a4d1f105ee765b74cace6972c145e26c2f3f0 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 16 Nov 2021 15:28:03 +0100 Subject: [PATCH 17/41] LanguageClient: Reopen document after restarting crashed server Change-Id: I7c8518a631a45ea784ff849b703ae1e9abfba396 Reviewed-by: Christian Kandeler --- src/plugins/languageclient/languageclientmanager.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index f4b4439dae9..fd54d777005 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -136,10 +136,15 @@ void LanguageClientManager::clientStarted(Client *client) qCDebug(Log) << "client started: " << client->name() << client; QTC_ASSERT(managerInstance, return); QTC_ASSERT(client, return); - if (managerInstance->m_shuttingDown) + if (managerInstance->m_shuttingDown) { clientFinished(client); - else - client->initialize(); + return; + } + client->initialize(); + const QList &clientDocs + = managerInstance->m_clientForDocument.keys(client); + for (TextEditor::TextDocument *document : clientDocs) + client->openDocument(document); } void LanguageClientManager::clientFinished(Client *client) From e6e69ad07bf97caa2c3f8cb4a044fdba368530f4 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Nov 2021 16:11:06 +0100 Subject: [PATCH 18/41] Doc: Update info about qmake build settings Task-number: QTCREATORBUG-26278 Change-Id: Ifa7cd0349ca31c97f8f8db28461db6a4200180fe Reviewed-by: Christian Kandeler --- .../qtcreator-build-settings-default.png | Bin 7735 -> 8119 bytes .../images/qtcreator-build-steps.png | Bin 15151 -> 14817 bytes .../creator-build-settings-qmake.qdoc | 9 ++++++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/qtcreator/images/qtcreator-build-settings-default.png b/doc/qtcreator/images/qtcreator-build-settings-default.png index 3ca79641a6bd6f820059d3d37ce94f60fd0246e8..2f5fb01edff99f4a5c2f9a9df4984cd6a0c58708 100644 GIT binary patch literal 8119 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 literal 7735 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 BXYv35 diff --git a/doc/qtcreator/images/qtcreator-build-steps.png b/doc/qtcreator/images/qtcreator-build-steps.png index 3ccf931360ce5656ec7312aac422ed7861f3f420..96c84bbc8468cb4f344eff3afa473a19b21b8083 100644 GIT binary patch literal 14817 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

OuPStPbyEYr9WC5A#Sj<^ZBZyU(;S){6PnvBo zbJ}<7TeIJ9oPD@uyOQwS*H@Kxb_Pp+Sz&&9uHWHV^NMsn`6L>)U*n4R&3nIfj_x$0 z;>tZ&=S+TlBK`49oBG6(3E_XHxPfMezLvht<=Y$S{I%uh?WzmWIbv2XJFG-Ze_1Qo zz5f2@`n@Jc;X`U08%1qj`_2l{w|zR}MxT4pj9`zy&&q7S-bswl*ERlfZkhSd9G$<* z&M&>TTyeQy=9jj67orV{F4eNFwskz?bI{XRbk3H5S$SvW^$p?+E@}3!pOz7_Hal=> zE$iAn8!8{I-8Nh4knf_vv;V#oQD5)wKE*5 zXCt3ZJ2<;X*XqjBnEjIGfj$vhPp4^Qec8UbBJ}>0m^~enX4v}8J96%>irvM#kE%Ya zZ|AlXDLl1t%Dp2pO%?gs^4Xd@T^HX}ufMu~PS-8I<+h*e;?5X7uJQ#7b;(8+P*kb%}lHQuuoBw{NL4cYI@e!E4r7cbGw&ORHd!(H0ia zL?H6Gn=`0>Pq_T$n6di8^te40A9XujlyaSd-ilT+Gc<6sfaVy%gZ1#C7R1y8XyOks z=L}Z>8s-B{L4yofdrg{w;lMG+_q+@Y9DYoo8B*lQ3#bX8p&XFIFoqVHArl=No>obx zSI%5ES^eyxz`Za2WW?V}sW&RUKEE;Pw#PQ@&&OgZ!4}8hn+U?x@4Ii zY*09PpVy8(Jc(vy-{t=O`F#FY_wT=}!#_X$9RL5Xy_Wpf^`{D~=B^T-z0AB=sm=S> z<=bh2aw`MR{dR8P8yBK{j z-+ODuD!DgxK7qRT&Sy<^{*Zk0c2-5z?9V$6-Q7B0(Mo>x>uYbKEVo)H{(TiSJA^Gp z=nLE2oF#E9?5`f`Ub@}p^d_|zA%8;V`}J*d%b$AY&5Jopw_BY`(cgYu=W|*8q20WD z<)>)hm%V=as*|j+@Gr)+;;TQzw2Z30ofhVPHbq};<{s{ak^A31dB62s*yT6h65`VQ zBF<-D-mB(dAs~CI_?OShsG_g}v3KpE&sh>q^C#_l%$2p$YGu&=mOmEJYfaMk`z5aF z^ZwE8XmQ|W%B8}@NYTd+CU=FMF7UeaudrJE&%d|dgibl8edpoXXYncPqJH&80p_(q z`TzgPm)HM#xjg;+yzo`OpH7dza(v;glHcs?R&9}`@2~9tHs4DA@1j$yqL!aBIG8^F zf92jP>FLYU-gZ7a|6qD)saE#h(EE<=(NGb{FS*Gfk2@UAp+XbXQ%| zKEKEA+t-LbF}jkme(%dkx7md>%T`TWBieFW z*YRu%)9m*<{&;7o$!WW39)3FM-kn#Q#Qk1RZ9X(3c(q7c02p=_~(IU%xlgTEi~uUkTf2vHbY;`1;R>`R!NKUthU> z)xtAsU$3gU=U>y;_s)Or*KtWwaiT=Sg*hMd?yvZ%t5c`GRHOZFaLK;RZ`(D(Bvvk* zUVhPP)&Z`Ao_ptXu)R4jH-+Q3!<=2d;?Xwi7UUhCr8)h_eugw#z4h)H`KnJ6N`s=m zrim~6dDigMsefJ{tvaSy?f1SV_Dj99-sNJJq@U*{`SPfI-PX)=|NGJta!fy-j(aD? zyfz}={@;(qzkv2 z|1o#(&g;)t{g`1hB_Xnk`_ALnx@ybwsDdFpNv0H*CKiV=+(L&Ni|WXrK4`_)Jcb^P+R!RIn`z>#n`Y>9?-xNy^eiueRR({^`(Et+thS z#P0D695V=2OOk(g?=QPonqt<^sxN8VpQ%}_eD6Gqt;%@2^Ub!+i-cp_r)~LmBWU`O z(|`A0Ik+w>qsRVAYTttt3D&FAchAW#@{2#R)BX&vK{J4CO40r{SuG%j8)Hy z+wMhAo6CK;tYwvSw4v&5X2bi1o}tfoT{x>HzRs9)J400K#`jvq?+k>E3fsIpxSJ;* zkqOM+%Cl7E(ed0?u5LrSm9N)Vp1v@tFFm2i^x^5aH&V=N-|XA2btdEfsb!BRe=89B zx?aw#sH|*R+>v#ALvOG8b9CVh@y{z&H{X%lt@*<_e9t#qsgBnIr(<6?y!qLeeRQhL z^S3?Rb6TP!g&5>cZLLr)ReZ-D|39DOow=8tcdCT?!vZg+hI?YQOdfulyYF2qpIoPR zpS?2Cd(%Jv7GvRUniibUg)Pu31G>-&TcyJQnhXc^S`iDQu-9M-y5NbcOJ0*!WqnlM zQTX_8`Tg4Om%`Lb8(tY)lxA4NclFISGldJ>t5&&gkKJAN_TAmx{qpwz9#2y%&3MId zHSu1>|JpBX3@_d~z3?r~4!QjQ!NKPH`K3YZEBJzCbwG0oWr|;xF_rhr+5WoA>ha3p z>cK^z=?!t$e66x_!7t1BghA7KyCe2)zaQ7&@}3to^XHuZ0!jxSi@dkw<&y>N@6Y^8 znKfVjZT0D^d52n+*xiGJ7pVL3-PDNqfAUGpbo=wi65EuEYl>x-Mda*MVP3wn{XxMj zVTTpdjzs6(oh91j+fw@K>K&^&wVhutu5NwUu2ft0>7?Y(h+yq<%i^jtynA!k-jlPd z`Eilw{wuL=wYrO`mgh|S{$qa0vwEGk&vaXo z;hBB7b@%Ic*T1bjH0ezJiN9e9cXB8ChiyNU)O+;aCp+1_P8&Km`2GB>dV0;Z`hBYZ zmJ8Hq7+;Ur-d}3FbD{Z{YcFzt{rddr>GSo=XDjcx`g(1K(VYB*#ObPEy?1Rfb*yyy zdGoLF!Yx|tchBhs=GS?)t=nGs>`U|A`{rjGSKQ~SW7qyR?Zd&TsouGZ>}N&rS3FZ) zd}gh{f9IKdk6G2O$v(xqH+SW|Z{NPz%~7cN;|9R5B|FRbHP1931f0&|epRN5u==Z8w z`2tn9mG-Wjods{U(;oz}XXYF4~Z;Z?h z7Ea!{Z;osFg9TZ|Yr~v#9AD+<|BU7R6i&#gPlT7AFY^EtRiTWMo! z-To*1+YcSuF1u3ThiJCW3gPvZdD{E$9N*-00jNFA_2b*s<-bb*9$UWt zURd|lO<5N&U*4`YHG7qLxA-sJ$x~0Rti0+R)NVQ9-t20@qyKF)$~E7xnOD4haVqM? zbK~HQD_xsCbMw^q?zCR@S68p3`>pwfT`G?z9{WDyhwgmq+;z4ROV<7=YCGFs9ve7U zR&9@J$!^(P_afo-FTbrYzdg51;+iFUQ&iXdy`Ma1ulXSQ^jgujh*M`SKVEy`w%Y5p z6Z^JJ-+$r9s%hbCHw8ubufBeEQPST#8EgIo3%q#tQn&K$+N@PR%~SIhq+gCclbCz` z-X865#qrg%o%62+*v2|7SLuGGE4F-U-wNlzWbqq+?z3>mR&y(DIiz;b>h#6g9~QFg zeV$h}xhTTHDr2qe%h9@|*`IpT?RoXVECT+9OFh=h&gq%s_ae8V>h{f>J1w18`GoCTQ=R|r(CpBHp!ErHVTmVS zeSP_I<-G^X;ub~(9k*O++oqr9@yg(O&HdT8i#O#8ve@ooQJ=eefm)G{Ue50~mR?>;XeI^;?b%zom}ybc@s0rz6Jd+ z(#o>lGi8BY;g@ZpRhLhO&3Y;=obW}gEpE%_)vgtn`~1aDn?>c%?y&!NDEmlw#pg8v zlj`2HH~jPKpIQ9k<-fmm#gC6QyuCDgmd-PCafOwKUGk$Ds&32q9<#E2eIB%s5!Bg~ zKJztU=f6V?tNFDSY(IPP_TS&%>uVV&S^0p9daxokh8MZXU(3F}x_Wzi{{5ZB>AUYP z;|q{oW)%Ta^496a+h1R$S6$p+`uf`5>hJIJGlSYe^3T3Xn_rM-Skob{A6MfYIcErb0Mt&1yyQyBph}rY;`^LSn_mwKU`{gXp zwT*!{r=IrZ3ErQ|YW7|Ia@x{~ySWRCRj*W?O*{NDB`I|^uSuC$-|MNH3q|eLn&ljM zGkxKmlu41RdrKov9a^D$wSH>Qe7|`Y?lD#|-%#2sDx@{*hnJA6w*0rEn9Fa(^H!K| z43|sya}T%|W4*E>HZ>{sZTCyv^qH-O;_+lJh#;^w-loqRV%{}u2Uo|+@E z_zrJZz8t?_RO0zZfAgw@PhIfLzq+oQm(!1_ius1$UeUOVvI@Jy!+X!3Fxvk+bYJQl zRW^0u+13lavoktH&zmq?M1K{V<`}nD?$x3&gTTw5R$P=`V9o$q5z)z^4qodZy=r^l zw9A!DpfUGt&iT*IZJx7E8njC0nDSIc2Jj#~ay)O?32wd!WvY74%>i|x^#nj9c<}-# z?m=on{cz~wa8Mg4p>AFL{=%oHrh32j$l9OvzJ{gY9>aqA?R!6;ds_bg`u}&bsq5{x zE!|!IK5lmz?_tI&=7xEJf0wJ;HhR8%`#tyN!DjYT1*>>!1VGbm4)ZlQ*9PWm+1CAu zSbLJa5wyrSr{`YXb;X6C;l~X(tA4NY0k5*i*>d!wrMIncG|2obxx>?7b>hX=HhR`DAtN z%hA_u7!$TuS=+3v`!H|so#=pk`Kg{K-^e=#aj!0yx2x&6m$0)c`hdm@-h}Kg->w$c zeY?BvZ&KjirNULsQ(xsSah`TFV*k|C=da!eK8cObcYU)lE>q>TS4?DT=3eV{)BV-i zpB`#nymITTsMK@s)EHd8Z2SG`&6}rwKcl`r>f^sCos(X0>D#n2pGB9|D)Z({l~(%_ zmJ%0zHfDmhK3CY&i`-W?MXe}3_kwr9`+K+Vm8b9eURJatqTthEzRdi5{=Ek`wNDGV zyXKh8xeDQMzl-Iw#l!N~ynJ%>YuK8cGTT#HS1n&(=RTdoe45E&{q=hx?CbtK(z{gZ zoNut=!4lhL8$b1Ov2_I=zp;DM#(xv|{I>EczV(*Ur?GDpU6&#IbQD^*h?Y3Xyc3b0?Pfu1K{rc_c z^!PSq^{Y-_*tDxmO+R zwYe(4`;PR2qJ1}2R5$OB_WZl@{;iug9rHJ&`s-@4b@lv+VPq?No4b79mudQ!NMY>kMA(2n_<@=SY`wK6Nr+yM!Wm$MZI;Z>Is{obqT;>>^y`7wU56V|8 zF=EJ>cCYTP;@$oA@}PA&4f7&j<=kDHx4ZcHxwp5s>&Ndq14(jUPJVrDey{TRr%7MR z_UmeHkKJ4Kb?^6kkDI~cP`}LX^h&SdFVB?q{Cc|pl;gn5(2(*4(xwUUU>6&-qX8<2 zVFOYZtk2K4|G&*SXmwzC!##$CG4|!7mw7S=J-@IqG+&slV0^V>^|O1qr%Ji=oQki8ZS6f}|M&V<<5|AT zCVTEM=y()vSR-a7v9>JEqeM|x{^Y4xjqZ`yV69%xZt!@;ljR+a4!Y`R~%`sssRj#aW{8@?T_ zY1$XEIWZ&5Iw7M~>9pvvdlRNvR_A}x`?HJ7Os8M_@h#~p=7z@j>d))#IrZj5=Wje+ zZ8iDQrsTalFUyup=A101J>~Avi%wP9w_PuFA4>2Bmyf>6>bdd}(V*gUa(_X}OA zIX$s!iXKg?lz98)cwvUE_1)cfra#iD>VCJ#s^!4k$0xmx%>{SqxbJ*_cI?_0-jqwR z@v%*l!=6oCsQU8u^_uAs&HwiDO-^1J7csdC4J|xx_W#oXw`P}MNkRf zz<5Y`DkEr52WYJ&xbOy*uneFT4T$7ekPO;Y(x7-S_b#Y=yO$BXFp}Z*<>((bE)@OT zXa4o#+Z4Wsvt-ly<|m4Op6VF2@ci6$&n_@rkY2Fe^6N9dNbAqRtDj$uo?mk9woo}^ z!#xJJRolOWG=l7^V!jcum-F-QsgunjCtLO!<(Dbh_E+njk*_#CZ;qx}c>d3%Nk18b zR(pgoCS8_mOEuWNO|84g?Bu4jCdY*nzST8b&Riq8e3s?9H$1}a@8$aJe=35iu5D6# zSN?xmu+(~g^;Ngo*?x~5)Lp|S?yOq7V1@C|{Jo(y#|~XH>InYZR{XE6l_&k&*Tp-w zUcGadRg%rJy1n@x!(PTUUio>uW6JF2wB7rX(j>O$&27uFEzhs^`mL3oz2*9sx;0Ek zs`KL{ue2SLd93sB?uH3Y6Rt(y-}74j)7mEw+rM%)++*0g_QS2&oAqNy*EhAko*8L3 zuShR`*uPo8slJ#+{V!95_a+?)^-0!y7j2YVXXN?y-V>)N>utxc{BZU@GU+(~eQTL7 zY%h2lmQQ1Fc>lp86<#WVM>wjS!TWkZMG`!LfRX^Hp~nDeEsA@BHh)R8W0YYBxWFyd z)6@0il~_GPPfuMPZrRJgVCJ8HDmQE2-QDHy?dtyg=vUER$rX5Yk=FB9SIaFYGccI> z!ejOp{{d085m|SHy3Sn zPTsggi+wL6Lr&KFx7(L^Ecy=GSiD_w1*8QBb~LeEq#$ z8%{Vc&q&j%{Z|#0f7>wK`hCc;y(*!WFL)Uew7)E?F|PfbCN(Q9Y_F*|S7YhNfbDbM z-m$Cy`>Qg?`3oCE!N#xKwr~HwaH?JP-*0bUpI=pPFLG(KdF2nk9T(!1@{ID&9g33u zTz)D3->2#SlU2Vi-!W^I%ojF>4Xjn!d!GID{Tu1Ve1BhEZj6#1&(y_n`zpoC<9;kM zO|QOaEX=z0+ohb_e`3>q`=m$Y|2U~W-$!k7{S?o=0riW_85-7J0xzq#s{Qrq?d|aS zyVl$Nc%wT)w_0MD6RNW{;q$&G#4>%;NI5UFH(cI4PlN@=rkAsw#V$#LAM((cb6!9-m^W z`h6;Pqm|_f`z<-zhgI)@_E2nd&M%vO`c;MQ3UlRCabMFuef^U5TRUvhI?#ggoK^SA z%F6P>Rtg>TovS4ok{_a4X3$l_Pn|`dv4;^t>@Hh1ke9`x%!#^-1V_}lh=n% zO6%PEzt1z2uZo%BM$X=!Wt&Sce0hCuUsdWgA@Qi7%t>FT#nn_*NnMS8K1VwAYPXJR zl(xvtdGq#_ZU?2=+w06t-=5CjW?8%V%eTMtpWTT7n*^?l8QKqw+fP%q!`H{{ zh4!c>uUVqy6573Lj&}IE0!W$^@hVu=T+|6lsXKTX5`w>C)Z-aX|1+=i&XSo{{?DI* Pfq}u()z4*}Q$iB}9KJb2 literal 15151 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 b>;BK5>|(g}&5yKcpp4?_>gTe~DWM4f1K?Hj diff --git a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc index 2cf107f1ed2..f7bcd6765bb 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-build-settings-qmake.qdoc @@ -89,9 +89,13 @@ \QC project wizard templates create Qt Quick projects that can be compiled because they are set up to use the Qt Resource System. To compile QML code, - select \uicontrol Enable in the \uicontrol {Use qmlcachegen} field. To + select \uicontrol Enable in the \uicontrol {Qt Quick Compiler} field. To use default settings, select \uicontrol {Leave at Default}. + You can specify default behavior for compiling QML code in \uicontrol Tools + > \uicontrol Options > \uicontrol {Build & Run} > \uicontrol Qmake > + \uicontrol {Use qmlcachegen}. + \section1 qmake Build Steps \QC builds qmake projects by running the \c make or \c nmake command from @@ -109,6 +113,9 @@ \uicontrol {Override MAKEFLAGS} check box to override existing MAKEFLAGS variables. + Select \uicontrol {Disable in subdirectories} to execute the build step + only for a top-level build. + Select \uicontrol {Add Build Step} > \uicontrol {IncrediBuild for Linux} or \uicontrol {IncrediBuild for Windows} to accelerate builds by using \l{IncrediBuild Build Configuration}{IncrediBuild}. From 96db947c81d55dc9c3565c369a796da92ce1c317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= Date: Mon, 15 Nov 2021 14:23:06 +0200 Subject: [PATCH 19/41] Fix particles play button state when scene changes Add play button state to the scene state. Task-number: QDS-5499 Change-Id: Id3035de439aa80fd782348cf89a1d8456a7dd006 Reviewed-by: Miikka Heikkinen Reviewed-by: Qt CI Bot --- .../instances/qt5informationnodeinstanceserver.cpp | 4 +--- src/plugins/qmldesigner/components/edit3d/edit3dview.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 34d96265286..b1c211b6f84 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -1994,11 +1994,9 @@ void Qt5InformationNodeInstanceServer::view3DAction(const View3DActionCommand &c updatedState.insert("showGrid", command.isEnabled()); break; #ifdef QUICK3D_PARTICLES_MODULE - case View3DActionCommand::Edit3DParticleModeToggle: - updatedState.insert("enableParticleViewMode", command.isEnabled()); - break; case View3DActionCommand::ParticlesPlay: m_particleAnimationPlaying = command.isEnabled(); + updatedState.insert("particlePlay", command.isEnabled()); if (m_particleAnimationPlaying) { m_particleAnimationDriver->reset(); m_particleAnimationDriver->restart(); diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index c6fa4a0bdb5..1c944f49a94 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -108,6 +108,7 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState) const QString orientationKey = QStringLiteral("globalOrientation"); const QString editLightKey = QStringLiteral("showEditLight"); const QString gridKey = QStringLiteral("showGrid"); + const QString particlesPlayKey = QStringLiteral("particlePlay"); if (sceneState.contains(sceneKey)) { qint32 newActiveScene = sceneState[sceneKey].value(); @@ -151,6 +152,11 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState) m_showGridAction->action()->setChecked(sceneState[gridKey].toBool()); else m_showGridAction->action()->setChecked(false); + + if (sceneState.contains(particlesPlayKey)) + m_particlesPlayAction->action()->setChecked(sceneState[particlesPlayKey].toBool()); + else + m_particlesPlayAction->action()->setChecked(true); } void Edit3DView::modelAttached(Model *model) From 898210f0a1d3b3de0b3efc3fbe1c4485a08a5e36 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 16 Nov 2021 16:32:28 +0100 Subject: [PATCH 20/41] Debugger: Fix passing tooltips from to toolbuttons Visible in the O and <> buttons of the Callgrind toolbar. Change-Id: I1016f853335bfc243f7e934e7a0cd430922c8af6 Reviewed-by: Christian Stenger --- src/libs/utils/aspects.cpp | 1 + src/plugins/debugger/debuggermainwindow.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index f22c10ac46b..f4c09ab1327 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1324,6 +1324,7 @@ QAction *BoolAspect::action() auto act = BaseAspect::action(); // Creates it. act->setCheckable(true); act->setChecked(value()); + act->setToolTip(toolTip()); connect(act, &QAction::triggered, this, [this](bool newValue) { // The check would be nice to have in simple conditions, but if we // have an action that's used both on a settings page and as action diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 509804edf3f..d38613898fc 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -834,6 +834,7 @@ QToolButton *PerspectivePrivate::setupToolButton(QAction *action) auto toolButton = new QToolButton(m_innerToolBar); toolButton->setProperty("panelwidget", true); toolButton->setDefaultAction(action); + toolButton->setToolTip(action->toolTip()); m_innerToolBarLayout->addWidget(toolButton); return toolButton; } From be9f7313b64a152bff2466e2a3c652f4c88bdfa4 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 17 Nov 2021 11:20:46 +0100 Subject: [PATCH 21/41] CMakePM: Remove UNINITIALIZED SOFT_ASSERT Fixes: QTCREATORBUG-26582 Change-Id: I2a453a3044f2cb6eed0fd3f27ceae97fe347fdba Reviewed-by: Eike Ziller --- src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp index bd5556d215c..53bec6a52af 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp @@ -159,7 +159,6 @@ CMakeConfigItem::Type CMakeConfigItem::typeStringToType(const QByteArray &type) if (type == "INTERNAL") return CMakeConfigItem::INTERNAL; - QTC_CHECK(type == "UNINITIALIZED"); return CMakeConfigItem::UNINITIALIZED; } From dad7deccc4741bb6596d0f2a84d64bffd392a1b3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 17 Nov 2021 10:03:50 +0100 Subject: [PATCH 22/41] QmlProject: Use fromUserInput for settings Change-Id: Ib591c703e8badc2f12337680a788c051e1a7d974 Reviewed-by: Alessandro Portale Reviewed-by: Qt CI Bot --- src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 8 ++++---- src/plugins/qmlprojectmanager/qmlprojectplugin.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index 1faf0ccbaab..7552e6cd6d3 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -91,7 +91,7 @@ QmlProjectPlugin::~QmlProjectPlugin() void QmlProjectPlugin::openQDS(const Utils::FilePath &fileName) { - const QString &qdsPath = QmlProjectPlugin::qdsInstallationEntry(); + const QString &qdsPath = QmlProjectPlugin::qdsInstallationEntry().toString(); bool qdsStarted = false; //-a and -client arguments help to append project to open design studio application if (Utils::HostOsInfo::isMacHost()) @@ -106,17 +106,17 @@ void QmlProjectPlugin::openQDS(const Utils::FilePath &fileName) } } -QString QmlProjectPlugin::qdsInstallationEntry() +Utils::FilePath QmlProjectPlugin::qdsInstallationEntry() { QSettings *settings = Core::ICore::settings(); const QString qdsInstallationEntry = "QML/Designer/DesignStudioInstallation"; //set in installer - return settings->value(qdsInstallationEntry).toString(); + return Utils::FilePath::fromUserInput(settings->value(qdsInstallationEntry).toString()); } bool QmlProjectPlugin::qdsInstallationExists() { - return Utils::FilePath::fromString(qdsInstallationEntry()).exists(); + return qdsInstallationEntry().exists(); } Utils::FilePath findQmlProject(const Utils::FilePath &folder) diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.h b/src/plugins/qmlprojectmanager/qmlprojectplugin.h index 260512c5df3..92df42532cb 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.h +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.h @@ -41,7 +41,7 @@ public: ~QmlProjectPlugin() final; static void openQDS(const Utils::FilePath &fileName); - static QString qdsInstallationEntry(); + static Utils::FilePath qdsInstallationEntry(); static bool qdsInstallationExists(); private: From 607f70f0f90979237fcfce2395052844c71da1e8 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 17 Nov 2021 10:38:52 +0100 Subject: [PATCH 23/41] QmlProject: Use QtcProcess instead of QProcess Change-Id: Ie80ed4bd3d831718e7f246d6b8ab9df9db8c67d1 Reviewed-by: hjk Reviewed-by: Qt CI Bot --- src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index 7552e6cd6d3..970251c6d43 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include @@ -91,13 +92,14 @@ QmlProjectPlugin::~QmlProjectPlugin() void QmlProjectPlugin::openQDS(const Utils::FilePath &fileName) { - const QString &qdsPath = QmlProjectPlugin::qdsInstallationEntry().toString(); + const Utils::FilePath &qdsPath = QmlProjectPlugin::qdsInstallationEntry(); bool qdsStarted = false; //-a and -client arguments help to append project to open design studio application if (Utils::HostOsInfo::isMacHost()) - qdsStarted = QProcess::startDetached("/usr/bin/open", {"-a", qdsPath, fileName.toString()}); + qdsStarted = Utils::QtcProcess::startDetached( + {"/usr/bin/open", {"-a", qdsPath.path(), fileName.toString()}}); else - qdsStarted = QProcess::startDetached(qdsPath, {"-client", fileName.toString()}); + qdsStarted = Utils::QtcProcess::startDetached({qdsPath, {"-client", fileName.toString()}}); if (!qdsStarted) { QMessageBox::warning(Core::ICore::dialogParent(), From 9d24d886e202da65a0ed4023bd44bd8f58f2bfc4 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 21 Oct 2021 11:55:07 +0200 Subject: [PATCH 24/41] QmlDesigner: Add imports for qml document parser Task-number: QDS-5174 Change-Id: I78b7b31108b498035eccb8385ffab621c727cd89 Reviewed-by: Qt CI Bot Reviewed-by: Thomas Hartmann --- .../projectstorage/qmldocumentparser.cpp | 33 ++++++++++--------- .../projectstorage/qmldocumentparser.h | 14 ++++---- .../unit/unittest/qmldocumentparser-test.cpp | 31 +++++++++-------- 3 files changed, 38 insertions(+), 40 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.cpp b/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.cpp index c4a2bae6178..a46315310a2 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.cpp +++ b/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.cpp @@ -32,6 +32,7 @@ #include +#include #include namespace QmlDesigner { @@ -53,30 +54,28 @@ Storage::Version convertVersion(QmlDom::Version version) Utils::PathString convertUri(const QString &uri) { - Utils::PathString path{QStringView{uri.begin() + 7, uri.end()}}; - if (path.endsWith("/.")) - return path; - if (path.endsWith("/")) { - path += "."; - return path; - } + QStringView localPath{uri.begin() + 7, uri.end()}; - path += "/."; - return path; + std::filesystem::path path{ + std::u16string_view{localPath.utf16(), static_cast(localPath.size())}}; + + auto x = std::filesystem::weakly_canonical(path); + + return Utils::PathString{x.generic_string()}; } void addImports(Storage::Imports &imports, const QList &qmlImports, SourceId sourceId, - SourceContextId sourceContextId, - QmlDocumentParser::PathCache &pathCache, + const QString &directoryPath, QmlDocumentParser::ProjectStorage &storage) { for (const QmlDom::Import &qmlImport : qmlImports) { if (qmlImport.uri == u"file://.") { - auto moduleId = storage.moduleId(pathCache.sourceContextPath(sourceContextId)); + auto moduleId = storage.moduleId(Utils::PathString{directoryPath}); imports.emplace_back(moduleId, Storage::Version{}, sourceId); } else if (qmlImport.uri.startsWith(u"file://")) { + auto x = convertUri(qmlImport.uri); auto moduleId = storage.moduleId(convertUri(qmlImport.uri)); imports.emplace_back(moduleId, Storage::Version{}, sourceId); } else { @@ -144,7 +143,7 @@ void addEnumeraton(Storage::Type &type, const QmlDom::Component &component) Storage::Type QmlDocumentParser::parse(const QString &sourceContent, Storage::Imports &imports, SourceId sourceId, - SourceContextId sourceContextId) + const QString &directoryPath) { Storage::Type type; @@ -155,9 +154,11 @@ Storage::Type QmlDocumentParser::parse(const QString &sourceContent, QmlDom::DomItem items; + QString filePath{directoryPath + "/foo.qml"}; + environment.loadFile( - {}, - {}, + filePath, + filePath, sourceContent, QDateTime{}, [&](QmlDom::Path, const QmlDom::DomItem &, const QmlDom::DomItem &newItems) { @@ -185,7 +186,7 @@ Storage::Type QmlDocumentParser::parse(const QString &sourceContent, type.prototype = Storage::ImportedType{Utils::SmallString{qmlObject.name()}}; - addImports(imports, qmlFile->imports(), sourceId, sourceContextId, m_pathCache, m_storage); + addImports(imports, qmlFile->imports(), sourceId, directoryPath, m_storage); addPropertyDeclarations(type, qmlObject); addFunctionAndSignalDeclarations(type, qmlObject); diff --git a/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.h b/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.h index e2dd2434058..c256f74309a 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.h +++ b/src/plugins/qmldesigner/designercore/projectstorage/qmldocumentparser.h @@ -46,18 +46,16 @@ public: using ProjectStorage = QmlDesigner::ProjectStorage; using PathCache = QmlDesigner::SourcePathCache; - QmlDocumentParser(PathCache &pathCache, ProjectStorage &storage) - : m_pathCache{pathCache} - , m_storage{storage} + QmlDocumentParser(ProjectStorage &storage) + : m_storage{storage} {} - virtual Storage::Type parse(const QString &sourceContent, - Storage::Imports &imports, - SourceId sourceId, - SourceContextId sourceContextId); + Storage::Type parse(const QString &sourceContent, + Storage::Imports &imports, + SourceId sourceId, + const QString &directoryPath); private: - PathCache &m_pathCache; ProjectStorage &m_storage; }; } // namespace QmlDesigner diff --git a/tests/unit/unittest/qmldocumentparser-test.cpp b/tests/unit/unittest/qmldocumentparser-test.cpp index 451003ba33c..1e890c6fc69 100644 --- a/tests/unit/unittest/qmldocumentparser-test.cpp +++ b/tests/unit/unittest/qmldocumentparser-test.cpp @@ -129,17 +129,17 @@ protected: QmlDesigner::ProjectStorage storage{database, database.isInitialized()}; QmlDesigner::SourcePathCache> sourcePathCache{ storage}; - QmlDesigner::QmlDocumentParser parser{sourcePathCache, storage}; + QmlDesigner::QmlDocumentParser parser{storage}; Storage::Imports imports; SourceId qmlFileSourceId{sourcePathCache.sourceId("path/to/qmlfile.qml")}; SourceContextId qmlFileSourceContextId{sourcePathCache.sourceContextId(qmlFileSourceId)}; - SourceId directorySourceId{sourcePathCache.sourceId("path/to/.")}; - ModuleId directoryModuleId{&directorySourceId}; + QString directoryPath{"/path/to"}; + ModuleId directoryModuleId{storage.moduleId("/path/to")}; }; TEST_F(QmlDocumentParser, Prototype) { - auto type = parser.parse("Example{}", imports, qmlFileSourceId, qmlFileSourceContextId); + auto type = parser.parse("Example{}", imports, qmlFileSourceId, directoryPath); ASSERT_THAT(type, HasPrototype(Storage::ImportedType("Example"))); } @@ -150,7 +150,7 @@ TEST_F(QmlDocumentParser, DISABLED_QualifiedPrototype) auto type = parser.parse("import Example as Example\n Example.Item{}", imports, qmlFileSourceId, - qmlFileSourceContextId); + directoryPath); ASSERT_THAT(type, HasPrototype(Storage::QualifiedImportedType( @@ -159,10 +159,7 @@ TEST_F(QmlDocumentParser, DISABLED_QualifiedPrototype) TEST_F(QmlDocumentParser, Properties) { - auto type = parser.parse("Example{\n property int foo\n}", - imports, - qmlFileSourceId, - qmlFileSourceContextId); + auto type = parser.parse("Example{\n property int foo\n}", imports, qmlFileSourceId, directoryPath); ASSERT_THAT(type.propertyDeclarations, UnorderedElementsAre(IsPropertyDeclaration("foo", @@ -170,16 +167,18 @@ TEST_F(QmlDocumentParser, Properties) Storage::PropertyDeclarationTraits::None))); } -TEST_F(QmlDocumentParser, DISABLED_Imports) +TEST_F(QmlDocumentParser, Imports) { - ModuleId fooDirectoryModuleId = storage.moduleId("path/to/foo/."); + ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo"); ModuleId qmlModuleId = storage.moduleId("QML"); ModuleId qtQmlModuleId = storage.moduleId("QtQml"); ModuleId qtQuickModuleId = storage.moduleId("QtQuick"); - auto type = parser.parse("import QtQuick\n import \"../foo\"\nExample{}", + auto type = parser.parse(R"(import QtQuick + import "../foo" + Example{})", imports, qmlFileSourceId, - qmlFileSourceContextId); + directoryPath); ASSERT_THAT(imports, UnorderedElementsAre( @@ -196,7 +195,7 @@ TEST_F(QmlDocumentParser, Functions) "Example{\n function someScript(x, y) {}\n function otherFunction() {}\n}", imports, qmlFileSourceId, - qmlFileSourceContextId); + directoryPath); ASSERT_THAT(type.functionDeclarations, UnorderedElementsAre(AllOf(IsFunctionDeclaration("otherFunction", ""), @@ -212,7 +211,7 @@ TEST_F(QmlDocumentParser, Signals) auto type = parser.parse("Example{\n signal someSignal(int x, real y)\n signal signal2()\n}", imports, qmlFileSourceId, - qmlFileSourceContextId); + directoryPath); ASSERT_THAT(type.signalDeclarations, UnorderedElementsAre(AllOf(IsSignalDeclaration("someSignal"), @@ -229,7 +228,7 @@ TEST_F(QmlDocumentParser, Enumeration) "State{On,Off}\n}", imports, qmlFileSourceId, - qmlFileSourceContextId); + directoryPath); ASSERT_THAT(type.enumerationDeclarations, UnorderedElementsAre( From 037d2b38890b84927a2d80bdcdc806c80e1bbf1b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 17 Nov 2021 13:39:54 +0100 Subject: [PATCH 25/41] ClangCodeModel: Fix clangd highlighting of string literals ... passed to macros defined in a different file. This amends e77e57420a. Contrary to our expectation, it is possible that AST nodes that are marked as belonging (only) to a header file can contain child nodes that belong to the main file. Fixes: QTCREATORBUG-26553 Change-Id: I4d1d877d8e1e2dcf7d81b63aa98e1149b5514e3f Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 3 +-- src/plugins/clangcodemodel/test/clangdtests.cpp | 4 ++++ .../clangcodemodel/test/data/highlighting/highlighting.cpp | 7 +++++++ .../test/data/highlighting/highlightingmarks.h | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 40f726f90ce..1d21cf747fe 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -3640,12 +3640,11 @@ void ExtraHighlightingResultsCollector::visitNode(const AstNode &node) if (m_future.isCanceled()) return; switch (node.fileStatus(m_filePath)) { - case AstNode::FileStatus::Foreign: - return; case AstNode::FileStatus::Ours: case AstNode::FileStatus::Unknown: collectFromNode(node); [[fallthrough]]; + case AstNode::FileStatus::Foreign: case ClangCodeModel::Internal::AstNode::FileStatus::Mixed: { const auto children = node.children(); if (!children) diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index bd1a803d41a..0f578719e34 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1252,6 +1252,10 @@ void ClangdTestHighlighting::test_data() QTest::newRow("simple return") << 841 << 12 << 841 << 15 << QList{C_LOCAL} << 0; QTest::newRow("lambda parameter") << 847 << 49 << 847 << 52 << QList{C_PARAMETER, C_DECLARATION} << 0; + QTest::newRow("string literal passed to macro from same file") << 853 << 32 << 853 << 38 + << QList{C_STRING} << 0; + QTest::newRow("string literal passed to macro from header file") << 854 << 32 << 854 << 38 + << QList{C_STRING} << 0; } void ClangdTestHighlighting::test() diff --git a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp index 7f0db946955..5d57a235bc6 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -846,3 +846,10 @@ void testConstRefAutoLambdaArgs() { useContainer(FooPtrVector(), [](const auto &arg) {}); } + +#define USE_STRING(s) (s) +void useString() +{ + const char *s = USE_STRING("TEXT"); + s = USE_STRING_FROM_HEADER("TEXT"); +} diff --git a/src/plugins/clangcodemodel/test/data/highlighting/highlightingmarks.h b/src/plugins/clangcodemodel/test/data/highlighting/highlightingmarks.h index e69de29bb2d..13985c0d3e1 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlightingmarks.h +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlightingmarks.h @@ -0,0 +1 @@ +#define USE_STRING_FROM_HEADER(s) (s) From 1b57bee32b8eb7f495625232bc7106206085b20a Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Wed, 17 Nov 2021 06:37:22 +0100 Subject: [PATCH 26/41] Debugger: Remove ancient enum without usage Change-Id: Ifd303bc822a850d6b28d8fb31475af54a25601a4 Reviewed-by: hjk --- src/plugins/debugger/watchutils.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index 5c3097ca907..cc33e0445a8 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -34,8 +34,6 @@ #include #include -enum { debug = 0 }; - namespace Debugger { namespace Internal { From db1d3f3c941a289e23babc4beb838ae962c9cd82 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 17 Nov 2021 14:32:05 +0100 Subject: [PATCH 27/41] Fix locator popup on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the locator popup gets focus on Windows, we need to handle the escape key explicitly and also need to make sure that it isn't considered as a "base window" when requesting locator again. On other platforms the locator popup never gets focus, so the issue doesn't appear. Fixes: QTCREATORBUG-22119 Change-Id: I1e1a74332c174bc20f961ebe0709c591f82f2829 Reviewed-by: David Schulz Reviewed-by: André Hartmann --- .../coreplugin/locator/locatormanager.cpp | 3 ++ .../coreplugin/locator/locatorwidget.cpp | 28 ++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/locator/locatormanager.cpp b/src/plugins/coreplugin/locator/locatormanager.cpp index 6506f3b74b8..5c1bb0a0b54 100644 --- a/src/plugins/coreplugin/locator/locatormanager.cpp +++ b/src/plugins/coreplugin/locator/locatormanager.cpp @@ -54,6 +54,9 @@ static LocatorWidget *locatorWidget() { static QPointer popup; QWidget *window = ICore::dialogParent()->window(); + // if that is a popup, try to find a better one + if (window->windowFlags() & Qt::Popup && window->parentWidget()) + window = window->parentWidget()->window(); if (auto *widget = Aggregation::query(window)) { if (popup) popup->close(); diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp index 19a6b1f3757..4f6f666a633 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.cpp +++ b/src/plugins/coreplugin/locator/locatorwidget.cpp @@ -360,21 +360,40 @@ void LocatorPopup::updateWindow() bool LocatorPopup::event(QEvent *event) { - if (event->type() == QEvent::ParentChange) + if (event->type() == QEvent::ParentChange) { updateWindow(); - else if (event->type() == QEvent::Show) + } else if (event->type() == QEvent::Show) { // make sure the popup has correct position before it becomes visible doUpdateGeometry(); - else if (event->type() == QEvent::LayoutRequest) + } else if (event->type() == QEvent::LayoutRequest) { // completion list resizes after first items are shown --> LayoutRequest QMetaObject::invokeMethod(this, &LocatorPopup::doUpdateGeometry, Qt::QueuedConnection); + } else if (event->type() == QEvent::ShortcutOverride) { + // if we (the popup) has focus, we need to handle escape manually (Windows) + auto ke = static_cast(event); + if (ke->modifiers() == Qt::NoModifier && ke->key() == Qt::Key_Escape) + event->accept(); + } else if (event->type() == QEvent::KeyPress) { + // if we (the popup) has focus, we need to handle escape manually (Windows) + auto ke = static_cast(event); + if (ke->modifiers() == Qt::NoModifier && ke->key() == Qt::Key_Escape) + hide(); + } return QWidget::event(event); } bool LocatorPopup::eventFilter(QObject *watched, QEvent *event) { - if (watched == m_window && event->type() == QEvent::Resize) + if (watched == m_tree && event->type() == QEvent::FocusOut) { + // if the tree had focus and another application is brought to foreground, + // we need to hide the popup because it otherwise stays on top of + // everything else (even other applications) (Windows) + auto fe = static_cast(event); + if (fe->reason() == Qt::ActiveWindowFocusReason && !QApplication::activeWindow()) + hide(); + } else if (watched == m_window && event->type() == QEvent::Resize) { doUpdateGeometry(); + } return QWidget::eventFilter(watched, event); } @@ -412,6 +431,7 @@ LocatorPopup::LocatorPopup(LocatorWidget *locatorWidget, QWidget *parent) m_tree->setFrameStyle(QFrame::NoFrame); // tool tip already includes a frame m_tree->setModel(locatorWidget->model()); m_tree->setTextElideMode(Qt::ElideMiddle); + m_tree->installEventFilter(this); auto layout = new QVBoxLayout; layout->setSizeConstraint(QLayout::SetMinimumSize); From e68e2a3159ad153bc7eb1ae6cdbfa5fcf39ab21b Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 16 Nov 2021 11:43:55 +0100 Subject: [PATCH 28/41] QMake: fix gui thread lock Do not look up windows network paths in profile editor when looking for links under the cursor. The QFileInfo::exists check can take up to a minute here if this network path does not exists. Fixes: QTCREATORBUG-26579 Change-Id: I2648bc398e25bcc660f1161a187c4d92c3def28e Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger Reviewed-by: Eike Ziller --- src/plugins/qmakeprojectmanager/profileeditor.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmakeprojectmanager/profileeditor.cpp b/src/plugins/qmakeprojectmanager/profileeditor.cpp index a3cc9528348..be1c5f9dd26 100644 --- a/src/plugins/qmakeprojectmanager/profileeditor.cpp +++ b/src/plugins/qmakeprojectmanager/profileeditor.cpp @@ -229,7 +229,10 @@ void ProFileEditorWidget::findLinkAt(const QTextCursor &cursor, QDir dir(textDocument()->filePath().toFileInfo().absolutePath()); QString fileName = dir.filePath(buffer); QFileInfo fi(fileName); - if (fi.exists()) { + if (Utils::HostOsInfo::isWindowsHost() && fileName.startsWith("//")) { + // Windows network paths are not supported here since checking for their existence can + // lock the gui thread. See: QTCREATORBUG-26579 + } else if (fi.exists()) { if (fi.isDir()) { QDir subDir(fi.absoluteFilePath()); QString subProject = subDir.filePath(subDir.dirName() + QLatin1String(".pro")); From 06a6549075eb765221bc62be954981d301828d07 Mon Sep 17 00:00:00 2001 From: Tapani Mattila Date: Wed, 17 Nov 2021 12:18:35 +0200 Subject: [PATCH 29/41] CMake generator: Add sanity checks Task-number: QDS-5410 Change-Id: I8f3cd130d7f5bfac3656e8d006661a81a5412abd Reviewed-by: Thomas Hartmann Reviewed-by: Leena Miettinen --- .../qmldesigner/generatecmakelists.cpp | 167 +++++++++++++++--- src/plugins/qmldesigner/generatecmakelists.h | 4 + 2 files changed, 151 insertions(+), 20 deletions(-) diff --git a/src/plugins/qmldesigner/generatecmakelists.cpp b/src/plugins/qmldesigner/generatecmakelists.cpp index 24faa267397..9a52f9f2d58 100644 --- a/src/plugins/qmldesigner/generatecmakelists.cpp +++ b/src/plugins/qmldesigner/generatecmakelists.cpp @@ -40,6 +40,7 @@ #include #include +#include #include #include #include @@ -56,13 +57,26 @@ bool operator==(const GeneratableFile &left, const GeneratableFile &right) return (left.filePath == right.filePath && left.content == right.content); } +enum ProjectDirectoryError { + NO_ERROR = 0, + MISSING_CONTENTDIR = 1<<1, + MISSING_IMPORTDIR = 1<<2, + MISSING_CPPDIR = 1<<3, + MISSING_MAINCMAKE = 1<<4, + MISSING_MAINQML = 1<<5, + MISSING_APPMAINQML = 1<<6, + MISSING_QMLMODULES = 1<<7, + MISSING_MAINCPP = 1<<8, + MISSING_MAINCPP_HEADER = 1<<9 +}; + QVector queuedFiles; void generateMenuEntry() { Core::ActionContainer *buildMenu = Core::ActionManager::actionContainer(ProjectExplorer::Constants::M_BUILDPROJECT); - auto action = new QAction("Generate CMakeLists.txt files"); + auto action = new QAction(QCoreApplication::tr("Generate CMakeLists.txt Files")); QObject::connect(action, &QAction::triggered, GenerateCmake::onGenerateCmakeLists); Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.CreateCMakeLists"); buildMenu->addAction(cmd, ProjectExplorer::Constants::G_BUILD_RUN); @@ -76,8 +90,16 @@ void generateMenuEntry() void onGenerateCmakeLists() { - queuedFiles.clear(); FilePath rootDir = ProjectExplorer::SessionManager::startupProject()->projectDirectory(); + + int projectDirErrors = isProjectCorrectlyFormed(rootDir); + if (projectDirErrors != NO_ERROR) { + showProjectDirErrorDialog(projectDirErrors); + if (isErrorFatal(projectDirErrors)) + return; + } + + queuedFiles.clear(); GenerateCmakeLists::generateCmakes(rootDir); GenerateEntryPoints::generateMainCpp(rootDir); GenerateEntryPoints::generateMainQml(rootDir); @@ -85,6 +107,57 @@ void onGenerateCmakeLists() writeQueuedFiles(); } +bool isErrorFatal(int error) +{ + if (error & MISSING_CONTENTDIR || + error & MISSING_IMPORTDIR || + error & MISSING_CPPDIR || + error & MISSING_APPMAINQML) + return true; + + return false; +} + +const char DIRNAME_CONTENT[] = "content"; +const char DIRNAME_IMPORT[] = "imports"; +const char DIRNAME_CPP[] = "src"; + +const char FILENAME_CMAKELISTS[] = "CMakeLists.txt"; +const char FILENAME_APPMAINQML[] = "App.qml"; +const char FILENAME_MAINQML[] = "main.qml"; +const char FILENAME_MAINCPP[] = "main.cpp"; +const char FILENAME_MAINCPP_HEADER[] = "import_qml_plugins.h"; +const char FILENAME_MODULES[] = "qmlmodules"; + +int isProjectCorrectlyFormed(const FilePath &rootDir) +{ + int errors = NO_ERROR; + + if (!rootDir.pathAppended(DIRNAME_CONTENT).exists()) + errors |= MISSING_CONTENTDIR; + if (!rootDir.pathAppended(DIRNAME_CONTENT).pathAppended(FILENAME_APPMAINQML).exists()) + errors |= MISSING_APPMAINQML; + + if (!rootDir.pathAppended(DIRNAME_IMPORT).exists()) + errors |= MISSING_IMPORTDIR; + + if (!rootDir.pathAppended(DIRNAME_CPP).exists()) + errors |= MISSING_CPPDIR; + if (!rootDir.pathAppended(DIRNAME_CPP).pathAppended(FILENAME_MAINCPP).exists()) + errors |= MISSING_MAINCPP; + if (!rootDir.pathAppended(DIRNAME_CPP).pathAppended(FILENAME_MAINCPP_HEADER).exists()) + errors |= MISSING_MAINCPP_HEADER; + + if (!rootDir.pathAppended(FILENAME_CMAKELISTS).exists()) + errors |= MISSING_MAINCMAKE; + if (!rootDir.pathAppended(FILENAME_MODULES).exists()) + errors |= MISSING_QMLMODULES; + if (!rootDir.pathAppended(FILENAME_MAINQML).exists()) + errors |= MISSING_MAINQML; + + return errors; +} + void removeUnconfirmedQueuedFiles(const Utils::FilePaths confirmedFiles) { QtConcurrent::blockingFilter(queuedFiles, [confirmedFiles](const GeneratableFile &qf) { @@ -92,6 +165,65 @@ void removeUnconfirmedQueuedFiles(const Utils::FilePaths confirmedFiles) }); } +const QString WARNING_MISSING_STRUCTURE_FATAL = QCoreApplication::tr( + "The project is not properly structured for automatically generating CMake files.\n\nAborting process.\n\nThe following files or directories are missing:\n\n%1"); +const QString WARNING_MISSING_STRUCTURE_NONFATAL = QCoreApplication::tr( + "The project is not properly structured for automatically generating CMake files.\n\nThe following files will be created:\n\n%1"); +const QString WARNING_TITLE_FATAL = QCoreApplication::tr( + "Cannot Generate CMake Files"); +const QString WARNING_TITLE_NONFATAL = QCoreApplication::tr( + "Problems with Generating CMake Files"); + +void showProjectDirErrorDialog(int error) +{ + QString fatalList; + QString nonFatalList; + + if (error & MISSING_CONTENTDIR) + fatalList.append(QString(DIRNAME_CONTENT) + "\n"); + if (error & MISSING_APPMAINQML) + fatalList.append(QString(DIRNAME_CONTENT) + + QDir::separator() + + QString(FILENAME_APPMAINQML) + + "\n"); + if (error & MISSING_CPPDIR) + fatalList.append(QString(DIRNAME_CPP) + "\n"); + if (error & MISSING_IMPORTDIR) + fatalList.append(QString(DIRNAME_IMPORT) + "\n"); + + if (error & MISSING_MAINCMAKE) + nonFatalList.append(QString(FILENAME_CMAKELISTS) + "\n"); + if (error & MISSING_QMLMODULES) + nonFatalList.append(QString(FILENAME_MODULES) + "\n"); + + if (error & MISSING_MAINQML) + nonFatalList.append(QString(FILENAME_MAINQML) + "\n"); + + if (error & MISSING_MAINCPP) + nonFatalList.append(QString(DIRNAME_CPP) + + QDir::separator() + + QString(FILENAME_MAINCPP) + + "\n"); + if (error & MISSING_MAINCPP_HEADER) + nonFatalList.append(QString(DIRNAME_CPP) + + QDir::separator() + + QString(FILENAME_MAINCPP_HEADER) + + "\n"); + + bool isFatal = isErrorFatal(error); + + if (isFatal) { + QMessageBox::critical(nullptr, + WARNING_TITLE_FATAL, + WARNING_MISSING_STRUCTURE_FATAL.arg(fatalList + nonFatalList)); + } + else { + QMessageBox::warning(nullptr, + WARNING_TITLE_NONFATAL, + WARNING_MISSING_STRUCTURE_NONFATAL.arg(nonFatalList)); + } +} + bool showConfirmationDialog(const Utils::FilePath &rootDir) { Utils::FilePaths files; @@ -114,6 +246,7 @@ bool queueFile(const FilePath &filePath, const QString &fileContent) GeneratableFile file; file.filePath = filePath; file.content = fileContent; + file.fileExists = filePath.exists(); queuedFiles.append(file); return true; @@ -159,9 +292,10 @@ QStringList moduleNames; const QDir::Filters FILES_ONLY = QDir::Files; const QDir::Filters DIRS_ONLY = QDir::Dirs|QDir::Readable|QDir::NoDotAndDotDot; -const char CMAKEFILENAME[] = "CMakeLists.txt"; const char QMLDIRFILENAME[] = "qmldir"; -const char MODULEFILENAME[] = "qmlmodules"; + +const char MAIN_CMAKEFILE_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmaincmakelists.tpl"; +const char QMLMODULES_FILE_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmodules.tpl"; bool generateCmakes(const FilePath &rootDir) { @@ -177,9 +311,6 @@ bool generateCmakes(const FilePath &rootDir) return true; } -const char MAIN_CMAKEFILE_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmaincmakelists.tpl"; -const char QMLMODULES_FILE_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmodules.tpl"; - void generateMainCmake(const FilePath &rootDir) { //TODO startupProject() may be a terrible way to try to get "current project". It's not necessarily the same thing at all. @@ -194,7 +325,7 @@ void generateMainCmake(const FilePath &rootDir) modulesAsPlugins.append(" " + moduleName + "plugin\n"); QString moduleFileContent = GenerateCmake::readTemplate(QMLMODULES_FILE_TEMPLATE_PATH).arg(appName).arg(modulesAsPlugins); - GenerateCmake::queueFile(rootDir.pathAppended(MODULEFILENAME), moduleFileContent); + GenerateCmake::queueFile(rootDir.pathAppended(GenerateCmake::FILENAME_MODULES), moduleFileContent); } const char DO_NOT_EDIT_FILE_COMMENT[] = "### This file is automatically generated by Qt Design Studio.\n### Do not change\n\n"; @@ -336,14 +467,14 @@ QStringList getDirectoryTreeResources(const FilePath &dir) void queueCmakeFile(const FilePath &dir, const QString &content) { - FilePath filePath = dir.pathAppended(CMAKEFILENAME); + FilePath filePath = dir.pathAppended(GenerateCmake::FILENAME_CMAKELISTS); GenerateCmake::queueFile(filePath, content); } bool isFileBlacklisted(const QString &fileName) { return (!fileName.compare(QMLDIRFILENAME) || - !fileName.compare(CMAKEFILENAME)); + !fileName.compare(GenerateCmake::FILENAME_CMAKELISTS)); } } @@ -358,18 +489,15 @@ bool generateEntryPointFiles(const FilePath &dir) } const char MAIN_CPPFILE_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmaincpp.tpl"; -const char MAIN_CPPFILE_DIR[] = "src"; -const char MAIN_CPPFILE_NAME[] = "main.cpp"; const char MAIN_CPPFILE_HEADER_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmaincppheader.tpl"; -const char MAIN_CPPFILE_HEADER_NAME[] = "import_qml_plugins.h"; const char MAIN_CPPFILE_HEADER_PLUGIN_LINE[] = "Q_IMPORT_QML_PLUGIN(%1)\n"; bool generateMainCpp(const FilePath &dir) { - FilePath srcDir = dir.pathAppended(MAIN_CPPFILE_DIR); + FilePath srcDir = dir.pathAppended(GenerateCmake::DIRNAME_CPP); QString cppContent = GenerateCmake::readTemplate(MAIN_CPPFILE_TEMPLATE_PATH); - FilePath cppFilePath = srcDir.pathAppended(MAIN_CPPFILE_NAME); + FilePath cppFilePath = srcDir.pathAppended(GenerateCmake::FILENAME_MAINCPP); bool cppOk = GenerateCmake::queueFile(cppFilePath, cppContent); QString modulesAsPlugins; @@ -379,19 +507,18 @@ bool generateMainCpp(const FilePath &dir) QString headerContent = GenerateCmake::readTemplate(MAIN_CPPFILE_HEADER_TEMPLATE_PATH) .arg(modulesAsPlugins); - FilePath headerFilePath = srcDir.pathAppended(MAIN_CPPFILE_HEADER_NAME); + FilePath headerFilePath = srcDir.pathAppended(GenerateCmake::FILENAME_MAINCPP_HEADER); bool headerOk = GenerateCmake::queueFile(headerFilePath, headerContent); return cppOk && headerOk; } -const char MAIN_QMLFILE_PATH[] = ":/boilerplatetemplates/qmlprojectmainqml.tpl"; -const char MAIN_QMLFILE_NAME[] = "main.qml"; +const char MAIN_QMLFILE_TEMPLATE_PATH[] = ":/boilerplatetemplates/qmlprojectmainqml.tpl"; bool generateMainQml(const FilePath &dir) { - QString content = GenerateCmake::readTemplate(MAIN_QMLFILE_PATH); - FilePath filePath = dir.pathAppended(MAIN_QMLFILE_NAME); + QString content = GenerateCmake::readTemplate(MAIN_QMLFILE_TEMPLATE_PATH); + FilePath filePath = dir.pathAppended(GenerateCmake::FILENAME_MAINQML); return GenerateCmake::queueFile(filePath, content); } diff --git a/src/plugins/qmldesigner/generatecmakelists.h b/src/plugins/qmldesigner/generatecmakelists.h index b9f225e9465..794610a53f8 100644 --- a/src/plugins/qmldesigner/generatecmakelists.h +++ b/src/plugins/qmldesigner/generatecmakelists.h @@ -34,13 +34,17 @@ namespace GenerateCmake { struct GeneratableFile { Utils::FilePath filePath; QString content; + bool fileExists; }; bool operator==(const GeneratableFile &left, const GeneratableFile &right); void generateMenuEntry(); void onGenerateCmakeLists(); +bool isErrorFatal(int error); +int isProjectCorrectlyFormed(const Utils::FilePath &rootDir); void removeUnconfirmedQueuedFiles(const Utils::FilePaths confirmedFiles); +void showProjectDirErrorDialog(int error); bool showConfirmationDialog(const Utils::FilePath &rootDir); bool queueFile(const Utils::FilePath &filePath, const QString &fileContent); bool writeFile(const GeneratableFile &file); From 00d186ce10ee5c3f09a5ec4c224f444abe76ec22 Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Mon, 15 Nov 2021 16:56:52 +0200 Subject: [PATCH 30/41] QDS NewProject dialog: use friendly error message when regex does not match Instead of telling the user that the project name does not match a complex regular expression, we can tell him in English words what the rules are. Also, updates the icon of the status message so that, when the status is multiline, the icon appears at the top, rather than vertical center, on the left side of the text. Change-Id: I848b3858f5f92a09588b9646c56cbf743b06ea09 Reviewed-by: Qt CI Bot Reviewed-by: Eike Ziller --- .../imports/NewProjectDialog/Details.qml | 1 + src/libs/utils/projectintropage.cpp | 10 +++++++--- src/libs/utils/projectintropage.h | 2 +- .../jsonwizard/jsonwizardpagefactory_p.cpp | 6 +++++- src/plugins/studiowelcome/qdsnewdialog.cpp | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml index 87a63dcefe8..786f17db064 100644 --- a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml +++ b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml @@ -127,6 +127,7 @@ Item { Image { id: statusIcon + Layout.alignment: Qt.AlignTop asynchronous: false } diff --git a/src/libs/utils/projectintropage.cpp b/src/libs/utils/projectintropage.cpp index 6e180496375..e5189759b03 100644 --- a/src/libs/utils/projectintropage.cpp +++ b/src/libs/utils/projectintropage.cpp @@ -61,6 +61,7 @@ public: Ui::ProjectIntroPage m_ui; bool m_complete = false; QRegularExpressionValidator m_projectNameValidator; + QString m_projectNameValidatorUserMessage; bool m_forceSubProject = false; FilePaths m_projectDirectories; }; @@ -124,10 +125,11 @@ void ProjectIntroPage::setFilePath(const FilePath &path) d->m_ui.pathChooser->setFilePath(path); } -void ProjectIntroPage::setProjectNameRegularExpression(const QRegularExpression ®Ex) +void ProjectIntroPage::setProjectNameRegularExpression(const QRegularExpression ®Ex, const QString &userErrorMessage) { Q_ASSERT_X(regEx.isValid(), Q_FUNC_INFO, qPrintable(regEx.errorString())); d->m_projectNameValidator.setRegularExpression(regEx); + d->m_projectNameValidatorUserMessage = userErrorMessage; } void ProjectIntroPage::setProjectName(const QString &name) @@ -263,8 +265,10 @@ bool ProjectIntroPage::validateProjectName(const QString &name, QString *errorMe // a more detailed error message if (validatorState != QValidator::Acceptable && (pos == -1 || pos >= name.count())) { if (errorMessage) { - *errorMessage = tr("Name does not match \"%1\".").arg( - d->m_projectNameValidator.regularExpression().pattern()); + if (d->m_projectNameValidatorUserMessage.isEmpty()) + *errorMessage = tr("Project name is invalid."); + else + *errorMessage = d->m_projectNameValidatorUserMessage; } return false; } diff --git a/src/libs/utils/projectintropage.h b/src/libs/utils/projectintropage.h index 0bccd91f2b1..ea755d671ed 100644 --- a/src/libs/utils/projectintropage.h +++ b/src/libs/utils/projectintropage.h @@ -80,7 +80,7 @@ public slots: void setProjectName(const QString &name); void setDescription(const QString &description); void setUseAsDefaultPath(bool u); - void setProjectNameRegularExpression(const QRegularExpression ®Ex); + void setProjectNameRegularExpression(const QRegularExpression ®Ex, const QString &userErrorMessage); private: void slotChanged(); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp index dad6e9539e9..c0349814e0a 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp @@ -195,6 +195,7 @@ bool KitsPageFactory::validateData(Utils::Id typeId, const QVariant &data, QStri // -------------------------------------------------------------------- static const char KEY_PROJECT_NAME_VALIDATOR[] = "projectNameValidator"; +static const char KEY_PROJECT_NAME_VALIDATOR_USER_MESSAGE[] = "trProjectNameValidatorUserMessage"; ProjectPageFactory::ProjectPageFactory() { @@ -215,10 +216,13 @@ Utils::WizardPage *ProjectPageFactory::create(JsonWizard *wizard, Utils::Id type page->setDescription(wizard->expander()->expand(description)); QString projectNameValidator = tmp.value(QLatin1String(KEY_PROJECT_NAME_VALIDATOR)).toString(); + QString projectNameValidatorUserMessage + = JsonWizardFactory::localizedString(tmp.value(QLatin1String(KEY_PROJECT_NAME_VALIDATOR_USER_MESSAGE))); + if (!projectNameValidator.isEmpty()) { QRegularExpression regularExpression(projectNameValidator); if (regularExpression.isValid()) - page->setProjectNameRegularExpression(regularExpression); + page->setProjectNameRegularExpression(regularExpression, projectNameValidatorUserMessage); } return page; diff --git a/src/plugins/studiowelcome/qdsnewdialog.cpp b/src/plugins/studiowelcome/qdsnewdialog.cpp index b031a083bcf..9afca814dda 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.cpp +++ b/src/plugins/studiowelcome/qdsnewdialog.cpp @@ -101,7 +101,7 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) QObject::connect(&m_wizard, &WizardHandler::projectCanBeCreated, this, &QdsNewDialog::onProjectCanBeCreatedChanged); QObject::connect(&m_wizard, &WizardHandler::wizardCreationFailed, this, [this]() { - QMessageBox::critical(m_dialog, "New project", "Failed to initialize data"); + QMessageBox::critical(m_dialog, tr("New project"), tr("Failed to initialize data")); reject(); delete this; }); From a86e693b4acd51965ec65f37494450fcba796d55 Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Wed, 17 Nov 2021 17:46:50 +0100 Subject: [PATCH 31/41] Fix index out of range crash Change-Id: Ifa943d3d240c7ffab0bd21f50ff66d796c78401e Reviewed-by: Tim Jenssen Reviewed-by: Marco Bubke --- .../qmldesigner/designercore/metainfo/subcomponentmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index bc45647b605..cede56f299d 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -101,7 +101,7 @@ bool SubComponentManager::addImport(const Import &import, int index) } if (importExists) { - if (index == -1) + if (index == -1 || index > m_imports.size()) m_imports.append(import); else m_imports.insert(index, import); From 8368b4ed6428584473d1854e7c304a721c5ad84c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 18 Nov 2021 10:49:26 +0100 Subject: [PATCH 32/41] QmlDesigner: Fix build on Windows Use Qt styled enum values to avoid clashing global defines. Amends 06a6549075eb765221b. Change-Id: I85d3ec4192c1c55f231b6e2e81ec114480c03a5c Reviewed-by: Thomas Hartmann --- .../qmldesigner/generatecmakelists.cpp | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/plugins/qmldesigner/generatecmakelists.cpp b/src/plugins/qmldesigner/generatecmakelists.cpp index 9a52f9f2d58..25fadb23940 100644 --- a/src/plugins/qmldesigner/generatecmakelists.cpp +++ b/src/plugins/qmldesigner/generatecmakelists.cpp @@ -58,16 +58,16 @@ bool operator==(const GeneratableFile &left, const GeneratableFile &right) } enum ProjectDirectoryError { - NO_ERROR = 0, - MISSING_CONTENTDIR = 1<<1, - MISSING_IMPORTDIR = 1<<2, - MISSING_CPPDIR = 1<<3, - MISSING_MAINCMAKE = 1<<4, - MISSING_MAINQML = 1<<5, - MISSING_APPMAINQML = 1<<6, - MISSING_QMLMODULES = 1<<7, - MISSING_MAINCPP = 1<<8, - MISSING_MAINCPP_HEADER = 1<<9 + NoError = 0, + MissingContentDir = 1<<1, + MissingImportDir = 1<<2, + MissingCppDir = 1<<3, + MissingMainCMake = 1<<4, + MissingMainQml = 1<<5, + MissingAppMainQml = 1<<6, + MissingQmlModules = 1<<7, + MissingMainCpp = 1<<8, + MissingMainCppHeader = 1<<9 }; QVector queuedFiles; @@ -93,7 +93,7 @@ void onGenerateCmakeLists() FilePath rootDir = ProjectExplorer::SessionManager::startupProject()->projectDirectory(); int projectDirErrors = isProjectCorrectlyFormed(rootDir); - if (projectDirErrors != NO_ERROR) { + if (projectDirErrors != NoError) { showProjectDirErrorDialog(projectDirErrors); if (isErrorFatal(projectDirErrors)) return; @@ -109,10 +109,10 @@ void onGenerateCmakeLists() bool isErrorFatal(int error) { - if (error & MISSING_CONTENTDIR || - error & MISSING_IMPORTDIR || - error & MISSING_CPPDIR || - error & MISSING_APPMAINQML) + if (error & MissingContentDir || + error & MissingImportDir || + error & MissingCppDir || + error & MissingAppMainQml) return true; return false; @@ -131,29 +131,29 @@ const char FILENAME_MODULES[] = "qmlmodules"; int isProjectCorrectlyFormed(const FilePath &rootDir) { - int errors = NO_ERROR; + int errors = NoError; if (!rootDir.pathAppended(DIRNAME_CONTENT).exists()) - errors |= MISSING_CONTENTDIR; + errors |= MissingContentDir; if (!rootDir.pathAppended(DIRNAME_CONTENT).pathAppended(FILENAME_APPMAINQML).exists()) - errors |= MISSING_APPMAINQML; + errors |= MissingAppMainQml; if (!rootDir.pathAppended(DIRNAME_IMPORT).exists()) - errors |= MISSING_IMPORTDIR; + errors |= MissingImportDir; if (!rootDir.pathAppended(DIRNAME_CPP).exists()) - errors |= MISSING_CPPDIR; + errors |= MissingCppDir; if (!rootDir.pathAppended(DIRNAME_CPP).pathAppended(FILENAME_MAINCPP).exists()) - errors |= MISSING_MAINCPP; + errors |= MissingMainCpp; if (!rootDir.pathAppended(DIRNAME_CPP).pathAppended(FILENAME_MAINCPP_HEADER).exists()) - errors |= MISSING_MAINCPP_HEADER; + errors |= MissingMainCppHeader; if (!rootDir.pathAppended(FILENAME_CMAKELISTS).exists()) - errors |= MISSING_MAINCMAKE; + errors |= MissingMainCMake; if (!rootDir.pathAppended(FILENAME_MODULES).exists()) - errors |= MISSING_QMLMODULES; + errors |= MissingQmlModules; if (!rootDir.pathAppended(FILENAME_MAINQML).exists()) - errors |= MISSING_MAINQML; + errors |= MissingMainQml; return errors; } @@ -179,32 +179,32 @@ void showProjectDirErrorDialog(int error) QString fatalList; QString nonFatalList; - if (error & MISSING_CONTENTDIR) + if (error & MissingContentDir) fatalList.append(QString(DIRNAME_CONTENT) + "\n"); - if (error & MISSING_APPMAINQML) + if (error & MissingAppMainQml) fatalList.append(QString(DIRNAME_CONTENT) + QDir::separator() + QString(FILENAME_APPMAINQML) + "\n"); - if (error & MISSING_CPPDIR) + if (error & MissingCppDir) fatalList.append(QString(DIRNAME_CPP) + "\n"); - if (error & MISSING_IMPORTDIR) + if (error & MissingImportDir) fatalList.append(QString(DIRNAME_IMPORT) + "\n"); - if (error & MISSING_MAINCMAKE) + if (error & MissingMainCMake) nonFatalList.append(QString(FILENAME_CMAKELISTS) + "\n"); - if (error & MISSING_QMLMODULES) + if (error & MissingQmlModules) nonFatalList.append(QString(FILENAME_MODULES) + "\n"); - if (error & MISSING_MAINQML) + if (error & MissingMainQml) nonFatalList.append(QString(FILENAME_MAINQML) + "\n"); - if (error & MISSING_MAINCPP) + if (error & MissingMainCpp) nonFatalList.append(QString(DIRNAME_CPP) + QDir::separator() + QString(FILENAME_MAINCPP) + "\n"); - if (error & MISSING_MAINCPP_HEADER) + if (error & MissingMainCppHeader) nonFatalList.append(QString(DIRNAME_CPP) + QDir::separator() + QString(FILENAME_MAINCPP_HEADER) From c2a4bebad4ac1170bf89de5bd18d012b83b27f8a Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Thu, 18 Nov 2021 11:54:49 +0200 Subject: [PATCH 33/41] Fix: QDS New Project dialog shows incorrect items in the screen size combobox The index in the backend wizard's combobox was not loaded when initializing the QML combobox. Task-number: QDS-5523 Change-Id: I48583ff1ca85f840e9b7314a4e0ed734364c326a Reviewed-by: Miikka Heikkinen Reviewed-by: Mahmoud Badri --- .../imports/NewProjectDialog/Details.qml | 20 +++++++++++-------- src/plugins/studiowelcome/qdsnewdialog.cpp | 5 +++++ src/plugins/studiowelcome/qdsnewdialog.h | 1 + src/plugins/studiowelcome/wizardhandler.cpp | 9 +++++++++ src/plugins/studiowelcome/wizardhandler.h | 1 + 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml index 786f17db064..7399db69149 100644 --- a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml +++ b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml @@ -192,25 +192,29 @@ Item { SC.ComboBox { // Screen Size ComboBox id: screenSizeComboBox actionIndicatorVisible: false - currentIndex: 1 + currentIndex: -1 model: screenSizeModel textRole: "display" width: parent.width font.pixelSize: DialogValues.defaultPixelSize onActivated: (index) => { - // NOTE: item 0 is activated when the screenSizeModel is reset - dialogBox.setScreenSizeIndex(index); + dialogBox.setScreenSizeIndex(index); - var r = screenSizeModel.screenSizes(index); - widthField.realValue = r.width; - heightField.realValue = r.height; - } + var size = screenSizeModel.screenSizes(index); + widthField.realValue = size.width; + heightField.realValue = size.height; + } Connections { target: screenSizeModel function onModelReset() { - screenSizeComboBox.activated(screenSizeComboBox.currentIndex) + var newIndex = screenSizeComboBox.currentIndex > -1 + ? screenSizeComboBox.currentIndex + : dialogBox.screenSizeIndex() + + screenSizeComboBox.currentIndex = newIndex + screenSizeComboBox.activated(newIndex) } } } // Screen Size ComboBox diff --git a/src/plugins/studiowelcome/qdsnewdialog.cpp b/src/plugins/studiowelcome/qdsnewdialog.cpp index 9afca814dda..62def1d397e 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.cpp +++ b/src/plugins/studiowelcome/qdsnewdialog.cpp @@ -195,6 +195,11 @@ void QdsNewDialog::setScreenSizeIndex(int index) m_qmlScreenSizeIndex = index; } +int QdsNewDialog::screenSizeIndex() const +{ + return m_wizard.screenSizeIndex(); +} + void QdsNewDialog::setTargetQtVersion(int index) { m_wizard.setTargetQtVersionIndex(index); diff --git a/src/plugins/studiowelcome/qdsnewdialog.h b/src/plugins/studiowelcome/qdsnewdialog.h index ede50bc97a7..8e331bd125e 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.h +++ b/src/plugins/studiowelcome/qdsnewdialog.h @@ -66,6 +66,7 @@ public: Q_INVOKABLE QString currentProjectQmlPath() const; Q_INVOKABLE void setScreenSizeIndex(int index); // called when ComboBox item is "activated" + Q_INVOKABLE int screenSizeIndex() const; Q_INVOKABLE void setTargetQtVersion(int index); Q_INVOKABLE QString chooseProjectLocation(); diff --git a/src/plugins/studiowelcome/wizardhandler.cpp b/src/plugins/studiowelcome/wizardhandler.cpp index fce7aa120f9..c8c6c85d12e 100644 --- a/src/plugins/studiowelcome/wizardhandler.cpp +++ b/src/plugins/studiowelcome/wizardhandler.cpp @@ -174,6 +174,15 @@ void WizardHandler::setScreenSizeIndex(int index) cbfield->selectRow(index); } +int WizardHandler::screenSizeIndex() const +{ + auto *field = m_detailsPage->jsonField("ScreenFactor"); + auto *cbfield = dynamic_cast(field); + QTC_ASSERT(cbfield, return -1); + + return cbfield->selectedRow(); +} + void WizardHandler::setTargetQtVersionIndex(int index) { auto *field = m_detailsPage->jsonField("TargetQtVersion"); diff --git a/src/plugins/studiowelcome/wizardhandler.h b/src/plugins/studiowelcome/wizardhandler.h index a828d595f66..ad9424bc441 100644 --- a/src/plugins/studiowelcome/wizardhandler.h +++ b/src/plugins/studiowelcome/wizardhandler.h @@ -50,6 +50,7 @@ public: //TODO: location should not be needed in reset() -- only when creating the project void reset(const ProjectItem &projectInfo, int projectSelection, const Utils::FilePath &location); void setScreenSizeIndex(int index); + int screenSizeIndex() const; void setTargetQtVersionIndex(int index); bool haveTargetQtVersion() const; void setStyleIndex(int index); From 67674bca36005f9a42a1118664b4649152e55311 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 17 Nov 2021 16:05:35 +0100 Subject: [PATCH 34/41] Doc: Add alternatives for installing Conan The installation has been temporarily removed from Qt Installer. Task-number: QTCREATORBUG-26278 Change-Id: I8de557045857ddaa73e984cce37f31f3d93690bd Reviewed-by: Cristian Adam Reviewed-by: hjk --- doc/qtcreator/src/conan/creator-projects-conan.qdoc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/qtcreator/src/conan/creator-projects-conan.qdoc b/doc/qtcreator/src/conan/creator-projects-conan.qdoc index abaf4139393..fc20640b861 100644 --- a/doc/qtcreator/src/conan/creator-projects-conan.qdoc +++ b/doc/qtcreator/src/conan/creator-projects-conan.qdoc @@ -50,7 +50,9 @@ sources. Because the client has a local cache for package storage, you can work offline, as long as no new packages are needed from remote servers. - To use Conan, install it by using the Qt installer. + To use Conan, install it by using the Qt installer or the tools provided by + your operating system. For example, on Windows, you can use the + \c {choco install conan} or \{pip install conan} command. To enable the experimental Conan plugin, select \uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities > \uicontrol Conan. @@ -63,4 +65,7 @@ Then, you must edit the build settings of the project to specify the location of the file and the contents of the Conan install command. For more information, see \l {Conan Build Steps}. + + Alternatively, you can automatically set up the Conan package manager for + use with CMake. For more information, see \l{Using CMake with Conan}. */ From 75f9c91c76d88af735710d1e5b351450d3cebc24 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 18 Nov 2021 12:52:01 +0100 Subject: [PATCH 35/41] Doc: Describe enabling the Qt Quick Designer plugin The plugin has been disabled by default in 6.0, and some users have already asked us about it. Task-number: QTCREATORBUG-26278 Change-Id: I6085b17b0e78592eff285d2d0fc55107593202da Reviewed-by: Eike Ziller --- doc/qtcreator/src/qtcreator-toc.qdoc | 1 + .../creator-only/qtquick-app-development.qdoc | 7 ++- .../creator-only/qtquick-creating.qdoc | 2 +- .../creator-only/qtquick-designer-plugin.qdoc | 55 +++++++++++++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 doc/qtcreator/src/qtquick/creator-only/qtquick-designer-plugin.qdoc diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 421755c3153..bab4568bbae 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -102,6 +102,7 @@ \li \l{Developing Qt Quick Applications} \list \li \l {Creating Qt Quick Projects} + \li \l {Using \QMLD} \li \l {Converting UI Projects to Applications} \li \l {UI Files} \li \l {Using QML Modules with Plugins} diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc index 3f05a77c06f..065ac60d262 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc @@ -61,6 +61,11 @@ You can use wizards to create Qt Quick projects. + \li \l {Using \QMLD} + + You can enable the \QMLD plugin to visually edit + \l{UI Files}{UI files} (.ui.qml). + \li \l {Converting UI Projects to Applications} Qt Quick UI projects (.qmlproject) are useful for creating user @@ -73,7 +78,7 @@ If you switch between \QC and \QDS or cooperate with designers on a project, you might encounter .ui.qml files. They are intended to be edited in \QDS only, so you need to be careful not to break the - code. + code. To visually edit the files in \QC, enable the \QMLD plugin. \li \l{Using QML Modules with Plugins} diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc index b69f1dc22db..cea341db4b8 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc @@ -32,7 +32,7 @@ /*! \previouspage creator-visual-editor.html \page quick-projects.html - \nextpage quick-converting-ui-projects.html + \nextpage creator-qtquickdesigner-plugin.html \title Creating Qt Quick Projects diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-designer-plugin.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-designer-plugin.qdoc new file mode 100644 index 00000000000..3a86a15bb7a --- /dev/null +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-designer-plugin.qdoc @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Creator documentation. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + +/*! + \page creator-qtquickdesigner-plugin.html + \previouspage quick-projects.html + \nextpage quick-converting-ui-projects.html + + \title Using \QMLD + + We recommend that you use a separate visual editor, + \l{Qt Design Studio Manual}{\QDS} to open and edit + \l{UI Files}{UI files} (.ui.qml). + + However, you can enable the \QMLD plugin in \QC for editing + UI files. The functionality is restricted and not all \QDS + features are supported. + + To use \QMLD, switch to the \uicontrol Design mode when a ui.qml or or .qml + file is open. + + For more information about using \QMLD, see \l{Qt Design Studio Manual}. + + \section1 Enabling the \QMLD Plugin + + To enable the \QMLD plugin: + + \list 1 + \li Select \uicontrol Help > \uicontrol {About Plugins} > + \uicontrol {Qt Quick} > \uicontrol {QmlDesigner}. + \li Select \uicontrol {Restart Now} to restart \QC and load the plugin. + \endlist +*/ From 9576c34366c70e271f7c532cdaf4152e06b8c954 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Nov 2021 17:26:16 +0100 Subject: [PATCH 36/41] Doc: Update info about Valgrind tools Describe the toolbar options. Task-number: QTCREATORBUG-26278 Change-Id: I51ebd08a42ba696a3d76f709ff894181d4e9bb7d Reviewed-by: hjk --- .../images/qtcreator-analyzer-settings.png | Bin 20907 -> 5650 bytes .../qtcreator-valgrind-callgrind-options.png | Bin 4355 -> 9383 bytes .../qtcreator-valgrind-callgrind-toolbar.png | Bin 0 -> 1537 bytes .../images/qtcreator-valgrind-callgrind.png | Bin 3836 -> 34375 bytes .../qtcreator-valgrind-memcheck-options.png | Bin 28803 -> 6053 bytes .../images/qtcreator-valgrind-memcheck.png | Bin 2345 -> 2347 bytes .../src/analyze/creator-valgrind.qdoc | 148 +++++++++++++----- ...ator-projects-settings-run-analyze.qdocinc | 14 +- 8 files changed, 125 insertions(+), 37 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-valgrind-callgrind-toolbar.png diff --git a/doc/qtcreator/images/qtcreator-analyzer-settings.png b/doc/qtcreator/images/qtcreator-analyzer-settings.png index b2c1cdc4127870edb0a4cc4ef3fb0aeb5921d270..6caf407302694d295f0a6d6a0e76aa3fb34331e0 100644 GIT binary patch literal 5650 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 literal 20907 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 G5}E)31Z_J2 diff --git a/doc/qtcreator/images/qtcreator-valgrind-callgrind-options.png b/doc/qtcreator/images/qtcreator-valgrind-callgrind-options.png index 82684f645b9b26abc3ea96872d80d06b87cc499a..986017065561a493bbb627ccb9cf9a56f2a2c744 100644 GIT binary patch literal 9383 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 literal 4355 zcmeAS@N?(olHy`uVBq!ia0y~yV4TLl!0?8HnSp^J;YGoA1_s8A0G|+71`sf2V6b9f zh+<$!V=xM2Fs^5?n!pgXfFW(0k<|oa1_on>C}R+)H;!6hTz}9Cq}s}gAJKicKlpHh z6~hFul@rn!KsvTfn6PKUgxlLD-2T5H%6LH(*ph?w3mz_5@bKZ9HEY(cUArxfVOyHj zwzRZu6Rf~yPuTW<+qVC=xBdUWW5QB)ukuI6GxPE@M{kxJ$ zxsm^RQvTo5U8giZ<)_^Jxhb}l`W=F*Jq)1?Ivfd%Vn>uVmNYMr%PkM^Uf!vCi>GPp zwC^$RgOqRaovp7;xaBBtE+vZ z`S;_pXSQv=_UbLmLH;_4qUxQwyNvVvTF!1!(v#cwlY8^8CvF0NZkR~iQkm40tJyw- z?R2pc<{oOO~2Qs z9PcP>-dK@*+KONJ&*rOM8$Rp`nD4nE;Pax7%NP6Sy)B;DJokz~tAzQbh#lM7lYc(n zl~g$QhJcRA2Zl3mHhw8hy2Qc5tGU>D-#ldlhqp(TMEY8_QpJ>ByX(!EVJn?eKJ;tFd!zr=94Sl)Edje!uBs z{)aCUBNMVMYrYEpKO^Ctu_EH=X%F{wDZ|ba;d7gE!ZuWAE_t%`@0wXUtR9l)1xq*N z_)fZ%oUC=dV){hG>E}0mR{w2%dxn7b^tdxJ2Y#?yh3ovU`uO4MeY^eXQhk*bUoSp9 zT^(P)<+}k#Tt!NlZFwz|PJV#s#^w4K?^^5(T>dJJwQ{>?_cHN~Q)E)FKDoDUMQZf? z`#C2*CEtruG5$NJ%zTIAtY20a9!*X%TxKkP_XoSxeZMz5U$^VW+SpmufBf;V+g<#d z+`j6MFXrmU-?RSreVHp zdmd@E8J6pP3VXBrY5A2{`99bCMbkG_v@JV4>CL2#K7r0xqW*1K_*?$B!}IQ^FAgo| zoYrn%|NOoD-;;A#Bn;+1q#u4f5e=!Iv@|dKCMRenKZyIc zie&=>H&a9dE2GYVCWdKTaen7s{}PGcHz&*HG|Pr5%%|^$FnC99_;a2+L6djd|0+hE zr3XLBx*q7i-`l^mX6A%xET_%YdI}x>*Gz6so&5KRV+2>lo{MUCE%Vn!U(67iaky-5 zY;CWNbhZBty{~%ZB{z))ynCO%yu6&T_2>6YJ~7WgORm!!v}!-wE@s$k7m5wWe*GlOdybOwm6=>W zr+UxUshniLL-FT>$@iC}Ui`La`?Pnjw=D}eZUF2r7zR9Y7 zb3G%pCe^*WdAGiLV*k+-9iQwhXKplh`#N`4f8z8r)*EZequ*+mUM`K$Vc-2b?$(nD zF2#%U%XMS^>TaA`ng1(mPv<_K=*mgQOdd@+b!MwP_unHYg{B%MT#ve%p>uS7^pOnl z`X2}Ty!P3NeNNnSeZ#c;*Kv>k{foXB?dgB{iP@tNx0~mJrE~LFY}@qatZ|!lq)_1>Ec)~$(S)Ol9a+WtrIy6%JkRA?c!@Iwt{`u)f#{7{Sk|$M)eVw=FZ^z z^2F!%LHo>$p$895*L5^_wX5}B_-`NQ*d(dCoAP`|71D$*%{uZ)_4ll!KLjJJ%Je;} zFT9(yd{04r?8CUWt4Zd6oqBmrzL~Io`JobyswSPCGk>mMc4iir&)yGj-fb6Qw6EJ8 z68>}fdT0O2yN{AqZrJiV^jOdb7RmdaQ$MjtMu>H#{>*EBxXdu=Avk@CfeY9NERyOc zcFZ{vYPYY3ahi}&0u`iD=b zds6-6*(dHL-@JS3P}tM6ZX0`69$r|;8gmb7@C`?X`?TnXukAsyC+ zbGu?oPaN%Nn>%{yoW%QA z;=EQoIXwr)5Rv1W>~VX)Hcuv@~a73K7^THKP4RSxP?BV&c-faft7ksnQ~I%m$qK?*rWP-`voo4PRoO2wypms`y|(3&7oqWg|5#1o9{%-oAdj_@9-^FRr_U@ zZx#6z{;6l-K{mg@qbnlfHWe93cDAngu<4Fm|D7`jYQB3HbsjDI^f<-saOuSqqr4t1 z6WL6^?N7y~X|8s?_HC`GvCld|X|_jM!)K-DM@mA~oMDayw@>-d0)dp=bE^vw4+G;s!sJHFKR$^>(^0oY++~ z$@{!$r;v8qh8Sh}_bJU5@$&@}k5!x2|DLz^p>Fw>v$5yj-P)J;;p)nx0Xo~Z*8G3C zQ{Cz4wmEqlCi?hh-`h0Z`^@gAv&}Svgxc&s7tA=be74r6w`YZ{PCW9+6?p#Ic<)?O z(}Y6@Z+~7~J@ejD`!{nosT)gq=j`ARH9uEibcDrwlJ}X}D=pZ)U!1p@)2@1EV)m~M zPhJ_@n$F}($~?07GHWnH_d}%+3GS_2=Eerw>!*94xn*FKxWT6F_TN087tf6S5??O; zA{p(@{B%}`x|+?WFOq_3MiJYhZu}uefsPC!Cz-?E1g-A{x2`Bt)^1))W;V*v$+x@ zKWUtd{FI@y`s>_?P*B?kDQhxtg9IW34s5E5Q1~!axI0`XVpU7(k~QH^et+unsS1zM z$uU^+jB75(=?gL5OG~$T^(|e0F70;Ig`8yvCIx-$`Jz_bl$T}vC?#0w^TkJ@%YUD| zJc&Z&;$j;_j!jxo(W7c=5iLI})jdSI8+j~$o{7~|&$rDU!vo&K5d%rY1>*=vc+h>)& zuiUX#TXWA-6M9lkok+WOVnL8R&z4DH$3TjgXscWm7kzN3U)bF9^o%R9&%&)YPEt{L z9K^hK$<>cDo@uCL`mOZo+IZvcyyrh3=-r(-#Y*pg_=>MK9`%v3{h57Eldk!x9lhb8 zqd7IrVj4(?ii+#5MT^5GU0Lv4O;hY;r^^3uf8hz4>ShPLqGbCs{hTJf4l_9#G2=@` zc&uviE4}SI-U&_Ec*f)eNcyG7`cI0_rhl?FOqj{V%>-=}Gm3#48Q^xtG*<4GB}GXe zyO_OQH!S>M1W^vvFav-8+q)j9YkDT}TqX&U?7&iAQik=H<7)ey{zRz&M$6>UUJ~JVN2NLDh-wJaG^U6WH9zZ> z)4ooa=`^=t33=(uipQF2I5jKAY=g>mn*-@9imJJtI%kgZ#E z8e3xI-Nv*o#s7|%I^UkC*;0D_@XIMp7t?&jOYIJdi0SuEI=pBykCn4f#4!uUyw99P zStqW0_IRqST4|-C&b~|IGv}uGnOkJ0yPZs$=*f0@@)oAkYu10-{o3Nb?!)q=vsPIZ zaS;LsnixPy2$HeD#quVd2n7{L-qLDPeV-RPWyw{~_067!;ySFYOKv6{>=7{*o79jx zF`|pZ^PQi{^oKQ`vwS)?-sth#sA9Vzc;B3bvrng_oiKWCspPrxTHMClQ;LNqRn2loGx*iG(XJU_;JowBjX*J zhvqcP7WN$pSK9t2?y&z%mxwBB?PscIJv|o9{t>D3d#2=_7&+ziNrn8CuMa-;vof7_ zI+9f$05EDN$R-gKP>G??M(>gTe~ HDWM4ff}&*y diff --git a/doc/qtcreator/images/qtcreator-valgrind-callgrind-toolbar.png b/doc/qtcreator/images/qtcreator-valgrind-callgrind-toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee00dc901896832488e9fbba43c4627c52e2518 GIT binary patch literal 1537 zcmeAS@N?(olHy`uVBq!ia0y~yU=(3sV36csW?*1A?yjiFz`*!2z$e62P*6}vNJv;% zSVTlbR8&+;ZLQ+yvN=i~nN=jNFMd~>+73o7#J8B85tQH8=IJzn3|eeT3TAV z=v!G?SzBA%*x1uIy%YAJ2^Qy)opclc6M=badmZdb8~YGH*|vW?x83N=i;nPDx2gO-)TpOG{5rPjB+e$jHd5K9tq& zU(gp)R8&+_Qc^lCysWIOd`4tdRaJF$b!}~Jos)cBqI_N5?7FR6>$YBKYHDg)meAbX z+}76C+1c5>Ijv_)dS74Pgb5QS?#`MtY0{*<*^~C>OrAV>cB1_3*;{9C-8%ci*4Y;> zELgB$@#4ixmo8noa^>2!YuBw?w|@QlO`A4t-n@BhozvDji1D+xUf8usR* z=1T*QkEg<}_nUsJXup+tV{&`{mbs}1=FW|j)&70u`R4un^7oB4^BLc-{d{ls))wEu zO)ad!RWk#8G}NZlvwDd|f4I-U@F3rj@%gpg|4vl&PW0TZTDJMc(lEXYk2We+$=Ng2 zb9Nbj|8PMmY`fc)C6W@-#y68Ex>yMsM%2!^`tGC2_ce;)b!?mo&Lx(LCFcaD*s!Wj z-@QljgA-%G#oe)@S0?wQY<{`m$;7D1cHfK_to%`JbhBjJW#=_9OCKIdlM2vcPpw?D zv|#U-tEEpD?_B+=`Mw9Aba-LV67;py<7e?<1}@Foc)R#Ti&`h0zI&6;Vqwdn zhZo*42z`8z6}+%*hyRzO(ovlc9=){L<(g92wcnpp{cgsO+L(ZAajhRtMKNnkZFYXL zYB{6o{P_!XV{@>YaJnM*245o@%|q6 z8v(2AzKiYqe)`jPr75e{e{wJRn)FA-$UL<&h0pH%OT^YG4OY%XZkW8cM z-Rt+>$wjPP)w7k~ zr({L`Yh0)ha3fufC-2EkJMRZgJH@)M9%FqP#W6p?dHw4xhD+B91ixx#kC>OVLe@~u zpHVzSYWv$&g;GaFSpA-^&2-wh+ULdF%`$pd)P<8Z=H^OxUH7n@Su3?@WyarW!Es?e z7qxrX-U+efUpmk1TC@6+$F$pP!nk=|KMI)s4(Z>j@pAedI~I{^-!@L4@nXT5?Lu`% znG25k+|rx7Ug6agpB2|)Z_o0P5tF>xe#tTQfm&vIe2ePv2T$?}UGDxoyKR=n9OY6_^>el#1rU2Hq=~=&x*9)3ewn_@w`hQlP{PWq_ hmQT_FK7qeD8CI%Wn^blQGB7YOc)I$ztaD0e0ss(gm%ji2 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-valgrind-callgrind.png b/doc/qtcreator/images/qtcreator-valgrind-callgrind.png index e57038a1517b7457773648305187ea83f6dddd51..8721c62c587b18f16d34434e5c92ce59a0b0bb24 100644 GIT binary patch literal 34375 zcmeAS@N?(olHy`uVBq!ia0y~yVE)d)z{JVH#K6Fi&mHB;z|h9$>EaktaqG?A>J6#x zweQVilGV56Ynk^s^30lO;xx-rO2Ss6XKA9qrVFpS_P)u|3~Yi0l>XQ}vu6RRT^c+^s4{kMPpy1rlT)X#t4_wNt2f~u)n9RKgh`TB&%jQ6!_ z&-gBL`uYFI-1mPD-~a#DzUKAq`#*Q**ZzM0&#&^^6nlwx?{d~f)$_Bnhnttbc`|L) zH>+E9$NrXpT&;LT`^f*Z>g|uBwPIQRegPT8^>P2_xB377Zr}Iyd;Rb2_y5h_A2{!D zL|x<8Pw~mY|4Pgq!5;oQU8=!cac~QnU!*d zKiQsTpIATBx_W!SzrK@?er>HvO*6Wu75`$dgtgJXEA^rEVe^x6B4g{Hyw95!U69%U z3bZXeQ{<(N_6O|a{BHV4J@DV^{2gzeUXMvzw&zW%zIDlqfQ}9PG8P3-P6&R@|G50o z@BIH)HR;u_XmV^p11kzqkU@sn@y*W)%*%;Ea`nB=DGe?^KYZ4)$f1l z^I1(7eCRvpNEWl~n)&fUA}f#m28Y6m<6wJ(|2bBR*mr(fUw<@p|Bv9`;p^_D8-1A? z9=GySOzqdJN{RO?9`|04tA5M>{{z2x{k@Xk;`w`?dS_YOmpNUpHr?art4|Ns?S8lG zQI|HKyj{&{-R&YT&F_{3b9{;aee3!>tI}6z^XooW-}^l8hK#l9v+G;xFVxjsd-8?h z>FbR@B%Vh1$lp2gvn0Fw#9tP05O1-WqThD^hs^ydo&O(BrSAW;@$dQ_Y4gut3y&?G znp9}IB415wlYQBn8=b=HS5h0Q0#)*AepH&ysek->|B_>$?*G5=`DnyH)tyesKh5vg zY-alY`~Cj<)YPRO|L;7v3x9v%;@a)^s_vFvUzy#oea}k7d3W9jobvzM_WgI4)@16~%WYh| zBKGLt)q;N?%@#@ixxVh}>hEuFs|Wpi9ru0L>-GENc>jyv*WIBt&DwRZ;Pm(QzoXQ6 z?y8rRw;etZvF~Ha+jUE z@uhe79oGIGJa1p|)@d+1C2|D`-1|Nqg?5}zX9c|)`9!)tM^zoF}^t}dM( zr`7j#_4~iOV!lphSX0{#O8hNif?vcl-`?K;>;JzqU*iA0{2zVf>GoO4>McKB7Qaz| zq=-4QxSndSDYxnW2?+y%CRl!KSx^IU9mm4dg@59=eO>8ao8>m8K7%#6$MBd$vW@7e z`Q2Qn{=a+w@0~3N$QvBGOZPpm{$~u+HZSnscZZ)4DaW6%0fVLx z0`?U}pAvVJKjjYgZ^lN=_@8f=ziWnu>MQ=I?Z-ZGua(-h`qJFC1&|VtxzMsq~y}^!e7m7o7X>#o{nL z=8G5n(ModXeU<+B`}RA#XZGK}|NX(^+5D%bGeUjtB)hC8m-YMkr-#3>K25JrtAR!F zmJL(Zx4-SY0jXm$3N`=VJA2;lU%1}e);6)-I)E~FPkq(i`X+oy6)Hau9mx-)o=gZ zbgi9R5t;|A4*X#KzDita$1h1Sqo+?!&idwk?t6W~3xO?`F&v7Ju)89A;yh!-gE0HU zO3ONCy!#hrzx3}zCk{xcFWhbm^bT%Oy{{b1Xc%?9V60%a5M&{*^whzvHgY_I24kBFY`0DA%=os_%BhZ(*o& zdFZaop#1Y{{}G4c=1xqEjp{z8p?Ns z?cZedW44Y{S6$n+6T#}&JnOvnDt~^~X8zvJiR0_MPyXxg+KN4O50Hc9ExjrBc`^H( zeu5LzeRgQR-|}I~`r7x;#OGE2x>yZMj#bV-<*vb!wywg{`@4VMJT9;G?5gEYMbl~Z z-yD_7z(u7%RL-gM&u&=$ZY`2JyE$~nx!QiauY2aj74P|J0y8Vk_vd9ZjM4{7u6kwk zR6brBR`PxA`s6RSUmEK872#9%m%o1tie6BWxp&bY){fKmmsFqyiQ?o>{_|_@&sd#g zyH@-_Ro3T}y=w1*p9V$p-{Xe*(hDf@zs zX8oOxx$N@w_ZHV2{+?I2Q0{^JNl?^ny41J=Uh??&d|KThYr3L-zWt^Dt^Rk+pGEwO zT8c;_Afp!i>9ng|-S&1qC`8pQC&UN;(=NW7@Zy)(^`}kH(qPsp8SAhwer-R}<>wrc zv4;7}cu9@v^mC8-MHhcnw_kGXllGeb7jAYcz}m7G&S=_q@3Du3cIpm4v0b14g!3Mk zJMX*f54&8&gEh;)el3Lt$wJQHe>`DFR~`Q(dm+5zd<3*z-0k~QD_}X>U#5?+_z|1; ziTgshk{-B9H4K561BNGOW!Y9@TZv*u2DbWpZ4q!=3m;! z1Ah5I1G`1d|7X_Um68GbK5N3lXY#_DuO6>?w~5rux2?YB6IjV7WAWg5j%vO7tKci? zot7{^sk!}ReRRI(lj{Xokv&V|>GckK?^EC5bq%68pOPQ2FDmg>mGkS@uURW+cWU)B zm8hpj|FqV$^Qc`kUl^JOGm@snH~-7gxbF_H;ZFwFG5#`MP$T%!ees|Ff2#L?uipRu zx4|)qJ<^Tpry_4e$H;8L@r zuK1;feaN)m-`_7^q`&st^F>>oN^-!y?Nyv|fAyx2mhTVat6ra)xLR-bn@#in-n+i% znW?(poEewSg@>tKcobjxbZR@FtQ6y^Y*!)S?`6-<%#8oFG=7%Oi`BbI9$h=_wmL9t zBS)0B%W*bP^>F48VPnS-Q`?WIN{zLcv-v^}cSAYKZ_xG`zm5bdL+?crDR^*ZW zhXc&7oa?{1*N1HU2WonM{aX5UeU+`CL;d&N_ifMB@ja=!`#P@te(m?z(yO5_1NMD1 zK0jNpZ_@l3JDfv*#h+Rl=d)^7>h<3D_x>+GAOG{()oTmtzq|+xO<7<2Hal~zfb4CS zt@c`=ATenR_?PrzX8JtI#!uY;Pyc^+?{(Z>qgxx^xoE`Kewohm_gennYr5O-Y|6jC zPw?0((X-<6s~-H@b~`WFW!;LXzrTN7-~X@nef9iBCqMf4Ty*$>Dc z#A{qeY(if2ypp|M-;p*N5Z(H3!Al{Rp!>UwwYs`>Xo1 zro1)PP5))r8@KjC#+3DcwD)f>e6{el{_Z_rHQu;r>~A<|3``S#oE40 z()T{Jec$(eZ`PWq+FxhQ@5j79@U`^E0F7e3~5knk^-2zn%4~LkH)-`YyfDP^a|&^K$Om zufp4VKOFq}Z1KBTcxhdS9p5A?)TfHyHZ~rUAz6>FXe4Q?DN*|d?v;EG>f0>wdgzTln}=c zuj0Q(EnOk__sE1=(^KmL{^{mdp8k40e*L$EfA_W}|I8AJSFDrm0C!ewELN{xZM^Ky z>h=46rPn=6@5=kPy#CkntMikU{=Hp)_xtg9%MVBEi*GK~ul;DzU%4WA-J>-jAGh{i zoUie;ztXL|af9^-*%0TbI@XU5UTt*?LmPuuy=uG_P75(Yo`C7CHSa*rKjB{xp?Uo zjr~$}Sr_}y&HOZfqKVPd=l?#k%hf)q5%>We?le_F-8YO=cjs%X7-e)+af;@_<$MC2`g1n<~yRFoVs zX(!WXLFF=|HQTN1^%wpPZLU0P@MztYmn(0bnZEze)A>Koq@M}?_wl&={%^Okl_!>h zT8|5A)@#nTePVupg2?fDf4TkE4nGr5gvSQ0{8ZcdX|>0EefvKfe!jc8`RH55>dEcr zcNsb!dUke~%O#E}^~XHY*6=BnU2pHFSK4~}A8iuJn62V}gEv#r5gJKjK} zr`^lv^9_UQ;5#hO z^XvKl1?(;Tur}W0rS`;$(ub=|{(YV=(fNsWnZBNs8%vGo=j8W(9$BV~{$HBD?~Ahh zPmhZ&|5n$3U4Lc%$8AbpKl$!RE7~r9f66FD(bo0U-|~>3{`3EJzVg?QUwCw3&F0d} z6Y^O;rMwqEb{(in*^S1q7_suUib8{58F^f&(mj8Qib7Q}Ej)T&Dn_tmg=S%xS z3vBMy9Jcy#?BDax8(g-m5}Ek*ZDy3iuZe7*yZsEd+>}_c-tW2i{vSt=u3Q^uGVkuf z9e*yDcRBxfHnrj7uXDdQTl}lx|H*yqlVFs^sq1HFyL@0fCH`Ihwa=^b>!(RitCo1_ z=fJ4WdV586|2dPMXS)iauKU1VUvO;7|BwCkd-~3mFS#VzZ|0UGUiee%#PR;q;rx$R^+!ZUOQ-A9 zHw7iyeC(dq8N5&H?EF6`=a)46yXY<->O8Nr|LM=eE$eMQC5dkQeD(jouGQ=294N63 z?z_P`r%JE3EBV{P+*+&r6JfQpFPz&e^4RWxe1tfgTlbY44L^SV{aCJe^k2;L2-fxL zPE+!q&Ha<`FGA2dwEbJ>`TBjP-u@Xn_Q!vm2>aOGu*A&lwNYA^ib4_ObhPXz@UJWe`=cO$g|G%94 zzP0D{^^>LNuZW%suX*+*Yq9H_n7XHSr5moSy}NDk&dEz_z8+Z3R5J0C=%1Apa;58c z7UqAIvF7^HEm?GBKi9{r#aryZCEHK4aFXddov;1%>{;i9b*>ZF?Q2`L>D9qIkwN>C zUfloDd%vI|u9mkn@wAF+rhyYCh~R($yFb0puWQ*Z`Pseyw0Ph?51H4E zaqXY}25vkVxKDT{^Hb$5C#J+F{QCRsK&$7^M-1+U8|J&ex}hwWdtA%sRQ*ZsxJ7CS zA@!?X`doR<@l@XO-@Xqr*2iMMEMl+zvG-BzyDuGcO-{)xCmnxt`%m0j(Wk4K!xzMz z()f2obAQFJFqfLC|AOtm25W6GG0}8cTeYu-^;cGVR!02MN2}|*e|`#;Ibr+#&Sar3 z;aSP)EGskhUO6vZb}^*UD$C0^)c3OZi@6+6R|h-ACjaQSTG6e&d5!aO-#@R{-Yx2! z<@ve(kLy>>#m)P)W@(;ZBFX%^t3LVTcej8)7J}AiVpje-Dr0L?cHq;pC#Xp~QPRDw&X`AW&=l}10o9AC=v~ThOi##K(T4lm6FrxXX)`|kO=L4pI-dJ_6Wi&It3Urdx7Sbc$h$bFL-y#3tf!Zm zKI+S>CLNcVy=h+O>iOBh{Qa#O@%M$x=k4=dTvPbDtTuXubJmhS{dLctc*hla8g}~r z()ed`?2~ix8;!XCSC-o?{g?YEFRNrvM5PzwUd!`)tJVgItY5wI_5EMhwlDj$}nj$L?h;?&J|kF7bI>t3gyPE#xWC4M+zVcYR$RmAm$KsX8npKw+yES>CcQ( z$gVymAOBLg$Zt!2cIY(Lr}dv^e!W_L=gTAU{VOaYvedIg;`dIqyMBsA(|+Cke{b)H z?U-XEyL;Ca?Y5IwSM2<0vrbAYtfRitZfol8850bbuG15_xjLKetFX}Z-E%FTiu*sX z>|e3^QCLHsp0SKou9RbZ?vKXb-~PS)9RBY`?C;y>X01Q=K2&mLv`ldR+6y^X3_|SJ z{`};g&2v}q@3Of%i?}w0f9?_8?)*1!Bg4~V4S8MLr|10_pIu^EdW!$v^LIg!X+1ki z&p!=+tDWY{Cwt1%w_jrVuPIh~HY!sW8pfy>2?j0LCKVjMW$nAL<>&7kX|D8_vHW!0 z($3Xp>I{oR^P+XTZgTwEE??idD@P(RcTM5C-3$KY71ibFHCO7m?RgTqG~@Z};>{dq z#r;D!$enTz*mr5&lE}J~ZWbaZ)4is=zZd+zB2sMewyzfj`JZMyxKX(BX+m26kGWTm zoUYXqWjo~_GL@5SP5URo-iME}ehFH0C`M^RMx1{6f;+#E;W=6`xgbu53Yu=&yR zjRH<5vW_@EwwhRWKj+%?(({nmWjY56^GS#DK5=3H0A zpg!Ty+qf11ul(;vr8m``wmZ1-PoPvy{*3v{PsOs-~U~Yh7%7miO-R z+|MHKC+f8bIBmVsa{TslJN12{GaW4pCu^Gj2wP$Y_QvY1>2IT31YTuaK7VUFhoVci z{U1he#ODoPVxfal7jJ?t7)5&zcv@ScGx(YD(2a3H6CO zomTMuX}%!Od+IgQ>oJE5A4DjcEX(+i>1h$hq1$ZoG`@e=+THJVWv8aLK0dI~DZ}UD zgUgc&)(AwgIsV+TPzIE6UAzx%bmBPW4&_D(9YN*xi8`&|p7Q_M@p-p(zurmCpSJz) zgUL^;zjB*AHk*<(>&-@|73x*7>rzfFS6z5@=~dT^iQpb0^SqFx37^)l{<`eVk(y7< zzs?`GtC+iF&)=%aKbd?3SM`KQdl~wEj&SXhbK+JuUHI_v&MVy)IGwzmR(r4RzOZQf z=lyveIiG7!o%cJdZhzxd$dfs9YC&2aM_jzWAkOr!;)Uf0mxJw-jH>Scbolu)tIu9j z-+S}koc&6=U(2sONYA(Z`J{NS zWnxBYW~tz-y4mtOi&ty@zvcAZ=G&d({=3DwF8p>Iqn~u_IT814{T~sNMIn;1RwWrs zN0FRL?Or?D+ zvhBY=#UC7ckAmwgbr$*`sg|ogBeQtr`%Ndy)#q;BoNr!WeYveK*k@Ph+w6-fvfAJ8 zZM>=)%HIBu?d$AM>h~UepYbUZ92$&IH2Tidbv}5UI$P34C!l&rCr|mEasKn zIpfROr}w70-`Z#-Tw1ZQxZo7aD!o_QPyII?d~f~qGRWCi*iX50Uu;wA6LoqVY_~}D zVT2;fQ{`I$eWFeQcDkI8P`Sss6iw_;**EQ4YyED=;|B+uW!U>foszrQ=1*%$ZoOdS z5&Ul{hhob#2a_Khid%RtOdOxvYyK47zIToFG7E#YPlm@NP92vxb$rMB zDf``p+BuVZe!KrP`2iMu?vdDIIHlikN`GO$X8nd(ouKWTOP%hmoWC$zbJFXW+1a1M zLYwx^*D0+I_`7r0*5I`d!&R5n{(51yui@j%r{zC(Og9p!*Ev>k@7%fjbJt#d^R@Hr zt0S^}v!vq|-YhJC@hoy3Tm2P3#aqEXYdzaPEv&gyc>BR~gR5B$yOm~JpDoo;y;645 z<$0NWu4a95M4jbVrxX`^=j%aF+HU7A)jw^@`fuC!3O@3%biN*R&+^G8Twtj)Tz^!#J zmW%h^o-t*AVC~&c-ufZUad$tRSaE;%_l;p~VV2tuExjREsIiyl{4DmTzngvBx_%@Z z9{aq9HKvXAokil8M-z%Ss2VnN-j%hgoVNVne4(e8E1Z5xoa#3UeNr~x*y@eR^@D6N z%WB?Vp8GDj=9K&@76Sf!MC;pt5ZPt(~`{cS;~)E~~{PlfyVpC;e&`Dxe5Dz~U~*6X+TyG$Njymm%?*P^ZY zoyiAo>=db$2WzYUZ3T^WHSGyDYdH%r@fau<#uZQcO98^nZb1?G0!J_ zNw!QjeCJV8ckvC68QZy=vo1|~!R9-|^}xx^F1&TCMgF_~$V}#Wnyg`eAmro21_txC z<&B+YC;0a5x_kV^=cmu@-R|$c5?mc6`N#L!ydc|-ZJTY^bT8~WWWIj#8TFF6oB_QL z<(F?LpS}NliRS)~g^3T3C-qpn{LJ39lXII&m5NhV*&V+_XE*!s);W0@J#DvU;(7Y` z>5`g>E8p-OJMd9sN`BtE?P=$hSKnpNzMs_dvB}cFy>34=Y1Jg+}t86;u3Y zsI`4E1eYz&KP4b2xkr5Nr`0#DnuA$?OYWLK>3nF&64BQuZ+G{Lu0Ft#EhAxhmo?+> zPv7N6JBzjzS4V}t-n{B4g zzJ2?WRL-xX2O__@dVH*3GeOAGCBW|3q_brQ?4y;}_SWw@YW6)!QUCL;YtIg3DJ`h! zF>L!}d&>OU_ivp6=Pvvex%%1CyH7R#D$lm3jQ<`^+n5pgr^B~Fr6fLX{oH4ze>k%r z9Sc$dxi!MA>@FXR|HiQ8x7`{(J!aNB$I1W-tblzkKgE`({rOd}_d(@Gw)dIlhmU1F z5B^lYz5VLnH=(~5Ej=|S_}_v(rtgj)eo?D+CG7W_hUgzVUIx}(ZRM8T^Z#N{SG8c! zau+_qDg7JscguP#`t$6vF3Y>!K|Tv+?DS~?2SxspKfSANYgqSRWnEfhS+cw>?f0{4 zvDc4y=3Q0(dsPjT;dajq{1JL)-N&7EUEh=UPI;i%^vO_c@yj)33XPwF{k9*AW_+fp zld|qR8)*Jx%6zAvPle}yT|B4Ta@u~yh6+O|^{)%+Eb1=SzM6Z!^^>xoHJkYf&1?N% zgPcH~w~&du-}Gs+-}bhp=N3+{#=yN9VPE z?J0Rav$k(3k~eSs=Xw0;ak$8%shyTj-tWm?>hM!yyM^lBvIU%%FZ*pzJGFhbj{UTJ zR?xhQhP}hjVte9q$KoqzYPJ}&l)e|`MJmE?*;$9;2k?B!2I zo4S8xlYaNby3Q+k$GL?UK%UL(I_EES+TZ5xqABmUIhCDGh@a{FQzDt?>G5Z$&;ORI z6^}U2lbia%{AG%l=s7t#v(vxsKK$0VccI*t;)B=U-2K}>J1S=1Jj>lb6tk<;-abrl z^_%$eptm3>UOujvk{>f!eSY4fXA8ql>^hx(Kgxm;9FFI2ZLgTf`}FZTs|{C<^_aDT zW2^lWDD#!%A3R%A3<{>{lfe1s-S*56kjw=tEChYwHXWX?u{r{WlW=MRS#pdNO;X_eNK7yo`YnO?AX9pvv!X3k zuw^%J8r*FFO#!E^R6Y)$VK-s_`$@h2AG0+7kFb}?c||qv?-1@rfvJo$KgyGDJJj@`|@pjmGY#VsF#m_Mj3zP|Vq z>+#v|t!CH!ET3m|KXiR)*JjwNunTiE@7K#N{PU~oK)o%~)7hF|U;jD!>;m_jlaGqH zc-h@PoG(at>;C-IeM^a33wN5oVg}p%ivMZ5+ehUo`G;zIf4rQsKl@FKrqB2L$u>28qeLDLjsH`3p84`xJ9hf%MSorkIu%da^(ihg@}Y%-me!&S0aM1KtWT9) zcJ~N~P6e3?o>af6r|jao6eOuD_0)a>_bK;|GD$@(E!XB1oGa9)tpD*ZXWiGYU)@gq ze=vD>)Op))&pK;Yn%jT7d!2fn?DWBg%pNA|i!HgYil1xh_N~ij*xqaD^b=sPwS%O)hX{4>Ue(z z*f|B*IXw;unXD@OT5*c~l-?fX{tZR46 zu{B&;yT?j(eaDr9hPMUYb8xL~J+Xfw^l3fsT%&t0)#h}}X~>wRk?F!Ha`oj# z_Qzi@tZIo%cRX^grR&+jF8a!pZeeLl|{*v;Zy3X z-sWk@E8a?NS+PQdcahqHxWIoWA7735C)jdfPRViEav7V735dcY-0G?P&FJ2z@m=5o zQQ*~vs3TA3%S@S4|Fm{KXrai*reCl4bNX`n;^y!9bYcIz4$DchrAAL*&or^j0<8#{ z(!a1qWB+_mpPF4H8C>Ingh1;@oPSE3I?nC#bN;_$M`P;09F3oDfBXD~3eElhewcT+ zbf2$_`oE>WZm-Ah&ByJ)yQ%}XeO%2;^ z%GY6)v3RRQg=fs%usqwwPs^*{#s4|xKD)~y@6MiM#;3zp-AT`AUn!AnzAfP2jHj<< z{1@+86V#of7uI&<)x*-ca#Q?zKZQOI`O_0H{aJd%i7EYcyWY+FD*0kgHK%RiH*+GIw5c{26ThQ9tg_FY|e84fP^ef*vn(Jd|Z~*6@hO z%w>+uGTWNy|Db}yNdXK?vHt%ygqw7pzeh;@0T^dmLCgtIJe+jYx;f(rki=eb+4Ug zZT%M(FLyFVHgWs!;}(?)45#KV+y7~eeN(o0#w0`NY#HZ)0 zljAk^zp;DWXV5)s)B7bqG}RZT~ETS~qWB@TdD%QZz?n@w+5p8IHkX;TY=6(8l^1^=d3t{Or(Puv^Soa?rHTjbh5s7) zF0I)Oijt)@JIlLUF3!4ocs)=wNvGr{@R6q zB!l*avN%0{W>Y+Ke#xt{>>rHwJAEb}|Frg)*eUsHo%mOGlM=U774J84S>^7P$rWIA zc}LCW^taJ5brKmu8udYiKQA-aO1)#{+}?Y1!VE#{(5j5$iAJw)6l%(u)G*$k_v!!P z&3?IJ1!YB3;ZZy@hrPi(TI=d0Vr^IjSy9<(&JYZA&u#UHIB*qu=t* z=8l2xddV;G58mB%YG$uT7IFZn3^~t;aO>SH|rAp9{OoRxgp=uXp+2!R{Q5{lVwm`i)iJ&6w@{^RHgK z#{TD1)_ANok729+nU6;T?EJd!&$#<6pzi$X@{&`> zyPbY|)qhg|zn$r?#qs?gTJMW~lxq=qwdw`af*PKuk52~d`z2m}R_*Ekukrt5KRQj^ z`!btPzAs|opQGLNGT-JW^c1qM)tIlhU~B!0S1QE|e!ZKT9KPMiJ!d1&)9<~XL?6}v z{~rJ8%=>@QUw?hwe)r?j^tQqs?Vk*f1=vmDf9m`*z;4QV&G~GvVyLEG^)4vM)!%WLUIIU7kvzPna zx+^y$`fbkIsM&9F)-9D?!BT(!`~Da6|8D*tRYVy)gRIx40_S@^nn8YF+%}B`n{0o}S;eMtZ}- zZJ)zd?^1lf^X27*e+vEXg_QK|HEJ#}9t zE_yENo3T#9saw~cE%;~o^n6IFfsDoekmW1N-%iT53GmdbvUob{mj9lIrd%IIU+jPM z!Z*O~*pA~<>W?;Rudlfo%KEx|o{(S8s=CVRYK_2IuV#PdQ<|dw+V>2j^6vG5L3?bS ze;RK)$?uq>AzQh6XI{r_b7$@;_V-R|%RHQ`a7A^_^^Iq18+hh^s%q!D&o6IRqp~Xe zNtWl&SChA!KRKp4B~dVV&7swr_cbLpuP|%-`ZVfMqtw(-`+uJG|J!Z*zvjH^`k#;f zf1GMmsCs_eq`h&GCy(z9TXm$lJ>+BUbL;y*&XxarG2dvJ{r7+Gs~YvLe=VN;X6pI* zLA!0ro@HO)JXWDJrT*o<+Uc=nJDL8jUT?R<;=}XceUo223#>g-p#551>(qBe1(T2` zwK7xerPt4V`jlbjF}6;%+6f(3c`HA&WHf#{ZdJKgIY;g}!uHy_TolBecBeX-tn%{-@9_o6@U z61-u<8npnFC@eJ80{7L%9XI>V5M=lCt?ap;Pv)!S#n#kt`~LiwEAr4TRx)oXbM>6l z`(6h8JLNT3XyG5{>w7jV`t$zJWBLD=?d$Xw|GEC>&3{wHQ}+A!xd+=FlklJNDgMhN z@3>!=yw_V4Buvz_x2uWXo880fy}kRWNah)dQ}dq|)SXMLs|bDZZtwT7#~1ePspQ(? z@N@Fg8s#_tTIBB9O{s}<2f4`V>0Q}#lRlkx=j!UZr+kWEG$oeD?CJI8k)QuIS_c2) z_BmzF_CSA*Wt39&ydBSPTugTTC|~`=>EipiiYF1Fs#nxlAH9AcU#zqLhV#_m)I4Rr|H{f20X?5i zcg(fb4@k7p`uq2P@SIP^0@piPA6-B4zW?d<-CAbnoBv6F<9wP7THYP0@m9gey;WEG z%j5osUe#@%(o;H_qFW!EU+aDGjPnB1Q-3o(`?nWwOg#5m?UX!Ui>zPor`F>wYdd5W z4=XKmal60yOx%&a(r{J%{VzUW5nfiq`rU0wUC*cP<@x!)e#qA?_v#GT*Z5M)`R}77 z;iu7^N4GkfUV8sVxbL9E_gSA@_uLkE9$0w%Q)#^NGL{)ar{>>W(|s&rpK*-D%&AWv zaFiatZ^Ib1;Lk?CdmM)(UF}a*>gK#-OxYti<6Xo)!>8&0Lcho=+3K#CdhmVjsRRKEM0CGvl3rl7UZQ)|T^pi#I}`If0(bJ&jT zOS}HsmuaDFz(1b$&*i;-@dw(vo~tbKSRwuK?Cb@sr{upsDHU92$9tD4t1`}e_HG8v zd7q3I*Vs6pZ~Mgk<64QH&`yz!$qV<(Zk$~7)Zqx+{v+?Z)IlrSJ3hovnUU{Ce%YeXWpcV1Ewt;m!ACPQ9=E+2{9j$90ei zpz+RA&m+Fx38>r83$7-PNt}u|iZ2f^XixoF^JCid-ekUn^&0=r#mJaK#xphKoqz7I zpHlzx>2%@g{NNE!{-?%Gj@X{R zucG0|~7gs9hZk~7U#fzETACFw@(>)eYcl^#3WsA#m#P@nm zJ^I%4%OaC&ZDs1LPtVs~`%`u8^RjpQcCs*Ec^JaE@s@>k%O`iM=)2ANB9Yr{LJ|a3 zUas9{l2N}acvfAffB&bmsx?PdWB>AW&zLm*=C`tvRm%4Mr{?|k`YE|qO!#@aaOyMT zv}I3U#wMBF&*1$2Y+=A@!56KpS`p&H?pE6*oPWv|pR#&w=AUx+|E+7wc6>f56zZ7}xWcd59fUK*RfsgD#t;7)N{Puu4>2|(-q5GN}i{oDB+>5SD?Fiw2 zcv*S#OL0{@(^KYQf$LsRtG0ZU5^-dTnDDGy+ErLUZk-zy6)Y7V__5*xtTnO$`S& z2u`uTt#qw*Q`)q?hKx+r9T!cuy~tVm+1k40)A9L-?`dvoFn}e%! zE-$KCop?&%+rzW6$$Ov9U3)pNt@kRc&&1P3zU$L<^%Cx-o!`5-#&v#`MpWR+&gG&@ zx+;H7f3b!)hW~?n^^-HZWalWWNhyDS%20oKc>>QifN`SC8FQoMNx{bhqoaOJ|CH>FzgjS>68oeHe45zwsQUY~PuJh1%P+C% zdCILa%W$=6$=;CUpULlyt8xt6KJEUWk!B}ne&^oC`LnNRR$aN!cUjc!FRR;^6a1&< zf9##L^;ySUGgXO2HP1H%tTDUBxA0G)hJ9Fy$@>=b$j3=NYT2z@aLh= zVn?2uA9*_6fBL%ltK=kN_wA_pTl02jso^5eB{k*tN1i5Y)Nc&D`u_UaDLQ}31*8_7 zo&VoB)wq3kx<-8(|J_@yMOJ1pGvb<*UUepa^V?bo@}T2SU4N_hYbPG7X`Z5QCK9~3 z<|k*8?8eC^s~x@vKk1My{HOfUOCi&(_21cz$@baN{7$R4bFG;A>5IOhK*HkXmkp0S zTk4{$w?C!o<6^_MPvYt&$L0C1Xqp{%efR6v;jTz==OgF#EdJc>WO(Wd_gYVVN6xQL zv=kTD?{(Iw|Fb;*?WemEEr*``+5YF$g&13=`RnXYYkiD7Gkt!1(2Lz3Rbhdk{zTJ~ zBlGs%<+WQld)M>S8T$9DyGk;joz|b{_95-y`t);#?2jLJetmXkdjG;dM`b^5b?a6N zw)hdeFxq5+WMIGPE?e#?_WGyHPp{)k`!;jmLYB8L8f=Oecv%FzcqedbzQI#zmKDz7 zPWeBlF5FqQAY1Geiy=lU{EB>A8cF`*m zcVeb*Vir2acYT`~duh@%_EY(Z?_Vr!T%^bGzQ)IM;(F%Kr!L&#@ag^3J9XOYRWIWT ztt7<^mmY0dcG0G{J^S61_mAx=8V%b%Ew}t-ediMQvM$ZK=aVL}pPHW^$hR#yxw2PP z;?|uO_UBu-IGg_Cc-sHw(~GT)M=b=FEm@Lg=4~_gQ~!G2sDOQ6Z*RK)2eg>uvr_!p z?^|XkCYLe>KT%#MZpf$S_wLRV&i6ZSC;t?evkaSFJ8@< z{v+1SOHQNyoa@T!dPc^>su8Jtd3wQh8SSEz9eyspH%D{v@=1<{Rd&mkaDc+jWBH%S z$KT7fe==XyeCg2z9kr*@-!s-sGWa~_!gZU2hp#T&@#pJjrKis;Lr&E7{!aU0_W|U^ z<1(6CE?n?j`KY9{ej><=)q%5?yy!XAZWR9VrInc>}}=qRQ2k=y!i9z#nz=Y z|3P7x9TKHH!S84F_j`6~PpA8)X61rEJH?lBbo0*azIf9hyNW;K9nbd7v8-hoy~a*I-|F8k zJ9=V8S@O?AqEW$KON?5i8_NoRvh&NyXzSfy@aNvKr|j}GI-b3(i`nP?Q~aDv>J7PM zo~Qm#J$-|%Z|{G)Y{%nGha2}#ozH%1es!Q5m+A~l?#*&1lus>OUU4||&|Y1Jr~O6g z%dRRfYoByVPj%@^BM#Mhem|G{?_1CNl>2;Dw4k+9o2$=6<+39;4Uz?|AKI2z=&yH6Z@)O z>s>rgw{NgFyU!%D^s}L=YSGMz7dVy#|C{)Dt;YQsh9>*pT!>lyJa;Q-N3e(2o0qrm zJ`mn@EOht2or>qO_GtLue`m=BwoEc`-^GhN_JR{co~!29e+z^BTG-3a$2l|#{z~Ql zIfIZG5lW zB>N+?s`=yoeyx>~f%|3!+@I0*|4-Gqk1sn7c#rL1pEAGH=^ob$H?O;%FZZqVS{2+Q zckNc_UX5Pkz1wH9(yPw+L62EbCmV3;<>*r)XyT7vI?2z3hiRJVf%Q3G&-6TX4-ozpyYD4vYT}*Q6#YMYsuJTg?&p5IJk4f; zX8oV_AzS_#FaM*Xa6DSo+*UBTN8CK=__MbMN`>9{PGF$qTx!uX#4xE8?|B_Dc zoST^T?Ok)n>fd3V*3r>b(Q_|HYTlA@DR1ijRL=hO-k$f5-(CJ!^>xvaXRnU@D;L&l z|6?FG^&rQ^ll$g*{Jh!yu&k8Z)xzSDzE<_bn?d`eW`9>MxC9CtNsaw}ChaHh$hr6b zS(z4JDv&MrRC~$>clN~HmPaxy15^@%oHWy;bNQV=?k!@y5PEvo(#iFVFlVmejS8p} zb9)q6_w}RTsr4Mu?UGmDryW0(w|vtdws)`RigZ?D{r3JsQzdzsm*T1IRm-N#xAm=l_2)#VMDiY%DfxGIuV>5K zQ@uY;|7DrBS+v8?;)0u-r7IpR|FO9GV9>c29_-aO0z_6Z1pNCnE#K`4B} zIYqzU|8(-bGOx^Ng<#)+laTv1_l;z4UoP-OIS@%wK+M`Y?Cy&Pq|IgRH&DOP7T{uN|$0kSZ z2*w3}RQ2w!w5^ryKE3_8Xpg(tGS8n$Aw3;OAAM#n{Zez-t~=Yp@?6}XyoK5GZWK#% zp64+M-uJWnnc=kjGxIN72`2aa_WAkl#qRr+)-?t)Go0z}DUe^tBK8_oZ0XDWXGL*S0Y#^89Z4nb?*;?!$}re!tV z`-+P6U7dcf;W9EzIzG2YW7B`LDe`s}_w;9Z$Jl{Zqcn;b9=ra+WbL|x^Yd>>1qvN1 zUGPVe?_=JMxx43IS~o>k!%HG)%j#+D##dVEroZQTetLV|+PVh`;S%@yT0XYS+b7DD z&*XoHZX-vr?IdN{E({JyYi{)7#E;HU_&)YUX$-yZ|^Lq7)`N<`6mwN&h z9F#uFx03U(-hIh+wb6C&HGOC8?3k=~_Fn*tT}j?&P{%O){-#Ho6Xl9;&jFVXiccS( z3;L&Xecw@VxAXYL*}9u=&6#xp+|(+Zukl}@_)P-1p%g4!&<`GwOy+s2FL`_Kqk!DL zV?n>CvNu0_-~gKMgBTEC7gun~ev4DgzoLMDJ4?TAw+#IIGdS|l%=L{TFcocxMjU9A z^EY>m&!35xPu3sVqN}HG@bK^@2k^ok|5HD!Cj1k*e(ll>U(I7%e%)L*C-Ph9qvLz0 zFix@W?-ZHMef{<8uTMJj(lq^NcRi_-*Qif&%~`WaYx?>>VV|BgF4`_Fyu4<5qR#%e zIcCK(|Em3A{Zz_!=Bbbw`{xCJs&wq@H-d+4CSI@9vng7$j@?!1@PCP9jd+=@H}A;B73jTsCdf#w0zE|!`?FIXMWneU2l%%s*t=8bycJK~!18yOpk}Ilan9#g zza4%i&pYAQ;`(F8?E0|v(K&K@RfT?kH`Oe6|EcD3D|}t_$J_qL+O8Vyw~mg!XgkB3 z>ovDje)Rv{KdUdV=Dp5tRk8j^{PBnz3wvLF^*Z`a{G6Fg-s&x%pP$uNh*`7SJayH3 z$)8n^Z+-qUTDN*zj{%;27KKkakD#ct7+K67lJ zhKEG43vtGWr|UJC@|*L#Klo?OCSBp}Q|*QYL(~Dm$TWs;}-ncRrB0%+Iy8} zSMMGOP>yBJ`z%*BSFs@R_JN4HH{QQ4h7@%*yiZD)V?80B|5&&5I+tUg_+K5Yd1=5U zFZfbo)Ai)ur_&vOEYB@%_3!WPUhe$!nErN$ zow84>IqoT*(m!t-Tk*-+_|ZhpBTu8x$9c3H7FAC0`}y_o7STKGn)fSzm7NdNkWc1$ z+AlW!zR{OMO|DZfzcl(IqEXNH@JFH;fA8P)rDDC8%JhXMJ^Hj)+B)E$i>AHqhB%G; zfo9?w_jT{T?0qU-u}a^%X-d9r_XUBC%Ir+7hcag=m0i-R`H5m@_14!8KR+*Yc>d95 zzXrQ>v-3j7GrRICDwTqFbcCM%X&3M>Ma^jCf^fD&QypY8Hdk(V@l>(-<@xFH?Nd_D zi?yu0Rnc>Wf75-@`TM3SN56R?l6c$Y)OxubQKk7#{oA`5-tnD`wl3MfAvEosxPkF> z)5TTqw02hr@Gma$0j+19a^Linxs^__$GyzGdqviJd(DnzKQ({pTvr~hW#!#LGp0Gu z(6_gE+g^C{LAZ*#>kqqte=K2@n;cJTvUb1RYZ-XSTzqxA_`l~<-Z!0Da#N9{Gl zYc~BzK;3e=GqUOX-ay-!-HtyiPn=(JttR%?Y_CsT9pEv>_D_ZC?_Qm$D%RNl{He9o z)AP?Zez|+2=lzV0pd84 z1Qo6eYxb;|vi?LI`zwt{=dYh{3Ne6oh4&atiTC*_IY-((M*o1PiQEC%{Jyz4d>0RJ z6`u^QWD7Hw_`5T+-nRQ>oy+d~rpl+nxgRnZtgJTA-}NOz zPNV*ru;#DUAn_>|UfwP}d^@IiqQSvM;fy_;SN_(f&F6dS|0rgfn6rR-|HN|v8;yQE z&v~I+Ui@2mnfuRUmo_X8th4*SfA_Q3CvqJu%NaW@;x^ ztDpWHp3}3(AkFhy_p^@GX;PI7{y1-z^ICo3XjG-~2BW><<}GK<*{Uja>RC;;Px`TW zt@V7qr~S4eQZX;fOq0(Ge>~H8N@33CN7475y7Xs?*8hUlHK*UaoO8WYPNRNZc)4hkIgfQ$@RIAZ+c$eo zP1*1^H?`hsioNEZF9DZz6*M=;NFFH;t2%xAPPWf7m!DO<%RZ@da(~`+_*><(wMK?} zZsgW}U-e7%-d*j#kw@ju6dz7W{k^I@+qx=P=U47i+aLE`?wA#b=Dj@|aoMZSde(vW zv!2RWA3s;qYguM+EMOlud#ZY_z{1-Tb7wH`wbuF^HRaP=n}C0Rylu1}y-m~+iCj{n zfAN9kLno(jY3XBo{M$b*cm4T_=`{D8V&m?qiUsGm@+)Wm?md}v>{IUxSy_&}Lm5Bw z1oRHDsu(wmVUY^mrpRl`Tew>^}eci>Mvo_COY#MXQym;Eg`;R8fkI$`1 z*<>$!YW@Xgv#*}wyS^)>ifK82n8Q2g)3s-h1ODCHTi);W^V@-%QsvBK4TisNk0bs$ z+Rli7F4BJf^~Cogr@jl#y?bnbZUz4}^NHJgU9Yqz8%{p{X>z?dXg&YJKYjsqPDlDo zqvH35+Wy>beCOWAT{Rl@_xzJM#EU*v?D7A}XE#gd$=QdBt)-FIIqxlZ{`r{y`E2#M zrZ4WzxT)QD!cu#W=*^mC$v>3?>NND?-=Es$r^Od@Q-tgM;w{T-(zh!I)fuGa_Rl-1n7yG&N^_)~GD&wgfu$ni=2H+L7mc@n;O^`$+Ne+9CY3mJY^ zG1Qa$Qd%&f?d{!T%4JU)B;N=29O;<5ZHj&4eO7S)*fL<>ecfxeb1hk3RD($_DbD zyli1FBQD0gd-g9z?bx$8)r-sr{xQqB%4yWU5x!~va?fV#qBg6k2kp}zi@*K%tSotx zO!j@h%zb}O9A@6UOM6R$ab^;z9!+=tdAH}wjK9wU>h_;5x74Wrvo+tjxawTuM%}_b zU2t{h{4?O+p>rE7)m0im-TlSE|BUQ)_Dk>5-gRO>_bE``4zP>Ua{l?(Y)XG~^3R*A zLZ^0>t}&W#pZZtQ^9ZP@xjp6l!Ud4-e*H_0|26xHuKudz{rJ>s>*Pg$Y9<%`2Q_>S zm(7^fVD0p?TXcH=?ZAJn?tNDy)-U}3VkWn+^tSEmlnjnZoPrJpRNR^pf8^B+j<_W$ z1@Qs@eyvPS)i|##K4;^fM_dPMuKR`Dr>*eP?%eI55se!T1YpXc)Vwb#uVUr93^?Vk06SdEwXhZhg0o{(_g&tA8%qI0@X@52)Lt z8y9qHyWIBPBTuWR=riptNM|^8Tw?RL+|NgD_$7JCE&d$jlc+N{n~(QU+2r7?!l)^s+)ysFyeR!w; zgl2ufz0WK9`Zjmg7^~i|+-6>zv8lA#{`1SZS@sV@mrXD2n=A8rZike9(s8K=`j6lH z&(&WqCU^3ig6o@z7yd{1j!B&QUM<7QdM&ovvVZ%tFja` zUK`hgoFXeSjcQ7t?-yOC0`A+*(YXKD=@~~Y+uyVk6R#f&HFqp&S+vvhvMYkS}A zS@6ftHD5YmviNF;Mxl)o%JZJeT|3q2S8Y=6TC*A&q{WN={OOkBc^gpoHOgIQtxK`n z;fgN_`^1+=h&#+XZn5Cs)uTp1b+=ExKUf0FH-@M5-B^T={Vp%%&nS%xs4Jg$M1V`x zt?}B@C`JRVgv2i$eFdru)xPYmc`i9U{*Re#yD{&n>(v*Um0TrvoSnby&r`1B^EsYA zU;OXt23t_?H#xXY?3Q&z=CYc*PpjvO7ygvxzOMIJ(1+FG0{0%hV5RW9iQAQ+k@flV z_N&wR0`|#lyxjKbb--_)@4emabKgGfo44{n*A2l#vlsm7IDJ5x4K)4v?}ndXGX+7*5cXuTHU)$p4 zPgK9>(Bgj+JLbNMZ0C8sw!8h6!wc@tq@v50zquSeExg@03>3l6KPNBwv+QNbwUYQy z9+UYkta{A@1J;BfA^00 zG4t`B?u9is_=1HEru0`k{(O33ozI+E?I!1*?Feh0wR>mpl4_efYuF}r+s<})-}^K= zMdsY5yV z^~5p2ZK3q~uirneD_dffJSAUd_u18IuMMoe%iKBbw7aV3vtHY$L~9@41F?&1Koj%F zxlZwKT65e%Y-#0e_NEi7uUGxq!LdZptu>p;SYQ3oM%BhSuarOi-M*;iy#h)8eYdTaDd!1`@6^D4vN%OcPzGrgc*t&nK|AN^SVE2ys zY4=6hciGiFcPhV{?*r3r)+A^gq~R`Z2EM5yt!PUZ2zaT@87%& ztDpI8iv1x)UeT}#pFZc8?laV|Z~f#ubE)Q?#*6MJ|A&3ddd4npIF0`)xW-!e=Ya8{ zm#a^1J7x1pt-^0gd`p9S#5H-wugWL%&G>A>=fpl=?|i1){^`T3#jjVIs6Ej+cFT9? z<9Ck(_kI1VZZYltw+US3T0O62CVpDopD`;zz4g;#$G5v8HosqW|2*J}bj|68HV-6McFxt5dG}>Jo>_)ZG_^*S3_+h+v#^b|t5= zMX2-4xi8=GErAyEzZu zi>RA@GhvbC@$MUf{XSn9uQ|ljU7B}WF6ede9Q)K3-}F0fr=~kSpZ%&Q^jaN9??)@K z>G?jYBC}l6uap~3d0z<{zW$c?&S{3zysAsKbB!dX%q-90Yk2!CV#?L|yXBt#ej2Lt zXlL%aHnAHIyS9X^*zTNPoOS4m|J7%w0*Wg4O$~p<^zoXh`jp7$jh{a1Xx?wSQuX2Y zjhXJ(eAj$=exp$7gfjE_r!5Aq+pP9C-c^(3N|c)z8OC(^7Ki2WB{ly~c-)WwWAwV; zMZQ|#`<+)4xQuVS5oD@()vzf3!si^X%g?tjt$Dm5dZ9~QO5eV%LH?CbV)iaMvoSe# zS_gko4=BYvoLNmroMix5JMJ%qf-LHak9W8mq~jRoC36u3T2An3CPDdMe!d z%e0_R-vjded}lmdDW$i2i4gx)8S~9E(`QYI*WJ5&^VX%BccS~v+ukIlDPG)Drz`f) zbm#qjyJWB2f7McQr#JNA?9-g5j^CaAb6$f0&(rV6L;uee{PS(YuABR{o^CvGPoeIi zzeatZYh*%?R^L{Gr@No38pR9TY2ChuE8zJ;wKE?=c&Fb@u&#@&GYBhwbEa(G%fLFe zJFKnG8{KCeYX9|bq6I^~;_m5|Q&z;K^w^2KYrAos;poE7+Fe!=kM+#ho_^<;Ra^S@ z<;g11dwg}>bs`Iv;EuE!hZYgdW~$c=^FL{aZHm>Br0At z$gnk#TE+17*_D==b5}jwlr3{BzVn)l@#fj-SyS?BJG(Z&z2NY^FUTpalK-Zfwe_<= z?*6CikJ|68sZcGL&j_C7sW)R}*!}6op1RzpnG&bBvu{h-T`9U$Z`qHCebPtrjpoOi z2Pu`Uk&T)iESy%f%I)+ziQ4>K>$tDW%)NR3vh=C*hVk;t+)kOZ{{zh_C-XclH)*qO z;M-^u7qjp7!$W1oTBmv!+OG7{SaDcSKXXG^*A2e7XD?-U%?=h`R=>*a*qhY`zZ{b- z!j?Rn(SLV$PhUN>A9bgeT($0 zHmxfE{JEm`(ZPeq6b#&1bIkWI5@C1lKC|$X(F~PM&W|e(3AO)`{nT>ojsMlQQwodf zr#M}gnzwK6$%uWX`Ky0?$;}9x)7y5&X;G=q>8QB#UbAf379Ri9e%tzCdi~eABAH6j zkkOr$w`aQEmY8#EZStC@HlfGUds+?S>%MngO58f@T=Ub^)|4IACJ*BFM_*X7-MPLv z>(CbetGgPQrY?MWF{|Ea#=3wy@%asDhkU`!cKzLnyZvl;So%%)Fk^NwXo{$Kd5wBk z#;QW2M?ylzzrP$^TvKcqUU~9T&8eSn*8Xx0u8(;WJi}WKyppMYX8Mgeho4<(nK%9Y ziz)kO9G|uEPsl0#X}qhhue4XSn$1ubplGL{EYG1KlUe z+WAGF1q2AM;0)MzY2xGe&7Y>Xeo7TH7dN*0cA{0_>F=9w9?UN~e^Q(c-t=GY{`2_v zdwXB_-+vTx>ipr-L)jC56|A55_fA!<@Pd7c6ZS`|ymC+gdktLhT08ty@4wIYRA2O| zccJMqi@iQSSuaFC{`UOLUcrschS2JU+wW)9zCXgBj{lYvGgvxr`u$%sBUjn%&Yd~$ zQ)F?^>FI2@xFh-x?5zrP*t0_s+~@jhw#VEyVs{?Bb?Uw8pT8{Md2XLAQaY-V zQ}8)_a%)GntAPra=*+FQP^ z^O(caJtN8VPUF`Ve}#;$>1toM&ajCwp6|I?tw`NYy}DM%=jXZ0+d~WL4d#s z*r(aQJ67pS&1nNr8e_jOMR-5keGwtzuw&p9Zw@%c! z|K4Sf$c=T(s_&Mj9Nl8OM#&&7Iw(OVYQdkUI`_c~pH@1qi_JJy{{9e$YD)aowNo$t za$TbW+Trf){qyPL=v`0O|LQh)D!p*K`YT71e0wLZDfa7M&f`zrh4XtC+Un0XJnNUTx=eFJ?DRuhlSL#n4ldd8cFI}sBvILv^-;4! zPED8lZ?0U{!qYuNNT$5p>xACdKVfHARro3XVsO)hdd{^>5?(fj@t z=QrGav&<*A%I(lP(W+%4udU7=XiMGTbB~u_ z44Sj^!{PGimW6+_zWwQakp6Y*r(VyBJDs05Z~qi&@mf4N;_L&-Ifvcf{=cCtuAtJh z@XyZRf3x0s-1%nj_Veq6`U?Apwuj3$Z{+7>GMmv6CLVc`El#uBKjX^m-3k}?Seh=p z|8%zB&usU5yPltmSvjR&{M6<}e~MpU{W8n)RQP(?Q}a)3b(!)w`8orr*MGh3t<~2D z&ny;KCqq)J)6a@+Q`Rp#8E>Di*PYGteE#aRtM;XFkN3^m_W#99$GC6T8S%Yamm6Oo1N+=XpPl(+quGT-)p*6C+&{zOLC_s!LKD(z@(rEpy3$7ic$?UrQ*ZJ(?k ztl4V5>|BBL|D0CI>ZBa=qwj0&^uD;~&1b!RHdV=WVS2fiL+av)-j|o&o^7>h4`aHj zc0%;)DOYgE>xKV)v%osr-~Jhf;oy@mmS!!Tv`$QBTHX6w*OtW{QrNO3_p#vX`!d$S z`!WyIfKKF?TYN7xKmYdY=&N)6ekLuLzE$fttNzjVwJlQuKvte`djCG0fm?Fz$%{*$ z`W+Tt!F^TjfauRGuYi9-Q}TCj&5sV)xAEBe`wS-~cgq ziu^5>eCPDm{MGZ0zJBoc=BDVSEWdSbt}}W71s~1 z-E=JwRL@;rRMQ>2`TfTa&-_dmP3YH!9Drk|`oFw7;;wAuR>{4Pb1@!2I=E}cs>*3f zH8P;WX7BQvv+Qz`KWZDNJSsCO_1ba1>Fu+qM~Ylm6eV3by+mF->*SF-6|?Y$^WKQ& zPtzCGq`Uo;zM8LB|MOK-&_0=6$#I8YN~>BPkG`IAEbQ2X`g=;C>Bl`&rmSbLebxBK z$n5$Hjz3cl{7qC=y^(&fthnRewuQR;mSwtfSnc`UBBy05!oyIe)p5FU9 zJ%2t8X8JnW8G2Ag;ZqgSp2FW(^$wZ-w$%Li7*wLgJ?oHVzWh{V_4kiKPPJk==AYFK zlgz&@z7k>Ez0>$knR8_`KUdgP6*jYge??RBtxwq(JU9?h_>=9aeo9Q;f}>}g7O*{f z8XorTXY{>-?*A;Jg+C>d_tZ?0mw)t8{-|;An|sH-8$Vf#ue;mCr2JIQtMGo&&PNXy z+VW0bbYk}k&b{D82HG|jIj(OwBzMhEvUkqqxwO0A>~*&0drnTp=pTXEpq5Rw-L(1q zH`mTuT;9xE{!7+=sbS3XfEDMPKBZfyuBu75^JqS1+5_Bk12u5KYoAagL5J8x+BBcu@e6#2O;*Sf(bL?w zU-yWfuH(#(lC)fVeCgL$jGFE|r;bZJmJ6u6c1yap@%E2&?K3wnC+ya&d;hs`p?%SB z9gTWDVa;U=TsP!-sA^2he3fpg8SqafXXBiZjz^Z#HqJ}WHmhW&m%TdhMPvWGzv^2i zt)9Q|x8~JDEsaL!?oX=EPdIkD<|p&s7$(q&f8l;j`{!TZzFoMLuW$37U&kEu+d{u_ z$93KR&7rx_j{DU7iJ+yBb(-zJs`lq`s7gGUu;l!wIESB;XXyU5Ri;CQRgz8|(a#A|QGp;y~B zPDz;0`tKo4?=82w zdBtvZu-^|0aGLc0X*&7m-mUk=Jv8++uW3F6c`&?F{mWN3(+?nfJ?B3SHPfhnbK6wy zv}$18XGtlh@3ETKywAj_odfNm>E{XCcXR>hOdPx1H`3-e*M>env|8@vdb7q)hQ}&a zYVLobb4KHj76T~Ti>&|tF{r6lY>IvRi$9NkY+qKhoaJ!ptY49Ssm-6%i@KMwK3zU% zVefXPGn?a1#Jta)HYMKfbD+KDmKn)Er4OBqj5+D)exLuiKHuJZmY}lA6xA}=hNfqEMc-Ua%1*6{^XXN zF0awAqmr!tw{x%h+s-2SxH zuaEuwx@etEQDRyA*O+fJUq9E2`*Uk%^0)10_ual|EdEMg?4Ri8@{dn%*Es(^5g+r2 zdEbjE^2hB8SDcXfRDN%3(1JhjdcH2R-)dp?)VzLLz|94J4CQx~My%t!eEHmkv{TzR zUgrNl`??7;*-k%`Wk2)D zeQ1?Geg62GS*1_Z=^6?gE{sWi>O1bxW)M&P_(rdGBvXzv8wlxAWbc z_Cx-<^(p;hRSW<0?PgtHJ;i?IA>Y+nmNL&ZUOJ@nF8;=6Z9V5c=P7@SXR$U9Y&%Y0 zznpM;;^ke|AK*pSw#zG`o%gD@?7OG%{)Dk~*n|x;gL3D6iL6U){@9~X`$!;`oByEn`JvL7 z4jz#b*2>09Cfl^iGg_EK*IQfm%Wjh6&r3U%WsX@q^?x~| z{8Pi`Z*Mu;K3RWFcxT~U4LZ#WyxnGw)b#mZuYEeOwlI5N-xm!}Rc4Xmj_WcyXX3-J z^X!;>_$QNy7ptuF>F@73L`xUT@t-sQsO=mSdb0doamuv&``Nc9Ov#^b-FR3d_}`bl zN_BpVDf~~rC$ybKtQ*}^ll)WkdFb|+x*9i=`B|z$0v~jA3YxlqiphT-X}^4Lfup;| zeg1zN4>_$`&AQ)6B~(<DQPRUp6I`T5SZON)6)(JNnA8XZb zl{ZdFU8s5g*C*d8_EVGZon+>F+W+YAPD{R+_l0}eLA!?bNpse|Ss}e(efs5Um;T>X zQ}i1XYU>%6yyLq$f0dJIPrKnER$HedehI>{l9yI>)k$2rQF-)~S&816%iACA6t?R* zboIJOf2BA$6p}UMg{Su)?>fDH*SA;u_Lwh;dYRGk>8o({waaxb&&$m*v3$fXlUuZblyA>Ua8Cou>U`rS-kbxxGJaEgvY$Z^@JUFfX9a zZ2eB#nQilvbSxhG^sFtayW=hSpK zx6kJ+cli0(f67alhYvi}=Uw+@Eis6*on@Bq{!{CF$+1uB-H!w8K>J)(cWJ~HoH`%Y zd*|-GZPQnl2fezNdp*u^C5t;d$Ehh>*PeA;FuC>9^ROKoo3yVl?p@l#>8|mvO3tl* z^(WRT_S60*%UQnsbLxSTjI%7v9jB{_VKU0>Gj1+ZpAFBsjU3)XO~xm9{996 zjs4zJ)>j!`J-)Vbiv5kU_iuh{{yPWiUhNAh`00?}X|Xz~EA9A+D$l3UVrtWlywBr% zdj5@8ZOkeERXlm8Vl?(2DwLfgB3WXd7x2s?{$HA6f??hBMUN`}wm7u?D7qp7D)a;D z+BFuw+7o-qU&`^zV}}KQD#h2CT$tVHJ2OIT=KQ3ds5UqC*K>rP?w;)oD!=l1_6cb< zyWQ;a_&deptAKX%T%+Y1|7`toLCSFd-zffP>>BaMEpL7|Jr*M_1sR_EHD!I_*@b_S z8t(7x%wNiKZ1aLYKgHI?7qqWonEh$%{7V8GlSQ{X{B(Ka^ZX+BZ;@_(rRb>(yZmoT z=DojiJBFwnlw_{n_Jh<8O!MvQwpAL@)fa z6J&1Z6n*~l?OnIKPk%RW|CBD;cVFP-NaA<10N?tN-5*yi0BQ0LBN{wZczpT@a`N4;0hJl@awvHSM?4M%UwoRTl^3wb`n z-EY?mXQ|!yKAY`6RQ%0%>Ot?998bgjFSO0u*X#Nw#Q(y(9De8IpVuyLf3|WdyGO;Z zuthb=w&yBuMnsjyc^}~F-gz!pc2Pp7PpaUeHxFLdUh7_Hb#$Wa(kjI#S&dh%`ZxCE z?bJ@RzZd4zbuS?5-?q3VC;y!*@_Nwy(|-B6;OmTEWxKAwI{IYw((j>X=jZ5qFkZuc zd3)i;8+SOT#MkvM5>Zl}v_&a%(`WuD`>k>H*IM1r%~@}M;>nvo#oT$jKb+WTwEtXi z@U5c{>dvj*9sN@?@kFqER?y;~b6Z8Y7c8A*TGvJ}X;i4{ zr|nMm7ygJ|dY@&t=lQw$>-pAi{(OUxUpDk-c7?p*BgXW%w*z^emcKlBw(ywb@jEi7 z-k1OM>-;oV;n0^4-zSl_dFR4c(X9bHZuRe)u-aqYom2i7|A;@jd!pPtM{My+xTt$hoDBO4-I$@#V<)LTIe<<`=sC3u#+sn(#pG>KHrYOHOyT!ou^^Zkd za}}3;xl(^qoO!*H)WxmVr`){E?d#lm|4e6h-K}F^nX0k5WHx_tFK_Q<#k2eE?@2^m z`*zo9TE1vcxVy!KD?DHKZtpc{JaAX*di^QgoDf~3tXD$o)vi@GreDbw^{Gvoap2&m zgP#~T)G+ACOPv1{J*{9yo3z`xWi@GS`I#9V37h^n%h(lf_DNdh%qV3xVN&$cpdOoP z6Mk%w`RDSo`|H9x>zsPluTBU#^<&F~d17j3b*DIPu9@^iMQ8qwGL}Q%8znkB(v4A6=a_>(P^2@*dDfD1Ssf&qm!LGBy+fU84iN500CepQC_0FZTIE}cKdBJ=Ls*x zm;QROF?W;b0iS2r(hfaz-gca?fBpXKDMx;R9F`_{I(&7vW~ANYcbz&?$KJos%iDK3 zYpJ!6o1N^oKjqU(D{W5abEk#5@A$rA^TOk$XRmLoS$*nEXza2}TTir>bWhhctFm%A z>G!ZJyl&BUSeQMSQup&fbHdM_{bt7B4W{XLymZmA-@K?p?T_EI^^ad$#C1G8d|;{i z|L8{>os<2tPm8m>zT5laPnNUW>aCoCE^CkI*C$P@|7;gMcUr{i%?pEXe_E?0U8nQL zWbKNhU-@^%*&bOPdb9cI=aAYcZ~w;Tr_E296Miy8*cmXMe*Qg8g75pGDS9@EI{mWK zILntzmwkNsUa7{fGLh$B*8V!R zWqH1_y07o+HHB_Y^R}wiKMLO`QT{bxztqBsadkgWO;!;*v)0dsIqNQi@!a@*v8k75 ze%nCD1FoI_my|?v8{g}dj0$I zDB+ppdgDj0-p1`&IAQPYso}*8r`6R{cfPl_t(~2gT4eP8l5MTFv8H8h^odVTJFhxe zc}_gE)nNXP<@sxW?DfBIHec-0=9ZazJ%g{k+hLw5wNBxTi1rhm^TNTaP94d3F1%!x z%Ub6}43)Cg_cl6Lt}T}T!(M6KyYIKXuA};%DY@dj@)=>-`aY0uTT{@2^+Lb^M{9UPjodF8ETu zak}Gw?|Da7NmtFy+HOB%zOkiA{jDv(#X>#q9O6()5Iix>>%@dF+BZ z#bb5CZics)X8GrQG?~BS?r&>Hub8b_t2z8uzgndhVaLGWeZ(rV&QvE{xopDb!v zbpA~7tjp_9ewxabZ8u>~rOb6%`%PSor|r2;FW;4sdsgn~_K@=-FTa!=GGpz1BKhgb z^3rGK8M`5Z(w$slCpNY(BHE+K7DncYh*c;7b3sa46%Alv1>W$B%Yv|ISn@XmIz-C+M`U{VYq_ z@JBg&bG&)Ts_7>`Yug&9&sykbCwp4`kA-eV%;9D$*_bzfD)i=Plyzx;TgowM%ejYqEb)|ejr#K^#Kdj8zT<^mZ$4K zKl43rUAE}ASM8PN%G=A6mp$3@s!c9|cX__-uXTR+%Wi&}t-RsPc~6}wKesO4Ri66p zbb9Tw&dv8zbAGyszEIy(da_gdGRM5>A)kf+JYcu~5&7)=uSh%Dy|WqPW2VZ!vHK;) z{`*zlhCiD()%=UMif@m!TYk_(;?c>yM|^fEtrpnu$MBZPu7&%2T0a^tt6D97dS2ek z>-pYVKd0!_yZtHH}9=pnigrg`sAnC?*04!yjp$U?*E_g`E_Bw zi;Ryv{d)fT^w^90_TKsz^EYSxzP}~&wn{X9#?bBtA__yiV>ywk3pRSMI&p+d-_4RXWzRy}-SMlr3qmTLXYyN)C zU$ygdxBk9AUu8Z%-~Z?P`ubU!Hyix!{{4LX{#i@s1kV+1E3-DNYFo2B;b+26{_K5n z)_1{%9gh6B$YoE$>OVUJHvT!K6?S&k)XF!r-TPOqEnu*atNU^N|NrmX?ax^{Cj?e} z*&(%NmEvlt9R^k4n(M&f#GeNW7R5^*o5#Swa7ONH1#1`oH2wvu3<*COKp>BOf$9R) zhNt27)2C18{(71nB*<`w&%vAFG&_V>V9lV*$Z-1n{ptDlU*)?+BzZ{hIKQv?gU!7X zc_FLxChJx3{IbL^hXssF6_J8-q+@eOB;8?Bsb1*g?MUaR-Y#xzLhlJnoa zuWS7SZXLd!u6;h#*;gR!x4e=3&%YdZ-d*{7dXH*s)~O86nA4BiN@qGpDknDUMjcx9 z)%vdQtdHO3pE(_%bV$gVPyfWb^2%xV_s!7WbSdejh!n$&6SkY~s_)FJn7Qml?Ujrt z@1*NeLN+Ox^fx?-{CCGRNF(SILm9t}H^7ZD)d+0^mWEMnVgG4VQcT7jIcBOw6e)caGHeD&C2I{X3zZ1-NMGe z=eKK)?dG)pCmokwlCkm ze=qmx?zDv;C--cq-FQG?`qTVdzT!u(?6hrj|NNP~LFQHDoeiu--0@WfyZP?FegE#H z^xfTi8V_cjSG+p)#V!3CLEC=1+@0}#_lC7U4wdBv3i7%9OjSSqeE*$ywbyqXe!uI0 zn0vnQ&bKow-IOIKE-Qa|d(Kzsmu`$fs|><8T)&@F|6?9 zQW16rRW%zcmgjhv-hO?nbJ6}8ZzGp@#m?Szcv|E&zoy9RvdT?~uQU>VHojNW_nh3Z zn#uZ|c5ipe{WI;IAu7vF_HJNE`C4SCCLiXf%AOGQ{?7u(oB!V4bSyEMU0?x9H8tDr zowGGD^Sc#QCZpE7(R|a%-_uyTpe|B9o$t?iBs2N!wm;Kv*?ONj=w`B^CgH|T`Q@>J z*KN1IwLF=de(=h?)|rhZxyjs<%+fX|uI5;&f8@@j$X%DMcNzzX&Ukj_$AtrDes_mN zT-e&39?n>?>fz4|X~`!TXI$7Fp1UtSvaa!X-^Km|pVE&o`L1SP&NXkEZ@Z^V9suY7TckW^V4%9B*gv?N08w_LizQ6Sk$Rng5)B zf8J*9AOCdz+gsP2Zg?7AY%}eB|B_}Sd9|PoHD8kIBEq)Rn_7!R%-y!LjwR2WUu?$q z2USsOc8zx@&VQP#m%+LE+WQop`xZY>m!B+cQEju3vp%xZ?3Zf(*6@a&XV3T}eu;LK{j#PKQisJaR9m0ByEC;qGN#$h{WB+f&QIf%#$VT>?h57TTECOY zo4lYt=&(2_=SH9V6u-C1^uxZILKpqmJExUisBm*`%=vlt;<4Yqt2ZuH>fh0sQTLDG zLgl+KvxUz%{1TYAt?%~B3r@c~&r@r0_Hs6P_bo3(Cnp-GwQSUh=RP9Ut(PNt>hkux zGxS33XRzA{c|q3Z3mMQ*2_UkTu}$0Gb2)g= ze73H%Z7klWV~)1`S$X1P^dASa-eypio3{DS_4VGcyLBmc6QC--28%qqT-^GvXWCtWffHwRW-Hsjdf@8>g((48=D(U z7#hGXZir@RSlrOCyrJRnlg8$j#YyLx(i`uh7PPMToFFu}@d!i2O5 zlO|8t_J6|dZ4++)pEPOG)TvXaUFw=MZ~ol*^A|2!ylC-~#nB9lqfHh^gPnZ1Veym0 zi=RAMx@`HQ$>&ty;Zi^_sP7)~;K-cI}3Zn>KCQw0ZO9EnBv1-MV#K z8pF12+qV7xzkU1m9XodH+_ihxZZOyb0()^qI z2M>Y3;Rch#4bg`eM;|`iaQN`y!%r3;escKmlP5=x965UQ=&@tRjvqgM;>3v)CqdxU zsZ*yOxOnyI)oa(T zU3+-t`t|EKZrr$e^X9Evw{AVUd3%D@?c29+|NnpI@$I{J@7}w2@BaP!4<0;t@c6;Q zhYuei?ujwq+54mKiWB7KH z;O%GfpDN$!os4~_w^POcR?6Qx`^T5!EY~zn78T;=YiJ0ekczM#~r0*NK&dzvc{cO|s>$SnG`c;e8&Pt1U zd9X*+TzO$;)Z*Ea#d7x5GcVrx^Kt$!v%^QKwjcWy-_y1{ZTX>#ldm-?+m-#8zgaK& z*vrJgq@I(@;y)xFJI%jsi_MQswuRPhJp1_<>!^FT9~bAp615Fc zd7mcsJ^7#iF3CricjkB-_ifvDa$~Y{+UyL2Z#~Z=pUv@|yW``XUh}O7 z_U~IE_i|P_Z(s6weUIeR851*n-sR4|T@muc<-S{9?(F+zE_XisuKGJ8@!qFr9)&LR z{m<^qu{GH|qww9b>;GiGho{$QTF>3}_q<-|v5%b74G(t*E889GX)jUT_rPTFotq&l z(Q`yilJ{Lz3P{S$4>T@HZu^s7btq?*j`6enpXbiS-Q3?j^Zl)R$F07GHTbKlj8 ztP`7UA8o6+lGkR)>2YrF#^CY?CyqUr{xf4@iRt63+ix4c%{<0$lvMLy@A$1N5ns+c z=<%LA@%Z~QS69t^IK6AO;O`CVjx4T>bvelOCtxGjpS9N`bwAJYoobPGbZ&hIlr%-%in(TUe?;;GdC9Bm(dgbQTOq>VC@-;s^au{!bSc|4z^3a z|M1&JIlQs{Y4*40lKNfGC6BWoKAtu=JGd`3^y9~qH=cZG>9=~^?&kYh*xdNYs<-E3 zXW54pTs6BiE#r3e+_(F_tvbMcMY2t@degaEX9a>aYvq={pS(Zy-(jBlX(}lb*IZ}c zlwS4z*%SS|w{xoNw{6?z+fX;nezuXAwDi-c)3bYbPKi01yP;Q%^JiS3@w?i!s{fa1 z=N+^4kDiw3yl_KJ!A0?X7KJCCR<XJ6XADyM#GzS}R(#Z2!H_7t6+ab24y**7zW?-l3AORplL%hwync$!SB zQuwvqIqFZJq~*Qj*aV^bv%5}O{kh?C@sU$eVTzHYesb=qpGVfu$!`z&x5WSX?3@3z zP8xp@t-AF5qs`%iagpn$R4K&&alcpGS2U6DtelkOx6iHzXLdi0WqK~1TC+G{qNHc_ z+(t?5gtlg>e`3FG&RqRl0qycX9OlExUE%TGB#+g5iv^6oW5-Be6zZ^JNI<|t=#W*T6Xcg zvkLO2NyiRNTX4fB=<4b%Zwxn0e084ZQ=oF1&Recq{d>8>Gk+#uSugoyaoCxN8&)ZQ z>=tDD&Ro4^gKM;TN}gzp>UN2uHN0A9T+G@mvMz4O`FE~Na^1NzAI=?r^sPU14&SH1 zCP{Oj+t&QXk}DfFh89hYNm?@N%D2Fo65VePemV5j?ekZQG?5eT)eaxGD#`CV)-z?< zTEq2|uEb;;ZS(rgAKlY%%V&n+m+OrS?$yN3dN`9`HQm|HYn|~CNgdlcJH38IrmmmA z$#S`=n^kSx%NMzwipC4gg`BNbEXD)az`FeSg%dT&I?_!RsKMOn-b~Lo8Q<3dc zsk4@G;;{+(*}E>geP;d|-dO$Id7tp1~dwt4^=cAg%{5|!@!_^+9)k1ZmD71 z_MGgOHV5403>J48mbo8Q+a+ymz-;`c#P#yUbta(Z$CK5C8?<{t?GnCuKFMrp32t+b zFq~0f3rRVaw0l`5<9dGGnEPuLZg=12-V#*UaYlCQ7Vpc~{H5)?JGL!g?LSZtN>I|L zw$3nm9H|^$v)0Zk<#wiJk!#|C<&yKh`y4F~E;OFfV(|V}tFGh5$|bYXbaG@jxn}TN zDTfQJ?~q(|=)fzZ!iou<|fU$ zs`6bw=i-(GtIuJqX%f6Id)Y5DZz@$)Ec&~%FUO+zeplJiH|{z27ai$2`mLc-?sc2k z_WHedEpFwcJl5HCT`%<28TI5gQ|^Or&aT(tnG%rBVw|?cd};9OwrORoI@>xdn^&-& z*{)@9IOjx$&Gpw|GKWkaw`EqB=b6ptI&tm%`oN&{j@yPa%%acsNzOd+EON;#qfn2V zX;0D>*P8H5F-?1+@Af_AZ>qv$Ki0GvyfbU(YouK-(dL|Jo|Ymt?QPe+(CkUur!3-% zng2$5ZPXb9<@9s;-U|-hoTAK~xioRXvaQx6=}pOPaWyBDEQ96N zzw`@FY5REQNXChbm@_xl?_C`2+2K>Kmu~rbd2d^>=njqJM|ZAVbs)9aZS}RQ`pTOs z#f};GH+E?ic#G*2inKD;r-fK^8D?p*C9oMX7cx7x`njxgN@xNAV&xN_ diff --git a/doc/qtcreator/images/qtcreator-valgrind-memcheck-options.png b/doc/qtcreator/images/qtcreator-valgrind-memcheck-options.png index a102b61367a80c704bb4ed3f16796064226b7abe..8855d7a6d8562b9529ebc490343555338bbf44b9 100644 GIT binary patch literal 6053 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 literal 28803 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 diff --git a/doc/qtcreator/images/qtcreator-valgrind-memcheck.png b/doc/qtcreator/images/qtcreator-valgrind-memcheck.png index 8bcbcbc404b044e5ae97feb6afe39163eaca754b..8131846ef53a06708367e77047b9557d9e9877e3 100644 GIT binary patch literal 2347 zcmeAS@N?(olHy`uVBq!ia0y~yVBE*Rz)-=#%)r2~Yijy21_q`b0X`wFf`Wp=!ongV zB4T2qVq#)q;-cc>;t~?#5)u-Ul9EzVl2TGq($dm0GEy=!GP1HVva+&ra&mI=a&n5& z@*vE-JAcj@IW)dzt9 zef>OrGY$QKE&~wAGYIT5G&D3aGBP$cHZ?UhGc&WWu&{K|x3;#nwY9agvvY88aCCHZ zl9zXqPjqr}a;n?v0&=Sh2(;{Tb#--fb8`zfb9Z<5@bK{T^z@9e^z!oZ_4V~jwDZ@~ z^Y{1n?>Z0|7#I{36dW8J5)u*`8X6WB79JiR85tQB6%|$J8WR%}8yg!J7nhKbkSH&o zn3$M2`$AGuQc6lns=R!vOG|2MYU-kWsf%u8ghWn^SzwfpDl>E$lHm8Y+t zXJC-G>{dZRK|x`6%`e=wY7Cl@^wy5bxw(OiFI{bXV-1rTDSE= z)3Su-=H?a``4*SdmeiJ(eT!Q5?Q7Y0tFyDS%U`c6K))-{psQ(;FowqBUM^}>aHEiU^OrGgx|Z{NOKi}u~xx9`@i z16}?Hx&jW|T6*BtfdjX0U6`E+c1YcY3$rg=*m~i@g{lApF`(}_bIZ#Q(CXd3nE?AoR=!Otq-)T~&YPM;vp=od!M?!TzLKXY$d z*-cK4w2zf`^XDeso7tMU@AtoFwd_e=6JDHsY^cg4w3Si*hrkC}@0FcQcJD2V9&{zy zz3cq^Ugp=&k-lfY2bf2ud|CeYj=;~_ zIop=}_!0H(is4bgPdj7m_B+@u|J=ITqPeDTlF;$5KTURV>#y5co3*0Y`tdf?TfgV$ z-ZbaB_bxhj*|XCxmbc})-4hE4yyCxY{`*?<$ff^p87bLKKmA_(%=4P(4>$9E5?!r1 zMd#p?&06ngiT!%AZ0(vkqIV8O>(xyEH|u?;*u5(?nZH-HXv&96Rz^Fx2HM}O+t({U zh1+wsxzNNbd*>-X)zqE+t!kEdm5qz(%6pG9(|A*w-+nc_TG_pBR)wn7K2`6uGc#(g zt(+sc?~v@j$u+7UW~Z-h>f=T&B{FJb$vnxDPcw&0XHuhXr% zpYOFU3EsSJua-agsTps)&zeaRvhlI5nnw>7o^8dfQ+94BE}5mC>$r_w?hJi+x^ce{C@!v|MKPNXOovIZyk(m?$14{b^nxX z=dFdOW!>8K?Ck1JWG>0=%g7@?zJ+c)JKZko&nM<3o*I`#{k7)@sNJ0|(B;2i z>!iEq?i{SS=N0+<{_E^j1+V`;Y89yA+~`=Fe_~oeTc`8mJe zzS94?rQ(%P-J=iocAsmWlyK*p{`u3@-ThVdoY^7wYkQ_1__%EMSJsawy?A_Y|Glo( zC#`JPcW&=hd6{;5xtV__nljn3)EsA%7rOfYd8Cx)_qgD$8OAO7aZ9Gmv*$NV=eR$| zBhspvFX>zZe+|cv2@gM=z56voW#7)Zw-3t~ygc}J$E3$c)3-l=8%I9-{$F$b(?qw*<#*5VZLwE7UH_!kSNzn&C7SC$ zn@0X)onFfG)5Y-j>05Ug14V8s{a)?%YtiaEaTAxR1ZS$A?kh8Vo{$_idDG!)nOM#0 zP1bBj?kwJ_WMua7(^DBGrJRLTPbS<`;m`O{#3wMb^lgsomek4%r0S>nZ>>tDUN`gx;}=aq<$Xa0Upi_&B6dfpiI zp_gA?v&DTX>)Ou!!i-V2%w6g1E0^xwQn(@TX4d(vN&kN>3XDW2u42fs0nf2h8%I_`#_aiwWqDka~K#H7(8A5 KT-G@yGywpr9b47_ literal 2345 zcmeAS@N?(olHy`uVBq!ia0y~yV4TIkz>vtn%)r2KtJqS@#*W&HRqonzVYnNlP3!<-k*Qy>ZMDU&fhz`Wbf%$ zcaLq`zJ1BkWw(yZzj$a)WkpRW2;O3R>k1nj6v0`~y{o=IhSqIilDvs$*ifTv- zE9osLo>P}IvnF9~K}2gx(Cc4+HsAfW;QWWbf8V}({rcPYmuK(3ym9y8#C`X!Kfczm z?BtG}N4qy3?3=yo*_G{Ek8dfPu|Bze?YTXRqT3d%xHiANXiiz#)a{cdt#9Z*y}7%s zuf3(YJ+-)f#nRTy%;qUIO;!1ob8;&d^_L!*TToDxx4JjY)IZhQGC3eLu_ikv+AJ{U zh+Ddg{`t?}UOc?ty6yIwW7j`?y3n)y^qj3HHy=MXY5lRH#YYdGIn=)B(9@^;=WN`Y zIc-PR>oZ?ITqk7AOlLLZXO#%({182mzFRF0PjkB}YxB2t;-~F#Y`;L8i_U6-tr=NDb z{#dZ)$?re6H{ZB@{M6N*7cbwwb8hj)v@hM zm)CTit8QsSuf7l8&Jm5M|zgWcJ&HSaE zZ|}FR{;b)4jGgV|9Z?U-eLwzZ9-d($y8LJxQ_BvEUa6%k-n@NVdF_FAmyj3dEH?=z zfm24TM-K4(jhU5p*Xm%pY{ROc)iOWM9F>&(v)5#)xBqRSQ&;D=!v{_mx`){0G&{2#z}MqsX*jk<-6`rmuszv)k1_UdI_-+O)& z+1XEaW!z|exN|b|v>zw=Wp^mNe{<36-k#(s^J~@@FUeN;p=!i?Cwrcd%Gqw+zwfnK zeqH`>>iOj?mjw+6yga5mW)*rxD!-p%sJhryD539#N$+u8@6S=&ZA=etFTekEHF-z2t^t>+eXOlsY6K<8rSfoHxm<7OU? zUw?PP-hYu-Ki-|+cf-6|U~9w0%sI#BzMX1%EqwLW9cHqo=T&cA?TosxYKPyvDeUf1BJ8pSHSs%}Z00ru6g#$IV+eFI@92gkhG;m$OY`O>#L4IwmP4%(GisSiQUO z<%Efx_ij!69Gw?$U-fp?oQskt))el$t!w(aGECvcOxL9!z23x3c(!A+RD}u)!}P}G zyPEDdFB81EQ`(AGBh~rgO{LX~f>ttURCK8^#4mkVJ?(k~GB5)R`Gty(ZsW%=ba!hROFu?~gSuoR>J$R%Y^_?`c!KPkZ=&nJ@8d(v$aB z4?j-%Fn{SxvE3ergBky3p1Liz!M)5_e4C&`eyEe7_zMonV-K}X-AB}7eaxp^ z*A{;HY+sXpTk7hKcOR~LnKt};sJh%@nVt&s&k&`k6U)z5Y}q9=H@|yArt*XChYR$y zvuB9TP&^h>bV%CN$hzy1f8G_2GX-S^7H9vL+<%>~#mIBGe4ZrF@vHk0ch~OAtK8z9Ro!_ZG$rlz zspMM%GbSE1nKte1tE(E>KV@4V25glI@{TpHm5NF_7CvLcq)pmaRzJL`wJ-60OS50I zbcn>A1x2S%c1Lf%nR?s%rtGS#YtE**&+E%Sy>5c|{i|<7{v1-2S8EHreIz~PlZ5HN z1O{p2woQB`v;JyZ@7x=+U|#V4#HYU;ugWD>AA>zPv4qbVc$6AjJJPVcP~&^%XQldmn63jmb@>^{;^5gss6Y#RW!J{ z?`z^jl}T!;S+l1s_IsW-@yQN5Z@(wYIjx?>?6{RQhb^(iL`6II*Sl4pJbjCvZcWSi zR$sozw_;I^ze2a_R)t8}IMtKoWhI`UeD!8MQeXel;_rtSY=!&o9%pGeY=1kZSSEne zE@FnDhwciKs(?&`$qO!r=&x$OvZyNXOvsX~8OvtK8TcBW3AvHAXhL(V+*?sTu^B5Z zPH+S!_RQq)6YQDEq0N-6F{f=~fz+`>nG)Q~6Lqk1?6$cdXJTMrU}*lccKOAPB1y4_ sceR!BzLvUXx+Xi~`i6Chv=9hnop6e&{o{hut3XzJy85}Sb4q9e0Nii- + \uicontrol Options > \uicontrol Analyzer. The \uicontrol + {Memcheck Memory Analysis Options} group contains Memcheck options. + + In \uicontrol {Extra Memcheck arguments}, specify additional arguments + for launching the executable. + Stack traces can get quite large and confusing, and therefore, reading them from the bottom up can help. If the stack trace is not big enough or it is too big, select \uicontrol Tools > \uicontrol Options > \uicontrol Analyzer @@ -160,26 +180,7 @@ You can run Callgrind on a remote Linux machine or device from any development machine. - To analyze applications: - - \list 1 - - \li In the \uicontrol Projects mode, select a release build configuration. - - \li Select \uicontrol Debug to open the \uicontrol Debug mode, and then - select \uicontrol Callgrind on the toolbar. - - \li Select the - \inlineimage qtcreator-analyze-start-button.png "Start button" - button to start the application. - - \li Use the application to analyze it. - - \li Select the \inlineimage stop_small.png "Stop button" - button to view the results of the analysis in the \uicontrol Profile - view. - - \endlist + \section1 Building Apps for Profiling Callgrind records the call history of functions that are executed when the application is run. It collects the number of instructions that are @@ -188,10 +189,6 @@ also use cache simulation or branch prediction to gather information about the runtime behavior of an application. - Double-click a function to view information about the calling functions in - the \uicontrol Callers view and about the called functions in the \uicontrol Callees - view. - Since the run-time characteristics of debug and release \l{glossary-build-config}{build configurations} differ significantly, analytical findings for one build configuration may @@ -207,12 +204,84 @@ options for GCC are: \c{-g -O2}. It is advisable to use such a setup for Callgrind profiling. + \section1 Collecting Data - \image qtcreator-valgrind-callgrind.png "Profile view" + To analyze applications: - To view the data in KCachegrind, select the \inlineimage kcachegrind.png - (\uicontrol {Open Results in KCachegrind}) button on the toolbar. \QC - launches KCachegrind and loads the data into it for visualization. + \list 1 + + \li In the \uicontrol Projects mode, select a release build configuration. + + \li Select \uicontrol Debug to open the \uicontrol Debug mode, and then + select \uicontrol Callgrind on the toolbar. + + \image qtcreator-valgrind-callgrind-toolbar.png "Callgrind view toolbar" + + \li Select the + \inlineimage qtcreator-analyze-start-button.png "Start button" + button to start the application. + + \li Use the application to analyze it. + + \li Select the \inlineimage stop_small.png "Stop button" + button to view the results of the analysis in the + \uicontrol Functions view. + + \endlist + + Select \inlineimage icons/pause-icon.png + to speed up program execution during profiling by pausing event + logging. No events are counted while logging is paused. + + Select \inlineimage reload_gray.png + to reset all event counters. + + Select \inlineimage clean_pane_small.png + to discard all collected data. + + Select \inlineimage kcachegrind.png + to view the data in KCachegrind. \QC launches KCachegrind + and loads the data into it for visualization. + + \section1 Viewing Collected Data + + The results of the analysis are displayed in the \uicontrol Callgrind views. + You can detach views and move them around. To revert the changes, select + \uicontrol Views > \uicontrol {Reset to Default Layout}. + + Select \uicontrol Views to show and hide views and view + titles. The \uicontrol Visualization view is hidden by + default. Select \inlineimage redo.png + to refresh the data displayed in it when it is shown. + + As an alternative to collecting data, you can select \inlineimage open.png + to load an external log file into the \uicontrol Callgrind views. + + \image qtcreator-valgrind-callgrind.png "Callgrind views" + + Enter a string in the \uicontrol Filter field to filter the results. + + Move the cursor on a function in the \uicontrol Functions view for more + information about it. + + Double-click a function to view information about the calling functions in + the \uicontrol Callers view and about the called functions in the + \uicontrol Callees view. + + Select \inlineimage prev.png + or \inlineimage next.png + To move between functions in the \uicontrol Callee view. + + To set the cost format, select \uicontrol $. You can view absolute + or relative costs, as well as relative costs to parent. Select + \inlineimage filtericon.png + to view only profiling info that originated from the project. + + To properly handle recursive or circular function calls, enable cycle + detection by selecting \uicontrol O. + + To remove template parameter lists when displaying function names, select + \uicontrol <>. \section1 Selecting Profiling Options @@ -220,7 +289,7 @@ separately for each project in the \l{Specifying Run Settings}{run settings} of the project. - To specify settings for Valgrind, select \uicontrol Tools > + To specify global settings for Valgrind, select \uicontrol Tools > \uicontrol Options > \uicontrol Analyzer. The \uicontrol {Callgrind Profiling Options} group contains Callgrind options. @@ -229,12 +298,21 @@ In the \uicontrol {KCachegrind executable} field, enter the path to the KCachegrind executable to launch. - In the \uicontrol {Result view: Minimum event cost} - field, limit the amount of results the profiler gives you to increase - profiler performance. + In \uicontrol {Extra Callgrind arguments}, specify additional arguments + for launching the executable. - You can collect information about the system call times and the number of - global bus events of the event type \c Ge that are executed. + In the \uicontrol {Result view: Minimum event cost} and + \uicontrol {Visualization: Minimum event cost} fields, + limit the amount of results the profiler presents and + visualizes to increase profiler performance. + + To show additional information about events in tooltips, select + \uicontrol {Show additional information for events in tooltips}. + + To collect information about the system call times, select + \uicontrol {Collect system call time}. To collect the number of + global bus events of the event type \c Ge that are executed, + select \uicontrol {Collect global bus events}. \section2 Enabling Full Cache Simulation diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdocinc index f802f89f0da..22cab734906 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -45,9 +45,19 @@ \image qtcreator-analyzer-settings.png "Valgrind Settings" + \li In \uicontrol {Valgrind executable}, specify the path to the + Valgrind executable. + + \li In \uicontrol {Valgrind arguments}, specify additional arguments + for Valgrind. + + \li In \uicontrol {Detect self-modifying code}, select whether to + detect self-modifying code and where to detect it: only on stack, + everywhere, or everywhere except in file-backend mappings. + \endlist - For more information about the settings, see: + For more information about the CallGrind and MemCheck settings, see: \list From 51c2ee871488815f23d93d90380d1c9f9e8b1b8e Mon Sep 17 00:00:00 2001 From: Christiaan Janssen Date: Thu, 18 Nov 2021 15:01:50 +0100 Subject: [PATCH 37/41] McuSupport: fix false positive when detecting upgradeable kit on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cause was: mismatched slashes-vs-backslashes in path comparison Task-number: QTCREATORBUG-26584 Change-Id: I74ec18d33b8138ecc75a5b4928bd67f856b4c4c1 Reviewed-by: Dawid Åšliwa Reviewed-by: hjk Reviewed-by: Alessandro Portale --- src/plugins/mcusupport/mcusupportoptions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 858b0126eb7..4a21ece87bc 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -1046,7 +1046,7 @@ bool McuSupportOptions::kitUpToDate(const Kit *kit, const McuTarget *mcuTarget, const McuPackage *qtForMCUsSdkPackage) { return kitQulVersion(kit) == mcuTarget->qulVersion() && - kitDependencyPath(kit, qtForMCUsSdkPackage->environmentVariableName()) == qtForMCUsSdkPackage->path(); + kitDependencyPath(kit, qtForMCUsSdkPackage->environmentVariableName()).toUserOutput() == qtForMCUsSdkPackage->path().toUserOutput(); } void McuSupportOptions::deletePackagesAndTargets() From d9addef725a2cc83d282967bc3f5fc18fbe83480 Mon Sep 17 00:00:00 2001 From: Jonathan Mouchou Date: Wed, 17 Nov 2021 21:38:29 -0800 Subject: [PATCH 38/41] QmlEditorWidgets: Fix missing character escape for transparent When selecting transparency in the qt quick toolbar, the text inserted is missing quotes around transparent. Add missing quotes around transparent. Fixes: QTCREATORBUG-10769 Change-Id: Ibc5d10b2276b44aee8afad60c33f0394a7d75ba7 Reviewed-by: Thomas Hartmann --- src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp index 8202c8be84b..3e3e62c3d58 100644 --- a/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp +++ b/src/libs/qmleditorwidgets/contextpanewidgetrectangle.cpp @@ -209,7 +209,7 @@ void ContextPaneWidgetRectangle::onColorNoneClicked() if (ui->colorNone->isChecked()) { ui->colorGradient->setEnabled(isGradientEditingEnabled()); emit removeAndChangeProperty(QLatin1String("gradient"), QLatin1String("color"), - QLatin1String("transparent"), true); + QLatin1String("\"transparent\""), true); } ui->colorGradient->setEnabled(isGradientEditingEnabled()); } From 727d1afa6db4e34deb4dd0684f3fa2705aaa117a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 18 Nov 2021 16:58:39 +0100 Subject: [PATCH 39/41] Doc: Describe "Find References with Access Type" Task-number: QTCREATORBUG-26278 Change-Id: I08dbea1dd505f818ba2e4e5809e9ca6f37409750 Reviewed-by: Eike Ziller --- doc/qtcreator/src/editors/creator-code-refactoring.qdoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc index d0e569543ec..00114ade7bc 100644 --- a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc +++ b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc @@ -57,6 +57,10 @@ \image qtcreator-find-references-to-symbol-under-cursor.png "Search results for finding references to symbols" + To view the same results color-coded according to the access type, such as + read, write, or declaration, select \uicontrol Tools > \uicontrol {C++} > + \uicontrol {Find References with Access Type}. + \note You can also select \uicontrol Edit > \uicontrol {Find/Replace} > \uicontrol {Advanced Find} > \uicontrol {C++ Symbols} to search for classes, functions, enums, and declarations (including type aliases) either From afe77aa646408700d064025c2eaee08133dd2fc8 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 18 Nov 2021 14:36:10 +0200 Subject: [PATCH 40/41] QmlDesigner: Fix 3D edit view rendering logic If we have more than one render in queue for 3D edit view, we know the current render is not good, so do not send it to creator side but instead wait until we have just one render in the queue. Also changed the timeout for queued renders to closely correspond to 60fps frame time as there is no point rendering any faster than that. This also means we never need to queue more than two frames to ensure correct results. Fixes: QDS-5467 Change-Id: I49a3a7aeaff24484f48784d0391414165ce50748 Reviewed-by: Mahmoud Badri Reviewed-by: Qt CI Bot --- .../qt5informationnodeinstanceserver.cpp | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index b1c211b6f84..545457ccbec 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -893,19 +893,31 @@ void Qt5InformationNodeInstanceServer::doRender3DEditView() // Key number is selected so that it is unlikely to conflict other ImageContainer use. auto imgContainer = ImageContainer(-1, renderImage, 2100000000); - // send the rendered image to creator process - nodeInstanceClient()->handlePuppetToCreatorCommand({PuppetToCreatorCommand::Render3DView, - QVariant::fromValue(imgContainer)}); + // If we have only one or no render queued, send the result to the creator side. + // Otherwise, we'll hold on that until we have rendered all pending frames to ensure sent + // results are correct. + if (m_need3DEditViewRender <= 1) { + nodeInstanceClient()->handlePuppetToCreatorCommand({PuppetToCreatorCommand::Render3DView, + QVariant::fromValue(imgContainer)}); +#ifdef QUICK3D_PARTICLES_MODULE + if (m_need3DEditViewRender == 0 && ViewConfig::isParticleViewMode() + && m_particleAnimationDriver && m_particleAnimationDriver->isAnimating()) { + m_need3DEditViewRender = 1; + } +#endif + } + if (m_need3DEditViewRender > 0) { - m_render3DEditViewTimer.start(0); + // We queue another render even if the requested render count was one, because another + // render is needed to ensure gizmo geometries are properly updated. + // Note that while in theory this seems that we shouldn't need to send the image to + // creator side when m_need3DEditViewRender is one, we need to do it to ensure + // smooth operation when objects are moved via drag, which triggers new renders + // continueously. + m_render3DEditViewTimer.start(17); // 16.67ms = ~60fps, rounds up to 17 --m_need3DEditViewRender; } -#ifdef QUICK3D_PARTICLES_MODULE - if (ViewConfig::isParticleViewMode() - && m_particleAnimationDriver && m_particleAnimationDriver->isAnimating()) { - m_need3DEditViewRender++; - } -#endif + #ifdef FPS_COUNTER // Force constant rendering for accurate fps count if (!m_render3DEditViewTimer.isActive()) @@ -1981,8 +1993,8 @@ void Qt5InformationNodeInstanceServer::view3DAction(const View3DActionCommand &c break; case View3DActionCommand::CameraToggle: updatedState.insert("usePerspective", command.isEnabled()); - // It can take a couple frames to properly update icon gizmo positions, so render 3 frames - renderCount = 3; + // It can take a couple frames to properly update icon gizmo positions + renderCount = 2; break; case View3DActionCommand::OrientationToggle: updatedState.insert("globalOrientation", command.isEnabled()); @@ -2228,8 +2240,8 @@ void Qt5InformationNodeInstanceServer::update3DViewState(const Update3dViewState auto helper = qobject_cast(m_3dHelper); if (helper) helper->storeToolState(helper->globalStateId(), helper->rootSizeKey(), QVariant(command.size()), 0); - // Queue three renders to make sure icon gizmos update properly - render3DEditView(3); + // Queue two renders to make sure all gizmos update properly + render3DEditView(2); } } #else From b56904170995694c6139ab16bbabd8b93dc03eb1 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Nov 2021 16:13:19 +0100 Subject: [PATCH 41/41] Doc: Update Meson screenshots And add alt text for them. Task-number: QTCREATORBUG-26278 Change-Id: Ibe40f284e3162a77982fc3731313a6f2bc9492b5 Reviewed-by: Alessandro Portale --- doc/qtcreator/images/qtcreator-kits-meson.png | Bin 0 -> 27024 bytes .../images/qtcreator-mesonexecutable.png | Bin 41877 -> 10178 bytes .../creator-projects-meson-building.qdoc | 8 +++++--- .../src/meson/creator-projects-meson.qdoc | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-kits-meson.png diff --git a/doc/qtcreator/images/qtcreator-kits-meson.png b/doc/qtcreator/images/qtcreator-kits-meson.png new file mode 100644 index 0000000000000000000000000000000000000000..23e1b46b59e07eb55aa19dcb08490fabaa87d488 GIT binary patch literal 27024 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-mesonexecutable.png b/doc/qtcreator/images/qtcreator-mesonexecutable.png index bfaa7cc1bd6c94e2a714465b03cbe113b4bb9a17..bda46f4f114908070333751351ba3214ed88f21b 100644 GIT binary patch literal 10178 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 Kb6Mw<&;$SlFpFsb literal 41877 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 \uicontrol Options > \uicontrol Kits > \uicontrol Kits tab to add the Meson and Ninja tools to a build and run kit: - \image qtcreator-kits.png + \image qtcreator-kits-meson.png "Setting Meson executable in Kit options" For more information, see \l {Adding Kits}.