From cca7bc98a9b031e5454406f33a42edae61d44dbe Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 24 Oct 2023 09:15:02 +0200 Subject: [PATCH 01/15] CMake: Fix deployment path Previously the path would be created based on the build device instead of the target device. Therefore when building on windows with a linux target the path might become "c:\usr\bin\..." instead of "/usr/bin/...". Fixes: QTCREATORBUG-29797 Change-Id: I13a9941b87b863f3e1b8420bcab230db1f70a28b Reviewed-by: Reviewed-by: David Schulz --- .../cmakeprojectmanager/cmakebuildstep.cpp | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 31a6ae23c02..370799fe260 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -775,22 +775,23 @@ void CMakeBuildStep::updateDeploymentData() DeploymentData deploymentData; deploymentData.setLocalInstallRoot(rootDir); - IDeviceConstPtr device = BuildDeviceKitAspect::device(buildSystem()->kit()); + IDeviceConstPtr runDevice = DeviceKitAspect::device(buildSystem()->kit()); const auto appFileNames = transform>(buildSystem()->applicationTargets(), [](const BuildTargetInfo &appTarget) { return appTarget.targetFilePath.fileName(); }); - auto handleFile = [&appFileNames, rootDir, &deploymentData, device](const FilePath &filePath) { - const DeployableFile::Type type = appFileNames.contains(filePath.fileName()) - ? DeployableFile::TypeExecutable - : DeployableFile::TypeNormal; + auto handleFile = + [&appFileNames, rootDir, &deploymentData, runDevice](const FilePath &filePath) { + const DeployableFile::Type type = appFileNames.contains(filePath.fileName()) + ? DeployableFile::TypeExecutable + : DeployableFile::TypeNormal; - FilePath targetDirPath = filePath.parentDir().relativePathFrom(rootDir); + FilePath targetDirPath = filePath.parentDir().relativePathFrom(rootDir); - const FilePath targetDir = device->rootPath().pathAppended(targetDirPath.path()); - deploymentData.addFile(filePath, targetDir.nativePath(), type); - return IterationPolicy::Continue; - }; + const FilePath targetDir = runDevice->rootPath().pathAppended(targetDirPath.path()); + deploymentData.addFile(filePath, targetDir.nativePath(), type); + return IterationPolicy::Continue; + }; rootDir.iterateDirectory(handleFile, {{}, QDir::Files | QDir::Hidden, QDirIterator::Subdirectories}); From a3853ecc444ba87506d16dc14cdbdaa1fc269de1 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 27 Oct 2023 11:15:39 +0200 Subject: [PATCH 02/15] Terminal: Q_ASSERT workaround Change-Id: I7e1bf06db437b523e8b06695c3b12f2562a73ce8 Reviewed-by: Eike Ziller Reviewed-by: David Schulz --- src/plugins/terminal/shortcutmap.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/terminal/shortcutmap.cpp b/src/plugins/terminal/shortcutmap.cpp index 436757fd256..4e17f0c35e4 100644 --- a/src/plugins/terminal/shortcutmap.cpp +++ b/src/plugins/terminal/shortcutmap.cpp @@ -550,12 +550,18 @@ bool ShortcutMap::dispatchEvent(QKeyEvent *e) << "\", " << next->id << ", " << static_cast(enabledShortcuts > 1) << ") to object(" << next->owner << ')'; } - QShortcutEvent se(next->keyseq, next->id, enabledShortcuts > 1); - QCoreApplication::sendEvent(const_cast(next->owner), &se); - QAction *action = qobject_cast(next->owner); - if (action) + if (auto action = qobject_cast(next->owner)) { + // We call the action here ourselves instead of relying on sending a ShortCut event, + // as the action will try to match the shortcut id to the global shortcutmap. + // This triggers an annoying Q_ASSERT when linking against a debug Qt. Calling trigger + // directly circumvents this. + action->trigger(); return action->isEnabled(); + } else { + QShortcutEvent se(next->keyseq, next->id, enabledShortcuts > 1); + QCoreApplication::sendEvent(const_cast(next->owner), &se); + } return true; } From d0c61823a9ebe76a303991a5f1b05e6bed0fb068 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 27 Oct 2023 10:27:06 +0200 Subject: [PATCH 03/15] Update qbs submodule to HEAD of 2.2 branch Change-Id: Ib0d39635b334757a6d33d40cef50d9e56ddb89e8 Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 40327c8277b..d99256dd794 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 40327c8277b904944dbd9a227f9a819e3d53666d +Subproject commit d99256dd79460628aafb5fa34a8dde7761ff7b1c From 8f1c8790e23d9170a5a598762284f56b6e02e3ac Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 27 Oct 2023 11:17:51 +0200 Subject: [PATCH 04/15] Update change log Change-Id: Ia079c3c93b0b33f93fa462cd3cac634f158ee2b8 Reviewed-by: Leena Miettinen --- dist/changelog/changes-12.0.0.md | 64 +++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/dist/changelog/changes-12.0.0.md b/dist/changelog/changes-12.0.0.md index 944a3451aec..efbecf4c1b0 100644 --- a/dist/changelog/changes-12.0.0.md +++ b/dist/changelog/changes-12.0.0.md @@ -71,7 +71,15 @@ General without a unified menu bar ([QTCREATORBUG-29498](https://bugreports.qt.io/browse/QTCREATORBUG-29498)) ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-show-and-hide-main-menu.html)) +* Changed the `Enable high DPI scaling` setting to a `DPI rounding policy` + setting, which fits Qt's settings better + ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-how-to-set-high-dpi-scaling.html)) * Fixed an issue with growing session files +* Fixed that the shortcuts for the navigation views could be stuck to opening a + view in the right side bar + ([QTCREATORBUG-29770](https://bugreports.qt.io/browse/QTCREATORBUG-29770)) +* Fixed that the shortcut for Locator switched to the main window + ([QTCREATORBUG-29741](https://bugreports.qt.io/browse/QTCREATORBUG-29741)) Help ---- @@ -90,6 +98,7 @@ Editing ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-coding-navigating.html#navigating-between-open-files-and-symbols)) * Added an indenter, auto-brace and auto-quote for JSON ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-enclose-code-in-characters.html)) +* Improved the performance of searching in big documents * Fixed that the historical order of open documents was not restored * Fixed that suggestions were rendered with the wrong tab size ([QTCREATORBUG-29483](https://bugreports.qt.io/browse/QTCREATORBUG-29483)) @@ -119,8 +128,17 @@ Editing * Fixed that automatically created functions could be added between another function and its documentation ([QTCREATORBUG-6934](https://bugreports.qt.io/browse/QTCREATORBUG-6934)) -* Fixed that the refactoring actions from Clangd were not available in the - context menu +* Fixed that scope names were considered when searching for `C++ Symbols` with + advanced find + ([QTCREATORBUG-29133](https://bugreports.qt.io/browse/QTCREATORBUG-29133)) +* Clangd + * Added the `Completion ranking model` option for choosing the order of + completion results + ([QTCREATORBUG-29013](https://bugreports.qt.io/browse/QTCREATORBUG-29013)) + * Fixed that the refactoring actions from Clangd were not available in the + context menu + * Fixed that renaming symbols could rename them in generated files + ([QTCREATORBUG-29778](https://bugreports.qt.io/browse/QTCREATORBUG-29778)) * Clang Format * Fixed the style settings for Clang Format 16 and later ([QTCREATORBUG-29434](https://bugreports.qt.io/browse/QTCREATORBUG-29434)) @@ -144,11 +162,18 @@ Editing of files ([QTCREATORBUG-29542](https://bugreports.qt.io/browse/QTCREATORBUG-29542)) +### Widget Designer + +* Fixed that renaming layouts in the property editor switched to edit mode + ([QTCREATORBUG-29644](https://bugreports.qt.io/browse/QTCREATORBUG-29644)) + ### Copilot * Added support for proxies ([QTCREATORBUG-29485](https://bugreports.qt.io/browse/QTCREATORBUG-29485)) ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-copilot.html)) +* Fixed the auto-detection of `agent.js` + ([QTCREATORBUG-29750](https://bugreports.qt.io/browse/QTCREATORBUG-29750)) ### TODO @@ -207,6 +232,15 @@ Projects * Added help tooltips ([QTCREATORBUG-25780](https://bugreports.qt.io/browse/QTCREATORBUG-25780)) * Extended context help for variables, properties and modules +* Improved performance when switching sessions + ([QTCREATORBUG-27729](https://bugreports.qt.io/browse/QTCREATORBUG-27729)) +* Fixed issues with the subdirectory structure of the project tree + ([QTCREATORBUG-23942](https://bugreports.qt.io/browse/QTCREATORBUG-23942), + [QTCREATORBUG-29105](https://bugreports.qt.io/browse/QTCREATORBUG-29105)) +* Presets + * Fixed that variables were not expanded for `cmakeExecutable` + ([QTCREATORBUG-29643](https://bugreports.qt.io/browse/QTCREATORBUG-29643)) + * Fixed unnecessary restrictions on the preset name ### Python @@ -217,6 +251,11 @@ Projects ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-run-settings.html#specifying-run-settings-for-linux-based-devices)) * Fixed PySide wheels installation on macOS +### qmake + +* Fixed the project tree structure in case of some subfolder structures + ([QTCREATORBUG-29733](https://bugreports.qt.io/browse/QTCREATORBUG-29733)) + ### vcpkg * Added the generation of code for `CMakeLists.txt` @@ -244,6 +283,8 @@ Analyzer * Fixed that error messages were not shown ([QTCREATORBUG-29298](https://bugreports.qt.io/browse/QTCREATORBUG-29298)) +* Fixed that `-mno-direct-extern-access` could be passed to `clang-tidy` which + does not support it ### CTF Visualizer @@ -275,6 +316,23 @@ Test Integration * Added an option for the number of threads used for scanning ([QTCREATORBUG-29301](https://bugreports.qt.io/browse/QTCREATORBUG-29301)) +* Improved the wizards for `GTest` and `Catch2` + +Platforms +--------- + +### Android + +* Fixed issues when `LIBRARY_OUTPUT_DIRECTORY` is set in the CMake build files + ([QTCREATORBUG-26479](https://bugreports.qt.io/browse/QTCREATORBUG-26479)) + +### iOS + +* Known Issue: iOS 17 devices are not supported + +### Docker + +* Fixed the check for commands that are built-ins of the shell Credits for these changes go to: -------------------------------- @@ -304,6 +362,7 @@ Jonas Karlsson Jussi Witick Knud Dollereder Leena Miettinen +Ludovic Le Brun Mahmoud Badri Marco Bubke Marcus Tillmanns @@ -317,6 +376,7 @@ Pranta Dastider Robert Löhning Sami Shalayel Samuel Ghinet +Samuli Piippo Semih Yavuz Tasuku Suzuki Thiago Macieira From 7891a7f5b43aa453edf362f8735684c61246b253 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 27 Oct 2023 12:33:30 +0200 Subject: [PATCH 05/15] AutoTest: Fix crash Amends 6b6d9dc21e78d10a4b637e234828e57604ab7fa0. Change-Id: I5fc2bd2b3788a660d038328f00e73db0ab25d7b0 Reviewed-by: David Schulz --- src/plugins/autotest/qtest/qttesttreeitem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/autotest/qtest/qttesttreeitem.cpp b/src/plugins/autotest/qtest/qttesttreeitem.cpp index de27cb089ff..68b50be9079 100644 --- a/src/plugins/autotest/qtest/qttesttreeitem.cpp +++ b/src/plugins/autotest/qtest/qttesttreeitem.cpp @@ -76,7 +76,7 @@ QVariant QtTestTreeItem::data(int column, int role) const return m_multiTest; } case LinkRole: - if (type() == GroupNode) + if (type() == GroupNode || type() == Root) return QVariant(); if (type() == TestDataFunction || type() == TestDataTag) return TestTreeItem::data(column, role); From 79becbaeac933d49d30fe3a92cff949851337b38 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 27 Oct 2023 14:46:31 +0200 Subject: [PATCH 06/15] CMakePM: Protect against accidental nullptr access Wizard summary page does not provide a list to put in failed files, so ending up inside the build systems addFiles() may pass in a nullptr. Guard against its access. Change-Id: Ia858f8029b1b840cc341d87614576f2634b995dc Reviewed-by: Alessandro Portale --- .../cmakeprojectmanager/cmakebuildsystem.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 7c0001c6a86..b5630faf28c 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -272,6 +272,8 @@ static QString newFilesForFunction(const std::string &cmakeFunction, bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FilePaths *notAdded) { + if (notAdded) + *notAdded = filePaths; if (auto n = dynamic_cast(context)) { const QString targetName = n->buildKey(); auto target = Utils::findOrDefault(buildTargets(), @@ -279,10 +281,9 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP return target.title == targetName; }); - if (target.backtrace.isEmpty()) { - *notAdded = filePaths; + if (target.backtrace.isEmpty()) return false; - } + const FilePath targetCMakeFile = target.backtrace.last().path; const int targetDefinitionLine = target.backtrace.last().line; @@ -297,7 +298,6 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP if (!cmakeListFile.ParseString(fileContent->toStdString(), targetCMakeFile.fileName().toStdString(), errorString)) { - *notAdded = filePaths; return false; } } @@ -308,10 +308,8 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP return func.Line() == targetDefinitionLine; }); - if (function == cmakeListFile.Functions.end()) { - *notAdded = filePaths; + if (function == cmakeListFile.Functions.end()) return false; - } // Special case: when qt_add_executable and qt_add_qml_module use the same target name // then qt_add_qml_module function should be used @@ -385,16 +383,16 @@ bool CMakeBuildSystem::addFiles(Node *context, const FilePaths &filePaths, FileP Core::EditorManager::openEditorAt({targetCMakeFile, line, column + extraChars}, Constants::CMAKE_EDITOR_ID, Core::EditorManager::DoNotMakeVisible)); - if (!editor) { - *notAdded = filePaths; + if (!editor) return false; - } editor->insert(snippet); editor->editorWidget()->autoIndent(); if (!Core::DocumentManager::saveDocument(editor->document())) return false; + if (notAdded) + notAdded->clear(); return true; } From 936015b34565ecc2cb34fbde1f33279c98783fd4 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Mon, 30 Oct 2023 08:11:11 +0100 Subject: [PATCH 07/15] Core: Don't create Log Viewer just to close it Change-Id: I92a724b0b1bc6a749fbd18f91494be0f2eff11d8 Reviewed-by: Christian Stenger --- src/plugins/coreplugin/loggingviewer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/plugins/coreplugin/loggingviewer.cpp b/src/plugins/coreplugin/loggingviewer.cpp index 1cb95ae8b7f..0ee6c0b7f42 100644 --- a/src/plugins/coreplugin/loggingviewer.cpp +++ b/src/plugins/coreplugin/loggingviewer.cpp @@ -1100,6 +1100,8 @@ void setCategoryColor(const QString &category, const QColor &color) s_categoryColor.remove(category); } +static bool wasLogViewerShown = false; + void LoggingViewer::showLoggingView() { LoggingViewManagerWidget *staticLogWidget = LoggingViewManagerWidget::instance(); @@ -1108,10 +1110,15 @@ void LoggingViewer::showLoggingView() staticLogWidget->show(); staticLogWidget->raise(); staticLogWidget->activateWindow(); + + wasLogViewerShown = true; } void LoggingViewer::hideLoggingView() { + if (!wasLogViewerShown) + return; + LoggingViewManagerWidget *staticLogWidget = LoggingViewManagerWidget::instance(); QTC_ASSERT(staticLogWidget, return); staticLogWidget->close(); From 53931b18ad7443879b0172bfda7611f540b9f0eb Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 26 Oct 2023 15:22:27 +0200 Subject: [PATCH 08/15] Debugger: Fix QDateTime dumpers with TZ != UTC Fixes it for Qt 5.4 and onwards hopefully. Fixes: QTCREATORBUG-29737 Change-Id: Ic555e304a872dfbd458a95097e4e0b6a6632509a Reviewed-by: Christian Stenger --- share/qtcreator/debugger/qttypes.py | 12 +++++++++--- src/plugins/debugger/debuggerprotocol.cpp | 6 ++++-- tests/auto/debugger/tst_dumpers.cpp | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 5a406c03190..784691e81a7 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -328,10 +328,16 @@ def qdump__QDateTime(d, value): isValid = status & 0x08 else: dptr = d.extractPointer(value) - (msecs, status, offsetFromUtc, ref, timeZone) = d.split('qIIIp', dptr) + (_, status, msecs, offsetFromUtc, _, timeZone) = d.split('iIqII{QTimeZone}', dptr) spec = (status & 0x30) >> 4 isValid = True - + tzD = d.extractPointer(timeZone) + if tzD == 0: + timeZone = 'UTC' + else: + idAddr = tzD + 2 * d.ptrSize() + tzBa = d.encodeByteArray(idAddr, limit=100) + timeZone = tzBa d.putValue( '%s/%s/%s/%s/%s/%s' % (msecs, @@ -365,7 +371,7 @@ def qdump__QDateTime(d, value): tz = '' else: idBase = tzp + 2 * d.ptrSize() # [QSharedData] + [vptr] - elided, tz = d.encodeByteArray(idBase, limit=100) + tz = d.encodeByteArray(idBase, limit=100) d.putValue('%s/%s/%s/%s/%s/%s' % (msecs, spec, offset, tz, status, 0), 'datetimeinternal') else: diff --git a/src/plugins/debugger/debuggerprotocol.cpp b/src/plugins/debugger/debuggerprotocol.cpp index 3740b5b3b63..6df472afa52 100644 --- a/src/plugins/debugger/debuggerprotocol.cpp +++ b/src/plugins/debugger/debuggerprotocol.cpp @@ -737,9 +737,11 @@ QString decodeData(const QString &ba, const QString &encoding) if (spec == Qt::OffsetFromUTC) { dateTime = QDateTime(date, time, spec, offset); } else if (spec == Qt::TimeZone) { - if (!QTimeZone::isTimeZoneIdAvailable(timeZoneId)) + QTimeZone tz(timeZoneId); + if (!tz.isValid()) return QLatin1String(""); - dateTime = QDateTime(date, time, QTimeZone(timeZoneId)); + + dateTime = QDateTime(date, time, tz); } else { dateTime = QDateTime(date, time, spec); } diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index f58f8f73731..06ebfe1b638 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -2260,7 +2260,10 @@ void tst_Dumpers::dumper_data() QTest::newRow("QDateTime") - << Data("#include ", + << Data("#include \n" + "#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)\n" + "#include \n" + "#endif", "QDate d0;\n" "QDate d1;\n" @@ -2270,9 +2273,12 @@ void tst_Dumpers::dumper_data() "QTime t1(13, 15, 32);\n" "QDateTime dt0;\n" - "QDateTime dt1(QDate(1980, 1, 1), QTime(13, 15, 32), Qt::UTC);", + "QDateTime dt1(QDate(1980, 1, 1), QTime(13, 15, 32), Qt::UTC);\n" + "#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)\n" + "QDateTime dt2(QDate(1980, 1, 1), QTime(13, 15, 32), QTimeZone(60 * 60));\n" + "#endif\n", - "&d0, &d1, &t0, &t1, &dt0, &dt1") + "&d0, &d1, &t0, &t1, &dt0, &dt1, &dt2") + CoreProfile() @@ -2297,6 +2303,7 @@ void tst_Dumpers::dumper_data() + Check("dt0", "(invalid)", "@QDateTime") + Check("dt1", Value4("Tue Jan 1 13:15:32 1980"), "@QDateTime") + Check("dt1", Value5("Tue Jan 1 13:15:32 1980 GMT"), "@QDateTime") + + Check("dt1", Value6("Tue Jan 1 13:15:32 1980 GMT"), "@QDateTime") + Check("dt1.(ISO)", "\"1980-01-01T13:15:32Z\"", "@QString") % NeedsInferiorCall + Check("dt1.(Locale)", AnyValue, "@QString") % NeedsInferiorCall @@ -2306,11 +2313,13 @@ void tst_Dumpers::dumper_data() + Check("dt1.toString", Value4("\"Tue Jan 1 13:15:32 1980\""), "@QString") % NeedsInferiorCall + Check("dt1.toString", - Value5("\"Tue Jan 1 13:15:32 1980 GMT\""), "@QString") % NeedsInferiorCall; + Value5("\"Tue Jan 1 13:15:32 1980 GMT\""), "@QString") % NeedsInferiorCall //+ Check("dt1.toUTC", // Value4("Tue Jan 1 13:15:32 1980"), "@QDateTime") % Optional() //+ Check("dt1.toUTC", // Value5("Tue Jan 1 13:15:32 1980 GMT"), "@QDateTime") % Optional(); + + Check("dt2", Value5("Tue Jan 1 13:15:32 1980 UTC+01:00"), "@QDateTime") + + Check("dt2", Value6("Tue Jan 1 13:15:32 1980 UTC+01:00"), "@QDateTime"); QTest::newRow("QFileInfo") From ee3e6376f014d411692095bf23ce93cef3ab3ccc Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Mon, 30 Oct 2023 08:25:29 +0100 Subject: [PATCH 09/15] Core: Handle async log category init If a log category is first used by a different thread than the main thread, we need to make sure that we dispatch the call into the main thread ourselves. Change-Id: I0908366b254649f30a1d18cb4e0da4a7e3988dcc Reviewed-by: Christian Stenger --- src/plugins/coreplugin/loggingviewer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/coreplugin/loggingviewer.cpp b/src/plugins/coreplugin/loggingviewer.cpp index 0ee6c0b7f42..cc2b8226810 100644 --- a/src/plugins/coreplugin/loggingviewer.cpp +++ b/src/plugins/coreplugin/loggingviewer.cpp @@ -95,6 +95,12 @@ private: void onFilter(QLoggingCategory *category) { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod( + this, [category, this] { onFilter(category); }, Qt::QueuedConnection); + return; + } + if (!m_categories.contains(category)) { m_categories.append(category); emit newLogCategory(category); From 78b56e7defc5279cb03646c7edbe979ba2c6d881 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Mon, 30 Oct 2023 08:43:19 +0100 Subject: [PATCH 10/15] Core: Initialize old log category filter Change-Id: I732761977b9ca0e14a072f28db0830f57edc6989 Reviewed-by: Christian Stenger --- src/plugins/coreplugin/loggingviewer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/loggingviewer.cpp b/src/plugins/coreplugin/loggingviewer.cpp index cc2b8226810..57a1f42282b 100644 --- a/src/plugins/coreplugin/loggingviewer.cpp +++ b/src/plugins/coreplugin/loggingviewer.cpp @@ -114,7 +114,7 @@ private: bool m_started{false}; }; -QLoggingCategory::CategoryFilter LogCategoryRegistry::s_oldFilter; +QLoggingCategory::CategoryFilter LogCategoryRegistry::s_oldFilter = nullptr; struct SavedEntry { From 250b82ba3243f03a3b09c8302bcb86e18d2f117d Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Mon, 30 Oct 2023 09:46:39 +0100 Subject: [PATCH 11/15] Ios: Finish deploy on failure Previously the deploy step would seemingly run forever if the startSimulator step failed, as no result was added to the promise. Change-Id: Ib320d051e78057e536d4ad371cb30108e848c65f Reviewed-by: Leena Miettinen Reviewed-by: Eike Ziller --- src/plugins/ios/iostoolhandler.cpp | 2 ++ src/plugins/ios/simulatorcontrol.cpp | 29 +++++++++++++++++++++------- src/plugins/ios/simulatorcontrol.h | 8 ++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp index 67f4fb981c5..43cc6fab142 100644 --- a/src/plugins/ios/iostoolhandler.cpp +++ b/src/plugins/ios/iostoolhandler.cpp @@ -746,6 +746,8 @@ void IosSimulatorToolHandlerPrivate::requestTransferApp(const FilePath &appBundl installAppOnSimulator(); } else { errorMsg(Tr::tr("Application install on simulator failed. Simulator not running.")); + if (!response.commandOutput.isEmpty()) + errorMsg(response.commandOutput); didTransferApp(m_bundlePath, m_deviceId, IosToolHandler::Failure); emit q->finished(q); } diff --git a/src/plugins/ios/simulatorcontrol.cpp b/src/plugins/ios/simulatorcontrol.cpp index 0832a5faf37..900309fc31c 100644 --- a/src/plugins/ios/simulatorcontrol.cpp +++ b/src/plugins/ios/simulatorcontrol.cpp @@ -3,6 +3,7 @@ #include "simulatorcontrol.h" #include "iosconfigurations.h" +#include "iostr.h" #include #include @@ -399,10 +400,10 @@ void startSimulator(QPromise &promise, const QSt SimulatorInfo simInfo = deviceInfo(simUdid); if (!simInfo.available) { - qCDebug(simulatorLog) << "Simulator device is not available." << simUdid; + promise.addResult( + response.withError(Tr::tr("Simulator device is not available. (%1)").arg(simUdid))); return; } - // Shutting down state checks are for the case when simulator start is called within a short // interval of closing the previous interval of the simulator. We wait untill the shutdown // process is complete. @@ -414,8 +415,14 @@ void startSimulator(QPromise &promise, const QSt } if (simInfo.isShuttingDown()) { - qCDebug(simulatorLog) << "Cannot start Simulator device. " - << "Previous instance taking too long to shutdown." << simInfo; + promise.addResult(response.withError( + Tr::tr("Cannot start Simulator device. Previous instance taking " + "too long to shut down. (name=%1, udid=%2, available=%3, state=%4, runtime=%5)") + .arg(simInfo.name) + .arg(simInfo.identifier) + .arg(simInfo.available) + .arg(simInfo.state) + .arg(simInfo.runtimeName))); return; } @@ -436,11 +443,19 @@ void startSimulator(QPromise &promise, const QSt if (info.isBooted()) response.success = true; } else { - qCDebug(simulatorLog) << "Error starting simulator."; + promise.addResult(response.withError(Tr::tr("Error starting simulator."))); + return; } } else { - qCDebug(simulatorLog) << "Cannot start Simulator device. Simulator not in shutdown state." - << simInfo; + promise.addResult(response.withError( + Tr::tr("Cannot start Simulator device. Simulator not in shutdown state.(name=%1, " + "udid=%2, available=%3, state=%4, runtime=%5)") + .arg(simInfo.name) + .arg(simInfo.identifier) + .arg(simInfo.available) + .arg(simInfo.state) + .arg(simInfo.runtimeName))); + return; } if (!promise.isCanceled()) diff --git a/src/plugins/ios/simulatorcontrol.h b/src/plugins/ios/simulatorcontrol.h index 402100fbeac..c1519b39b32 100644 --- a/src/plugins/ios/simulatorcontrol.h +++ b/src/plugins/ios/simulatorcontrol.h @@ -61,6 +61,14 @@ public: bool success = false; qint64 pID = -1; QString commandOutput; + + ResponseData withError(const QString errorMsg) + { + ResponseData result = *this; + result.commandOutput = errorMsg; + result.success = false; + return result; + } }; public: From 0117b1669b879b25759c440dd4acde44cdb6f162 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 24 Oct 2023 11:19:51 +0200 Subject: [PATCH 12/15] Python: use correct python language server after installation Change-Id: Ie5e26eedffc51e8916d849121fa60ea3d56e5a66 Reviewed-by: Christian Stenger --- src/plugins/python/pythonlanguageclient.cpp | 16 +++++----------- src/plugins/python/pythonlanguageclient.h | 2 -- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/plugins/python/pythonlanguageclient.cpp b/src/plugins/python/pythonlanguageclient.cpp index 750ab333826..b13aef42077 100644 --- a/src/plugins/python/pythonlanguageclient.cpp +++ b/src/plugins/python/pythonlanguageclient.cpp @@ -301,10 +301,13 @@ void PyLSConfigureAssistant::installPythonLanguageServer(const FilePath &python, auto install = new PipInstallTask(python); connect(install, &PipInstallTask::finished, this, [=](const bool success) { + const QList additionalDocuments = m_infoBarEntries.take(python); if (success) { - if (document) { - if (PyLSClient *client = clientForPython(python)) + if (PyLSClient *client = clientForPython(python)) { + if (document) LanguageClientManager::openDocumentWithClient(document, client); + for (TextEditor::TextDocument *additionalDocument : additionalDocuments) + LanguageClientManager::openDocumentWithClient(additionalDocument, client); } } install->deleteLater(); @@ -375,15 +378,6 @@ void PyLSConfigureAssistant::handlePyLSState(const FilePath &python, } } -void PyLSConfigureAssistant::updateEditorInfoBars(const FilePath &python, Client *client) -{ - for (TextEditor::TextDocument *document : instance()->m_infoBarEntries.take(python)) { - instance()->resetEditorInfoBar(document); - if (client) - LanguageClientManager::openDocumentWithClient(document, client); - } -} - void PyLSConfigureAssistant::resetEditorInfoBar(TextEditor::TextDocument *document) { for (QList &documents : m_infoBarEntries) diff --git a/src/plugins/python/pythonlanguageclient.h b/src/plugins/python/pythonlanguageclient.h index 82a4a73ea4f..41b559a0427 100644 --- a/src/plugins/python/pythonlanguageclient.h +++ b/src/plugins/python/pythonlanguageclient.h @@ -53,8 +53,6 @@ class PyLSConfigureAssistant : public QObject public: static PyLSConfigureAssistant *instance(); - static void updateEditorInfoBars(const Utils::FilePath &python, - LanguageClient::Client *client); static void openDocumentWithPython(const Utils::FilePath &python, TextEditor::TextDocument *document); From 472b4cb35810fa9c2ad6e6021a161e790c419517 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 30 Oct 2023 10:55:21 +0100 Subject: [PATCH 13/15] Doc: Describe changes in Git Instant Blame "Instant Blame" is now a check box. The "Add instant blame annotations to editor" check box was removed and the following were added: "Ignore whitespace changes" and "Ignore line moves". Task-number: QTCREATORBUG-29392 Change-Id: I8dd0a779dd4a72fef7a5bb1a9023c3b705f0f174 Reviewed-by: Orgad Shaneh --- dist/changelog/changes-12.0.0.md | 4 +++- .../images/qtcreator-preferences-vcs-git.webp | Bin 5634 -> 5744 bytes doc/qtcreator/src/vcs/creator-vcs-git.qdoc | 10 +++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dist/changelog/changes-12.0.0.md b/dist/changelog/changes-12.0.0.md index efbecf4c1b0..177ae477ff0 100644 --- a/dist/changelog/changes-12.0.0.md +++ b/dist/changelog/changes-12.0.0.md @@ -304,8 +304,10 @@ Version Control Systems ### Git -* Added option for ignoring whitespace changes and line moves in `Instant Blame` +* Added the `Ignore whitespace changes` and `Ignore line moves` options to + `Preferences > Version Control > Git > Instant Blame` ([QTCREATORBUG-29378](https://bugreports.qt.io/browse/QTCREATORBUG-29378)) + ([Documentation](https://doc-snapshots.qt.io/qtcreator-12.0/creator-vcs-git.html)) ### CVS diff --git a/doc/qtcreator/images/qtcreator-preferences-vcs-git.webp b/doc/qtcreator/images/qtcreator-preferences-vcs-git.webp index 1d76dc557bcb65759ee3229e46754998024fb640..bb450df15c9188fd4d210f8a74e56e91364f9a60 100644 GIT binary patch literal 5744 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 Te;NI*N&l10^?%xzeeMPT4F}Mp diff --git a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc index ee1ba25ed15..9f5f79f3910 100644 --- a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc +++ b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc @@ -144,9 +144,13 @@ By default, each line is annotated in the editor when you scroll through the file. To disable this feature, select \preferences > \uicontrol {Version Control} > \uicontrol Git, and - deselect \uicontrol {Add instant blame annotations to editor}. To view - annotations for the current line, select \uicontrol Tools > \uicontrol Git > - \uicontrol {Current File} > \uicontrol {Instant Blame}. + deselect \uicontrol {Instant Blame}. To find the commit that introduced + the last real code change, select \uicontrol {Ignore whitespace changes}. + To find the commit that introduced a line before it was moved, select + \uicontrol {Ignore line moves}. + + To view annotations for the current line, select \uicontrol Tools > + \uicontrol Git > \uicontrol {Current File} > \uicontrol {Instant Blame}. Click the commit identifier to show a detailed description of the change. From 7fce843949ac704cec0df875832f0ca2e3550388 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Sun, 29 Oct 2023 00:49:13 +0200 Subject: [PATCH 14/15] ScreenRecorder: Make recording options dialog non-resizable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ther resizing behavior is quite odd. One planned feature for the plugin is a zoomable crop view. Once that is in place (in QtC 13 or later), like suggested in the report, the dialog can be scalable and the crop view can grow using the available space. Fixes: QTCREATORBUG-29810 Change-Id: Ic77f81f704546d2730599b00664606aada3280d8 Reviewed-by: Robert Löhning --- src/plugins/screenrecorder/record.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/screenrecorder/record.cpp b/src/plugins/screenrecorder/record.cpp index cade82dbe9c..12aa27f46da 100644 --- a/src/plugins/screenrecorder/record.cpp +++ b/src/plugins/screenrecorder/record.cpp @@ -120,6 +120,7 @@ RecordOptionsDialog::RecordOptionsDialog(QWidget *parent) st, buttonBox, }.attachTo(this); + layout()->setSizeConstraint(QLayout::SetFixedSize); connect(buttonBox, &QDialogButtonBox::accepted, this, [this] { const QRect cropRect = m_cropScene->fullySelected() ? QRect() : screenCropRect(); From dc4703e5c0a3e07bb722c1496e0c244387992aaf Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 30 Oct 2023 11:43:16 +0100 Subject: [PATCH 15/15] Doc: Describe Preferences > Testing > General > Scan threads Task-number: QTCREATORBUG-29392 Change-Id: I71f253b0ffd6df615525da0c4c31e72245970bec Reviewed-by: Christian Stenger --- ...qtcreator-preferences-testing-general.webp | Bin 8014 -> 8460 bytes .../howto/creator-only/creator-autotest.qdoc | 4 ++++ 2 files changed, 4 insertions(+) diff --git a/doc/qtcreator/images/qtcreator-preferences-testing-general.webp b/doc/qtcreator/images/qtcreator-preferences-testing-general.webp index 0b92925e6a12cf86639fa663f38499446dbae4ab..8fb41b64f7dcaa5a28ff61139755649341088d0a 100644 GIT binary patch literal 8460 zcmWIYbaP`-WMBw)bqWXzu<-ezz`&qyeyEJ$>x0?b-cP;kaX-~ezwD%C&MX;879}h9 zq8l=iVVlg~$NNndp3FLXbMvkH4{KD<{pNmu^11B;(V`aov z)Lr}elw5$rdk3$*lZuO&>gI;;2oitbRC>6xl?$2_wuT*_K(z9gp zog3?UF8o^k*5Sj|g%=Oyy{Y;=<9B)bn~b{wy_4T-oJ?6SeK{}B%WrDhi5VB7^!=qJ z=iD}*JlDKu>J9Ut-A8XGDQvVm$MgC~(6ytE+{F_%InMZVCL}89ICdS?^$e_}Z z`FCPrVuPcd#;TOq`+KIEi1EE(kDD>^h|)c$V%?2@7By%4-nsF2_x(FOuFnN?1^Ue2 zUaP7MdXe}*%X;g}8TT&r&b1e*X9(C=lc|&Vj&GZR!`j2Y)0|!(R9p~{(c50PW6wO< zi|s+@L=HDa?5|}A4a$jIZ`YRcO+nqsKB2+v#5E1)Q|&LF3q+*y*;;q}d!c*bz>l<5 zISmKj-CX!P`Sa3A_kw<^GEUKtmCD}is{5Ra`HI!{{1sAaB4%&xSiG(W^ycgBf5CI8 zu)RxB|Jwfu1>=?tlG|<`eaji~?&mZ~&J|6TKK)-LW{Q(SX0G;klUYjmjqz zQjLx`8hofX5L~P~vt1;VSL6P*O94XPH@7lo$=){4;Lqm$*U=)hYL{gQkL1R>lQnbK zO{q+>zwjyff_PrO(aDl9Oi2pbJqOwC;g+mY3fI-Z_YoYrdjrFbMa;PIce#}$Bnu? z6};PP?>~5M{(*medVIy^V*7au3f4&oCH)mj&kcE2yma%=Ba)nYP1nvBI-5)N<|yAil^5Q4IA)dq+u-u< z#ZuW{=DQU|?AWUG#?N=HYgSCUc-d`+)T=u@jCAfqDL?1Z_u<~H+GoVR+&jomM#sHG zzS<$I_lnA4=AA4*XN&&4>-#D(HGo~+V&z7;)w$Ih!VfcV=Q;hw!%AkNagmSUY_pD) zN#De@)?RMu2%T~}Sat2>Mz8FoWs|%GPCq&y@%q*^y|t5%zB%OgQ9QQ#s*00NbFw32 ziohq17tNv3vR_}E;V6~ymRz8_U5n+zG!b1oz8&cBR*ME!ub_ z#BgG=B*-Y`>yy*ecQhZBasQm3cs1hQ<*4B6)!GX}mhy;9UBKesoLSHMHkF~U#X@jd zlho_Ij+`H3mTq4zaiCiFiyM>k35ko6T>laZk8dn}e<<(U-dVf+&QvB|RqIHVN`81% zWzzfIt9x_&52hD?={nHC@LqiztH!fDw(OJ+&WQitREqqL9$ja`shX_f>nN`yrBdW_ zCYtr7gwGr=#X!{+ns4{dmoCltGHv3l1uk3qUb>vP&l41I*Rx4|k59}YYkSGX%!hRr zO_q(y_vfr+xpOe7Px;3R)$P1law;xc`&6CQ?9FWX^Wxc`WBW~xZ8eH_YTEi>u|Uuo z*S71ACnT(YyjURU%~!YoJG-^_tL$fH%xAYbz4PdNy?wqhDeUJreo)bW|5^37?wr

`z)eCw&4)?9gf?e9%WsomY5yO)dGoHY5O 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 diff --git a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc index 47611d26c3f..8d72d3ba896 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc @@ -406,6 +406,10 @@ \uicontrol {Active Test Frameworks} list. By default, \QC groups tests that are in the same directory. + By default, \QC uses a quarter of the available logical CPUs when + scanning for tests. You can set the amount of worker threads used + in \uicontrol {Scan threads}. + \QC omits internal messages and run configuration warnings for deduced configurations by default. To view them, deselect the \uicontrol {Omit internal messages} and