From d30dda07a12c458cf2dd86fe02c9b0293bcd4bdf Mon Sep 17 00:00:00 2001
From: David Schulz
Date: Fri, 14 Jun 2024 12:08:58 +0200
Subject: [PATCH 01/30] Debugger: fix PyType::resolved function call
Change-Id: I9301d7875bec68ccde5ccd480b12c0dc86b082f1
Reviewed-by: Christian Stenger
---
share/qtcreator/debugger/cdbbridge.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/share/qtcreator/debugger/cdbbridge.py b/share/qtcreator/debugger/cdbbridge.py
index 7674a37b710..6fc77b5ea67 100644
--- a/share/qtcreator/debugger/cdbbridge.py
+++ b/share/qtcreator/debugger/cdbbridge.py
@@ -124,7 +124,7 @@ class Dumper(DumperBase):
pass
if nativeValue.type().code() == TypeCode.Enum:
val.ldisplay = self.enumValue(nativeValue)
- elif not nativeValue.type().resolved and nativeValue.type().code() == TypeCode.Struct and not nativeValue.hasChildren():
+ elif not nativeValue.type().resolved() and nativeValue.type().code() == TypeCode.Struct and not nativeValue.hasChildren():
val.ldisplay = self.enumValue(nativeValue)
val.isBaseClass = val.name == nativeValue.type().name()
val.typeid = self.from_native_type(nativeValue.type())
From d22a95bc546953f8a6835e6df4333ae5f6723b4e Mon Sep 17 00:00:00 2001
From: David Schulz
Date: Mon, 17 Jun 2024 14:33:08 +0200
Subject: [PATCH 02/30] Debugger: fix some qtVersionAtLeast checks
Change-Id: I681927fe5e086738f7635f7e578238c448dca2a2
Reviewed-by: hjk
---
share/qtcreator/debugger/qttypes.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index 1b38223c2e1..935103fde87 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -385,9 +385,9 @@ def qdump__QDateTime(d, value):
# - [QTime time;]
# - - uint mds;
# - Spec spec;
- dateSize = 8 if qtVersionAtLeast(0x050000) else 4 # Qt5: qint64, Qt4 uint
+ dateSize = 8 if d.qtVersionAtLeast(0x050000) else 4 # Qt5: qint64, Qt4 uint
# 4 byte padding after 4 byte QAtomicInt if we are on 64 bit and QDate is 64 bit
- refPlusPadding = 8 if qtVersionAtLeast(0x050000) and d.ptrSize() == 8 else 4
+ refPlusPadding = 8 if d.qtVersionAtLeast(0x050000) and d.ptrSize() == 8 else 4
dateBase = base + refPlusPadding
timeBase = dateBase + dateSize
mds = d.extractInt(timeBase)
@@ -1031,14 +1031,14 @@ def qdump__QHostAddress(d, value):
else:
(ipString, scopeId, a4, pad, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}I16sI{bool}', dd)
- elif qtVersionAtLeast(0x050600): # 5.6.0 at f3aabb42
+ elif d.qtVersionAtLeast(0x050600): # 5.6.0 at f3aabb42
if d.ptrSize() == 8 or d.isWindowsTarget():
(ipString, scopeId, a4, pad, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}I16sI{bool}', dd)
else:
(ipString, scopeId, a4, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}16sI{bool}', dd)
- elif qtVersionAtLeast(0x050000): # 5.2.0 at 62feb088
+ elif d.qtVersionAtLeast(0x050000): # 5.2.0 at 62feb088
(ipString, scopeId, a4, a6, protocol, isParsed) \
= d.split('{@QString}{@QString}{@quint32}16sI{bool}', dd)
else: # 4.8.7 at b05d05f
From 56f2b1f1e8a29f316de75c3a4dcfb79a90d635e8 Mon Sep 17 00:00:00 2001
From: Eike Ziller
Date: Mon, 17 Jun 2024 10:07:29 +0200
Subject: [PATCH 03/30] Process: Add information about main thread to logging
Add a note if a process is started on the main thread. That adds
essential information to "blocking without event loop".
Task-number: QTCREATORBUG-31068
Change-Id: Iaf3bab88b79391c4ddc17d18a81e6d8ab712d22d
Reviewed-by: Jarek Kobus
---
src/libs/utils/qtcprocess.cpp | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp
index 5e0918ed70e..05111ef8efa 100644
--- a/src/libs/utils/qtcprocess.cpp
+++ b/src/libs/utils/qtcprocess.cpp
@@ -2140,9 +2140,10 @@ void ProcessPrivate::setupDebugLog()
static std::atomic_int startCounter = 0;
const int currentNumber = startCounter.fetch_add(1);
qCDebug(processLog).nospace().noquote()
- << "Process " << currentNumber << " starting ("
- << qPrintable(blockingMessage(property(QTC_PROCESS_BLOCKING_TYPE)))
- << "): " << m_setup.m_commandLine.toUserOutput();
+ << "Process " << currentNumber << " starting ("
+ << qPrintable(blockingMessage(property(QTC_PROCESS_BLOCKING_TYPE)))
+ << (isMainThread() ? ", main thread" : "")
+ << "): " << m_setup.m_commandLine.toUserOutput();
setProperty(QTC_PROCESS_NUMBER, currentNumber);
});
From becb0af00a50aa209fde3fc88b714799e311cfa3 Mon Sep 17 00:00:00 2001
From: Leena Miettinen
Date: Tue, 11 Jun 2024 14:35:07 +0200
Subject: [PATCH 04/30] Doc: Add more topics to \ingroup
creator-how-to-manage-kits
- Add links to the kit management topics from other topics
- Always use \l{Kits} to link to Preferences > Kits
This has lived a little, as I've changed the category names
Change-Id: Ibcb137824a23bfe7e320a215eb461f689c43db77
Reviewed-by: Christian Kandeler
---
doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc | 2 +-
doc/qtcreator/src/analyze/creator-analyze.qdoc | 2 +-
doc/qtcreator/src/analyze/creator-valgrind.qdoc | 2 +-
doc/qtcreator/src/android/androiddev.qdoc | 3 +--
.../creator-projects-settings-run-android.qdoc | 4 ++--
doc/qtcreator/src/android/deploying-android.qdoc | 2 +-
.../src/appman/creator-appman-how-to-run.qdoc | 2 +-
.../src/baremetal/creator-baremetal-dev.qdoc | 4 +++-
.../src/cmake/creator-projects-cmake-building.qdoc | 6 +++---
doc/qtcreator/src/cmake/creator-projects-cmake.qdoc | 7 ++++---
.../src/conan/creator-projects-conan-building.qdoc | 4 ++--
.../creator-only/creator-debugger-setup.qdoc | 4 ++--
.../src/debugger/creator-only/creator-debugger.qdoc | 12 +++++++-----
doc/qtcreator/src/debugger/qtquick-debugging.qdoc | 2 +-
.../creator-only/creator-language-server.qdoc | 6 +++---
.../howto/creator-only/creator-how-to-install.qdoc | 4 ++--
.../src/howto/creator-only/qtcreator-faq.qdoc | 4 ++--
.../creator-projects-incredibuild-building.qdoc | 2 +-
doc/qtcreator/src/ios/creator-ios-dev.qdoc | 3 ++-
.../creator-projects-how-to-run-generic-linux.qdoc | 4 ++--
.../creator-projects-settings-run-b2qt.qdoc | 4 ++--
.../creator-projects-settings-run-linux.qdoc | 4 ++--
doc/qtcreator/src/mcu/creator-mcu-dev.qdoc | 3 ++-
.../src/meson/creator-projects-meson-building.qdoc | 2 +-
doc/qtcreator/src/meson/creator-projects-meson.qdoc | 4 ++--
.../overview/creator-only/creator-configuring.qdoc | 2 +-
.../creator-only/creator-getting-started.qdoc | 2 +-
.../creator-only/creator-keyboard-shortcuts.qdoc | 2 +-
.../src/overview/creator-only/creator-overview.qdoc | 2 +-
.../creator-only/creator-build-settings-qmake.qdoc | 2 +-
.../creator-how-to-edit-qbs-profiles.qdoc | 2 +-
.../creator-projects-build-run-tutorial.qdoc | 2 +-
.../creator-only/creator-projects-building.qdoc | 7 +++----
.../creator-only/creator-projects-compilers.qdoc | 2 +-
.../creator-only/creator-projects-creating.qdoc | 4 ++--
.../creator-only/creator-projects-debuggers.qdoc | 2 +-
.../projects/creator-only/creator-projects-kits.qdoc | 8 +++-----
.../creator-only/creator-projects-nimble.qdoc | 2 +-
.../creator-only/creator-projects-opening.qdoc | 5 +++--
.../creator-projects-settings-build-qbs.qdoc | 2 +-
.../creator-projects-settings-build.qdoc | 2 +-
.../creator-projects-settings-overview.qdoc | 7 ++++---
.../creator-projects-settings-run-analyze.qdoc | 2 +-
.../creator-projects-settings-run-debug.qdoc | 2 +-
.../creator-projects-settings-run-desktop.qdoc | 2 +-
.../creator-only/creator-projects-settings-run.qdoc | 2 +-
.../src/projects/creator-projects-running.qdoc | 2 +-
.../src/python/creator-python-development.qdoc | 2 +-
.../src/python/creator-python-run-settings.qdoc | 2 +-
.../src/qnx/creator-projects-settings-run-qnx.qdoc | 2 +-
.../creator-projects-settings-run-qtquick.qdoc | 6 +++---
.../src/qtquick/creator-only/qtquick-creating.qdoc | 10 +++++-----
.../qtquick-tutorial-create-empty-project.qdocinc | 4 ++--
doc/qtcreator/src/qtquick/qtquick-profiler.qdoc | 2 +-
.../creator-reference-output-views.qdoc | 2 +-
doc/qtcreator/src/user-interface/creator-ui.qdoc | 2 +-
.../src/widgets/qtdesigner-app-tutorial.qdoc | 2 +-
57 files changed, 100 insertions(+), 95 deletions(-)
diff --git a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc
index 920bd6d3907..d267eaf8f60 100644
--- a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc
+++ b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc
@@ -519,5 +519,5 @@
The \l {Application Output} view shows some information even if the
Performance Analyzer displays error messages.
- \sa {Analyze}{How To: Analyze}, {Analyzers}, {Analyzing Code}
+ \sa {Analyze}{How To: Analyze}, {Analyzers}, {Analyzing Code}, {Kits}
*/
diff --git a/doc/qtcreator/src/analyze/creator-analyze.qdoc b/doc/qtcreator/src/analyze/creator-analyze.qdoc
index e2333cee77c..982d4219923 100644
--- a/doc/qtcreator/src/analyze/creator-analyze.qdoc
+++ b/doc/qtcreator/src/analyze/creator-analyze.qdoc
@@ -151,5 +151,5 @@
is especially useful when viewing large trace files that are difficult to
visualize using the built-in trace-viewer (\c{chrome://tracing}).
- \sa {Analyze}{How To: Analyze}, {Analyzers}
+ \sa {Activate kits for a project}, {Analyze}{How To: Analyze}, {Analyzers}
*/
diff --git a/doc/qtcreator/src/analyze/creator-valgrind.qdoc b/doc/qtcreator/src/analyze/creator-valgrind.qdoc
index d044e581199..dfc43effb49 100644
--- a/doc/qtcreator/src/analyze/creator-valgrind.qdoc
+++ b/doc/qtcreator/src/analyze/creator-valgrind.qdoc
@@ -392,7 +392,7 @@
\image qtcreator-valgrind-remote-settings.png {Start Remote Analysis dialog}
\li Select the application to run and analyze, as well as the
- \l{glossary-buildandrun-kit}{kit} to use.
+ \l{Kits}{kit} to use.
\endlist
diff --git a/doc/qtcreator/src/android/androiddev.qdoc b/doc/qtcreator/src/android/androiddev.qdoc
index ab6ae2d9092..bd9e8be5073 100644
--- a/doc/qtcreator/src/android/androiddev.qdoc
+++ b/doc/qtcreator/src/android/androiddev.qdoc
@@ -149,8 +149,7 @@
building Qt from \c modules/Core.json and uses it instead of the version
in \c sdk_definitions.json.
- \sa {Android}{How To: Develop for Android},
- {Developing for Android}
+ \sa {Android}{How To: Develop for Android}, {Developing for Android}, {Kits}
*/
/*!
diff --git a/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc b/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc
index 8753e838649..2d264f0e57d 100644
--- a/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc
+++ b/doc/qtcreator/src/android/creator-projects-settings-run-android.qdoc
@@ -11,7 +11,7 @@
\brief Settings for running applications on Android devices.
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
@@ -66,5 +66,5 @@
\endcode
\sa {Activate kits for a project}, {Configure projects for running},
- {Android}{How To: Develop for Android}
+ {Android}{How To: Develop for Android}, {Kits}
*/
diff --git a/doc/qtcreator/src/android/deploying-android.qdoc b/doc/qtcreator/src/android/deploying-android.qdoc
index e1b83d5e046..75f497cc6d7 100644
--- a/doc/qtcreator/src/android/deploying-android.qdoc
+++ b/doc/qtcreator/src/android/deploying-android.qdoc
@@ -499,6 +499,6 @@
To add a permission, select it from the list, and then click \uicontrol Add.
\sa {Build and Run}{How To: Build and Run},
- {Android}{How To: Develop for Android}, {Android Run Settings}
+ {Android}{How To: Develop for Android}, {Android Run Settings}, {Kits}
*/
diff --git a/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc b/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc
index af2ffacaaec..0df58d12e8c 100644
--- a/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc
+++ b/doc/qtcreator/src/appman/creator-appman-how-to-run.qdoc
@@ -153,5 +153,5 @@
{Remote Linux}{How To: Develop for remote Linux},
{Run on many platforms}, {Debugging}, {Debuggers}, {Debugger},
{Developing for \B2Q Devices}, {Developing for Remote Linux Devices},
- {Profiling QML Applications}
+ {Profiling QML Applications}, {Kits}
*/
diff --git a/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc b/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc
index 70ded6fc366..67b73cf9822 100644
--- a/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc
+++ b/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc
@@ -71,7 +71,8 @@
The available settings depend on the debug server provider.
- \sa {Enable and disable plugins}, {Bare Metal}{How To: Develop for Bare Metal}
+ \sa {Add kits}, {Enable and disable plugins},
+ {Bare Metal}{How To: Develop for Bare Metal}
*/
/*!
@@ -296,6 +297,7 @@
\previouspage creator-how-tos.html
\ingroup creator-how-to-bare-metal
+ \ingroup creator-how-to-manage-kits
\title Add Bare Metal devices
diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc
index aac591854cd..c3b9692c5ae 100644
--- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc
+++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc
@@ -11,15 +11,15 @@
\brief Settings for building applications with CMake.
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify build settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build >
\uicontrol {Build Settings}.
Configuring medium-sized to large CMake projects in \QC can be a
challenge due to the number of variables that you need to pass to
CMake to configure the project correctly. To make this easier,
- \QC creates an initial configuration for you based on the kit
- settings and displays it in \uicontrol {Initial Configuration} in
+ \QC creates an initial configuration for you based on the \l{Kits}
+ {kit preferences} and displays it in \uicontrol {Initial Configuration} in
the \uicontrol {Build Settings} of the project.
Or, you can use CMake presets to configure CMake.
diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc
index 1cc600123a6..ace6f693895 100644
--- a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc
+++ b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc
@@ -133,12 +133,13 @@
\previouspage creator-how-tos.html
\ingroup creator-how-to-build-with-cmake
+ \ingroup creator-how-to-manage-kits
\title Add CMake tools
\QC automatically detects the CMake executable that you specify in the
\c PATH. You can add paths to other CMake executables and use them in
- different build and run \l{glossary-buildandrun-kit}{kits}.
+ different build and run \l{Kits}{kits}.
To see the CMake installations that \QC automatically detects:
@@ -183,8 +184,8 @@
\image qtcreator-kits-cmake.png {Kits preferences}
- \sa {Build with CMake}{How To: Build with CMake}, {CMake}, {Add kits},
- {kits-tab}{Kits}
+ \sa {Build with CMake}{How To: Build with CMake},
+ {Manage Kits}{How To: Manage Kits}, {CMake}, {Kits}
*/
/*!
diff --git a/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc
index 55f71c40d05..81ecd115756 100644
--- a/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc
+++ b/doc/qtcreator/src/conan/creator-projects-conan-building.qdoc
@@ -11,7 +11,7 @@
\brief Settings for building applications with the Conan package manager.
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify build settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build >
\uicontrol {Build Settings}.
@@ -30,5 +30,5 @@
Select \uicontrol {Build missing} to build packages from source if binary
packages are not found.
- \sa {Conan Package Manager}
+ \sa {Activate kits for a project}, {Conan Package Manager}
*/
diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc
index d2836a9c5f5..c726d15e601 100644
--- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc
+++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc
@@ -58,7 +58,7 @@
\endtable
The debugger plugin automatically selects a suitable native debugger for
- each \l{kits-tab}{kit} from the ones found on the computer. The automatic
+ each \l{Kits}{kit} from the ones found on the computer. The automatic
setup fails if the native debugger is not installed on the computer or
if \QC does not support the installed version.
@@ -148,5 +148,5 @@
\image qtcreator-run-settings-python.webp {Run settings for a Python project}
- \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}
+ \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}, {Kits}
*/
diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc
index eee91df904b..25c127aa413 100644
--- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc
+++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc
@@ -29,7 +29,7 @@
\section1 Setting Up the Debugger
The debugger plugin automatically selects a suitable native debugger for
- each \l{kits-tab}{kit} from the ones found on your system. You can select
+ each \l{Kits}{kit} from the ones found on your system. You can select
another kit. To specify the debugger and compiler to use for each kit, go to
\preferences > \uicontrol Kits.
@@ -212,7 +212,7 @@
\l{Debugging a Qt Quick Application}.
\sa {Debugging a C++ Application}, {Debug}{How To: Debug}, {Debuggers},
- {Debugger}
+ {Debugger}, {Kits}
*/
/*!
@@ -301,7 +301,7 @@
\title Start and debug an external application
To debug any executable on your local or on a remote
- machine without using a project, specify a build and run kit that
+ machine without using a project, specify a build and run \l{Kits}{kit} that
identifies the device to debug the application on.
While the \e{start external} debugger mode does not strictly require a
@@ -342,7 +342,8 @@
configuration to use.
\endlist
- \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}
+ \sa {Activate kits for a project}, {Debug}{How To: Debug}, {Debugging},
+ {Debuggers}, {Debugger}
*/
/*!
@@ -406,7 +407,8 @@
process to start.
\endlist
- \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}
+ \sa {Activate kits for a project}, {Debug}{How To: Debug}, {Debugging},
+ {Debuggers}, {Debugger}
*/
/*!
diff --git a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc
index 1d4f41f789e..e44a2f93fc9 100644
--- a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc
+++ b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc
@@ -281,6 +281,6 @@
updated in the running application, but not in the source code.
\if defined(qtcreator)
- \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}
+ \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}, {Kits}
\endif
*/
diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc
index b9b4b1bc735..8d82c2a52a9 100644
--- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc
+++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc
@@ -250,8 +250,8 @@
To disable the embedded code model and use \QMLLS for everything,
select \uicontrol {Use \QMLLS advanced features}.
- Also, \QC tries to use \QMLLS shipped with
- the Qt version in your current kit. To override that behavior and always use
+ Also, \QC tries to use \QMLLS shipped with the Qt version in your current
+ \l{Kits}{kit}. To override that behavior and always use
\QMLLS of the highest registered Qt version, select
\uicontrol {Use \QMLLS from latest Qt version}.
@@ -262,7 +262,7 @@
> \uicontrol {Initial Configuration}.
\sa {Manage Language Servers}{How To: Manage Language Servers},
- {Enabling and Disabling Messages}, {CMake Build Configuration},
+ {Enabling and Disabling Messages}, {CMake Build Configuration}, {Kits}
{Language Servers}
*/
diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc
index d19c3e9d8fb..6395da3c317 100644
--- a/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc
+++ b/doc/qtcreator/src/howto/creator-only/creator-how-to-install.qdoc
@@ -41,7 +41,7 @@
instructions to install \QC.
To develop with Qt, you also need a Qt version. You can register Qt versions
- in the stand-alone \QC to use them in \l{kits-tab}{kits}.
+ in the stand-alone \QC to use them in \l{Kits}{kits}.
\section2 Use package managers
@@ -89,5 +89,5 @@
{Compiling \QC} and \l{https://wiki.qt.io/Building_Qt_Creator_from_Git}
{Building Qt Creator from Git}.
- \sa {Register installed Qt versions}
+ \sa {Manage Kits}{How To: Manage Kits}, {Register installed Qt versions}
*/
diff --git a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc
index 967031f69be..8685f850ce4 100644
--- a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc
+++ b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc
@@ -53,8 +53,8 @@
This also enables code completion of QML code and removes error messages.
The following example illustrates how to specify the import path for qmake
- projects so that it works when switching between build and run kits for
- different target platforms:
+ projects so that it works when switching between build and run \l{Kits}{kits}
+ for different target platforms:
\code
TEMPNAME = $${QMAKE_QMAKE}
diff --git a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc
index f872adc77e6..f3828018149 100644
--- a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc
+++ b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc
@@ -10,7 +10,7 @@
\brief Build and clean steps for Incredibuild.
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify build settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build >
\uicontrol {Build Settings}.
diff --git a/doc/qtcreator/src/ios/creator-ios-dev.qdoc b/doc/qtcreator/src/ios/creator-ios-dev.qdoc
index f02397f149f..b6c8d53cde9 100644
--- a/doc/qtcreator/src/ios/creator-ios-dev.qdoc
+++ b/doc/qtcreator/src/ios/creator-ios-dev.qdoc
@@ -147,7 +147,8 @@
If the current device state is \uicontrol Connected, (the traffic light icon is
orange), you need to configure the device using Xcode.
- \sa {iOS}{How To: Develop for iOS}, {Developing for iOS}
+ \sa {Activate kits for a project}, {iOS}{How To: Develop for iOS},
+ {Developing for iOS}
*/
/*!
diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc
index d39f924f046..241b0ce2f34 100644
--- a/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc
+++ b/doc/qtcreator/src/linux-mobile/creator-projects-how-to-run-generic-linux.qdoc
@@ -34,6 +34,6 @@
Debugging works transparently if GDB server is installed on the device and
it is compatible with the GDB on the host.
- \sa {Remote Linux}{How To: Develop for remote Linux}, {Run on many platforms}, {Compilers},
- {Embedded Platforms}, {kit-preferences}{Kits}
+ \sa {Remote Linux}{How To: Develop for remote Linux},
+ {Run on many platforms}, {Compilers}, {Embedded Platforms}, {Kits}
*/
diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc
index a8d3093cfb5..01eb71f171f 100644
--- a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc
+++ b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-b2qt.qdoc
@@ -11,7 +11,7 @@
\brief Settings for running applications on \B2Q devices.
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
@@ -25,6 +25,6 @@
host and on the device.
\sa {\B2Q}{How To: Develop for \B2Q}, {Manage Kits}{How To: Manage Kits},
- {Configure projects for running}, {kits-tab}{Kits},
+ {Configure projects for running}, {Kits},
{\B2Q Deploy Configuration}
*/
diff --git a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc
index adc27d6a93e..37954b8e89a 100644
--- a/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc
+++ b/doc/qtcreator/src/linux-mobile/creator-projects-settings-run-linux.qdoc
@@ -11,7 +11,7 @@
\brief Settings for running applications on Linux-based devices.
- Specify run settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify run settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Run >
\uicontrol {Run Settings}.
@@ -37,6 +37,6 @@
Select the \uicontrol {Forward to local display} check box to show a remotely
running X11 client on a local display.
- \sa {Activate kits for a project}, {Configure projects for running}, {kits-tab}{Kits},
+ \sa {Activate kits for a project}, {Configure projects for running}, {Kits},
{Remote Linux}{How To: Develop for remote Linux}
*/
diff --git a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc
index 19ba26bdca4..f49e375f617 100644
--- a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc
+++ b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc
@@ -181,6 +181,7 @@
\previouspage creator-how-tos.html
\ingroup creator-how-to-mcu
+ \ingroup creator-how-to-manage-kits
\title Manage MCU Kits
@@ -209,7 +210,7 @@
software required for MCU development with the current kit.
\sa {Enable and disable plugins}, {MCUs}{How To: Develop for MCUs},
- {Developing for MCUs}
+ {Manage Kits}{How To: Manage Kits}, {Developing for MCUs}
*/
/*!
diff --git a/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc
index d0ada5efced..5132adf9dc0 100644
--- a/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc
+++ b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc
@@ -10,7 +10,7 @@
\brief Settings for building applications with Meson.
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify build settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build >
\uicontrol {Build Settings}.
diff --git a/doc/qtcreator/src/meson/creator-projects-meson.qdoc b/doc/qtcreator/src/meson/creator-projects-meson.qdoc
index a6418fcc663..4c71fc7e5e8 100644
--- a/doc/qtcreator/src/meson/creator-projects-meson.qdoc
+++ b/doc/qtcreator/src/meson/creator-projects-meson.qdoc
@@ -21,7 +21,7 @@
\QC automatically detects the Meson and Ninja executables specified in the
\c PATH. You can add paths to other Meson or Ninja executables and use them
- in different build and run \l{glossary-buildandrun-kit}{kits}.
+ in different build and run \l{Kits}{kits}.
\note Enable the Meson plugin to use it.
@@ -54,7 +54,7 @@
\image qtcreator-kits-meson.png "Setting Meson executable in Kit preferences"
- For more information, see \l {kits-tab}{Kits}.
+ For more information, see \l {Kits}.
\section1 Editing Meson Build Descriptions
diff --git a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc
index b2ea02c1280..3e7f74ae75e 100644
--- a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc
+++ b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc
@@ -20,7 +20,7 @@
However, if you install the stand-alone \QC package, build \QC from sources,
or install several Qt versions, you may need to tell \QC where to find the
Qt versions and compilers by adding the paths to them and by creating
- \l{glossary-buildandrun-kit}{kits} that use them.
+ \l{Kits}{kits} that use them.
To make \QC behave more like your favorite code editor or IDE,
change the preferences for keyboard shortcuts, color schemes, generic
diff --git a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc
index e735c95adf0..3504fd1c33d 100644
--- a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc
+++ b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc
@@ -50,7 +50,7 @@
\li \b {\l{Building and Running an Example}}
To check that \l{https://www.qt.io/download-qt-installer}
- {\QOI} created \l{glossary-buildandrun-kit}
+ {\QOI} created \l{Kits}
{build and run kits}, open an example application and run it.
If you have not done so before, go to
\l{Building and Running an Example}.
diff --git a/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc b/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc
index 1dc1fb0d6b1..16d45c42278 100644
--- a/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc
+++ b/doc/qtcreator/src/overview/creator-only/creator-keyboard-shortcuts.qdoc
@@ -570,7 +570,7 @@
\li Open project
\li Ctrl+Shift+O
\row
- \li Select the \l{glossary-buildandrun-kit}{kit} to build and run your project with
+ \li Select the \l{Kits}{kit} to build and run your project with
\li Ctrl+T
\row
\li Run
diff --git a/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc b/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc
index 127a59cf0d1..d7afb4ee549 100644
--- a/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc
+++ b/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc
@@ -181,7 +181,7 @@
Run and deploy Qt applications that you build for different target
platforms or with different compilers, debuggers, or Qt versions.
- \l{glossary-buildandrun-kit}{Kits} define the tools, \l{glossary-device}
+ \l{Kits} define the tools, \l{glossary-device}
{device} type and other settings to use when building and running your
project.
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 78eb3ecf689..814189ee7b6 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
@@ -11,7 +11,7 @@
\brief Settings for building applications with qmake.
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit}
+ Specify build settings for the selected \l{Kits}{kit}
in \uicontrol Projects > \uicontrol {Build & Run}
> \uicontrol Build > \uicontrol {Build Settings}.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc
index 60f0d3bb0b1..a5037be5b91 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc
@@ -39,5 +39,5 @@
To remove the selected property, select \uicontrol Remove.
- \sa {Activate kits for a project}, {Add kits}, {kits-tab}{Kits}
+ \sa {Activate kits for a project}, {Add kits}, {Kits}
*/
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc
index 600b8f30791..eb8e2a14ee1 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc
@@ -51,7 +51,7 @@
(4) to list examples that you can run on \B2Q devices.
\li In \uicontrol {Configure Project}, select
- \l{glossary-buildandrun-kit}{kits} for building the example for the
+ \l{Kits}{kits} for building the example for the
target platforms.
\image qtcreator-configure-project.webp {Configure Project view}
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc
index 7cfb8f86e0f..a0189b216ab 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc
@@ -16,7 +16,7 @@
\title Build for many platforms
You can build applications for many target platforms, or using different
- compilers, debuggers or Qt versions. \l{glossary-buildandrun-kit}{Kits}
+ compilers, debuggers or Qt versions. \l{Kits}
define the tools, \l{glossary-device}{device} type, and other settings to use.
By default, when you run the application, you
@@ -34,9 +34,8 @@
\list 1
\li Select the \uicontrol {Build and Run Kit Selector} icon or go to
- \uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to select the
- build and run \l{glossary-buildandrun-kit}{kit} or an
- \l{Manage AVDs}{Android device}.
+ \uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to
+ select the build and run kit or an \l{Manage AVDs}{Android device}.
\image qtcreator-kit-selector.webp {Kit selector}
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 42cc51bef98..e068ec86d4f 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc
@@ -18,7 +18,7 @@
You can develop Qt applications on several 32-bit and 64-bit platforms.
Usually, you can build Qt applications on each platform with GCC, a
vendor-supplied compiler, or a third party compiler. In \QC, a
- \l{glossary-buildandrun-kit}{kit} specifies the compiler and other
+ \l{Kits}{kit} specifies the compiler and other
necessary tools for building an application for and running it on a
particular platform.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc
index 5388f7c6e5d..92858ff6078 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc
@@ -63,7 +63,7 @@
To test applications on \l{glossary-device}{devices}, you can install
toolchains for mobile and embedded development as part of Qt distributions.
- The installers create \l{glossary-buildandrun-kit}{kits} and specify build
+ The installers create \l{Kits}{kits} and specify build
and run settings for the installed device types. However, you might need to
install and configure some additional software on the devices to be able to
\l{Develop for Devices}{connect} to them from the computer.
@@ -81,7 +81,7 @@
To create a new project, select \uicontrol File > \uicontrol{New Project} and
select the type of your project. The contents of the wizard dialogs depend
- on the project type and the \l{glossary-buildandrun-kit}{kits} that you
+ on the project type and the \l{Kits}{kits} that you
select in the \uicontrol {Kit Selection} dialog. Follow the instructions of
the wizard.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc
index 59db5927051..a99de7c59ab 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc
@@ -21,7 +21,7 @@
debugger of the low level virtual machine (LLVM) project, LLDB.
The debugger plugin automatically selects a suitable native debugger for
- each \l{glossary-buildandrun-kit}{kit} from the ones found on your system.
+ each \l{Kits}{kit} from the ones found on your system.
To override this choice, select \preferences > \uicontrol Kits.
To add debuggers:
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc
index 1e2b8ed818a..1237c748443 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc
@@ -45,7 +45,7 @@
\li Select \uicontrol Add to start from an empty kit or \uicontrol Clone
to clone the selected kit and edit its preferences.
\image qtcreator-kits.png
- \li Set \l{kits-tab}{kit preferences} according to the build system and
+ \li Set \l{Kits}{kit preferences} according to the build system and
device type.
\li Select \uicontrol OK to create the kit.
@@ -58,8 +58,7 @@
choose the kit to use. To set the selected kit as the default kit,
select \uicontrol {Make Default}.
- \sa {Activate kits for a project}, {Add debuggers}, {Add Qt versions},
- {Open projects}, {Compilers}, {kits-tab}{Kits}
+ \sa {Manage Kits}{How To: Manage Kits}, {Compilers}, {Kits}
*/
/*!
@@ -214,7 +213,6 @@
\uicontrol Manage to add installed Ninja tools to the list.
\endtable
- \sa {Activate kits for a project}, {Open projects}, {Add CMake Tools},
- {Add compilers}, {Add debuggers}, {Add kits}, {Add Qt versions},
+ \sa {Manage Kits}{How To: Manage Kits}, {Add CMake Tools},
{Edit Qbs profiles}
*/
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc
index c85da814661..a01c06b6559 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc
@@ -20,7 +20,7 @@
\note Enable the Nim plugin to use Nimble and Nim.
In addition, you have to download and install Nim and set up a
- \l {glossary-buildandrun-kit}{kit} that contains the Nim compiler.
+ \l {Kits}{kit} that contains the Nim compiler.
You can use wizards to create Nim and Nimble projects.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc
index 66b69a573fe..67fc416ee7a 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc
@@ -13,6 +13,7 @@
\previouspage creator-how-tos.html
\ingroup creator-how-to-projects-configure
+ \ingroup creator-how-to-manage-kits
\title Open projects
@@ -64,7 +65,7 @@
\list 1
\li In \uicontrol {Configure Project}, select
- \l{glossary-buildandrun-kit}{kits} for building
+ \l{Kits}{kits} for building
and running your project.
\image qtcreator-configure-project.webp {Configure Project view}
\li Select \uicontrol {Configure Project}.
@@ -112,5 +113,5 @@
later. Select the \inlineimage icons/pin.png
(\uicontrol Pin) button to pin the progress bar back to the toggle button.
- \sa {Activate kits for a project}, {Add kits}, {kits-tab}{Kits},
+ \sa {Manage Kits}{How To: Manage Kits}, {Kits},
*/
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 b177af0b8d5..0c33472862d 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
@@ -11,7 +11,7 @@
\brief Settings for building applications with Qbs.
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify build settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build >
\uicontrol {Build Settings}.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc
index b3ababb5fbf..644b30ac3b1 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc
@@ -16,7 +16,7 @@
\title Configure projects for building
- Specify build settings for the selected \l{glossary-buildandrun-kit}{kit} in
+ Specify build settings for the selected \l{Kits}{kit} in
\uicontrol Projects > \uicontrol {Build & Run} > \uicontrol Build >
\uicontrol {Build Settings}.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc
index 3f8e93f1421..75544e47e80 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc
@@ -16,7 +16,7 @@
When you install Qt for a development or target platform, such as Linux,
\macos, Windows, Android or QNX, \l{https://www.qt.io/download-qt-installer}
- {\QOI} creates \l{glossary-buildandrun-kit}{kits} for the development targets.
+ {\QOI} creates \l{Kits}{kits} for the development targets.
Select the kits to use for a project in the \uicontrol {Configure Projects}
view when you open the project for the first time. At least one kit must be
@@ -65,7 +65,7 @@
\section1 Specifying Run Settings
The run settings to specify depend on the type of the project and on the
- \l{kits-tab}{Run device} that you select for the kit.
+ \l{Kits}{Run device} that you select for the kit.
\QC automatically creates deploy and run configurations for your project.
@@ -112,6 +112,7 @@
\previouspage creator-how-tos.html
\ingroup creator-how-to-projects-configure
+ \ingroup creator-how-to-manage-kits
\title Activate kits for a project
@@ -175,5 +176,5 @@
might still see them listed for existing projects. You can copy the build,
deploy, and run steps from them to other kits.
- \sa {Add kits}, {Configuring Projects}, {kits-tab}{Kits}
+ \sa {Manage Kits}{How To: Manage Kits}, {Configuring Projects}, {Kits}
*/
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc
index 99802a720b6..9c1463f2d9b 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-analyze.qdoc
@@ -9,7 +9,7 @@
\title Specify Valgrind settings for a project
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc
index b0609ab7716..486b8b8c4c5 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdoc
@@ -10,7 +10,7 @@
\title Enable debugging
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc
index 72085701e16..35188f5ce94 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc
@@ -11,7 +11,7 @@
\brief Settings for running applications on desktop device types.
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc
index bf816f43511..f989924d560 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc
@@ -16,7 +16,7 @@
\title Configure projects for running
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
diff --git a/doc/qtcreator/src/projects/creator-projects-running.qdoc b/doc/qtcreator/src/projects/creator-projects-running.qdoc
index 1dd25de23a0..f83a9c00ba7 100644
--- a/doc/qtcreator/src/projects/creator-projects-running.qdoc
+++ b/doc/qtcreator/src/projects/creator-projects-running.qdoc
@@ -28,7 +28,7 @@
\li Select the \uicontrol {Build and Run Kit Selector} icon or go to
\uicontrol Build > \uicontrol {Open Build and Run Kit Selector} to select the
- build and run \l{glossary-buildandrun-kit}{kit}.
+ build and run \l{Kits}{kit}.
\image qtcreator-kit-selector.webp {Kit selector}
diff --git a/doc/qtcreator/src/python/creator-python-development.qdoc b/doc/qtcreator/src/python/creator-python-development.qdoc
index 8978c09d609..ba8053c3d3d 100644
--- a/doc/qtcreator/src/python/creator-python-development.qdoc
+++ b/doc/qtcreator/src/python/creator-python-development.qdoc
@@ -74,7 +74,7 @@
\section1 Select the Python version
- The \l{kits-tab}{kits} you select for the project in \uicontrol Projects >
+ The \l{Kits}{kits} you select for the project in \uicontrol Projects >
\uicontrol {Build & Run} set the Python version to use.
The \l {Edit Mode}{Edit mode} toolbar shows the current Python version.
diff --git a/doc/qtcreator/src/python/creator-python-run-settings.qdoc b/doc/qtcreator/src/python/creator-python-run-settings.qdoc
index 6c6c3b4fe2b..07cf625450d 100644
--- a/doc/qtcreator/src/python/creator-python-run-settings.qdoc
+++ b/doc/qtcreator/src/python/creator-python-run-settings.qdoc
@@ -31,7 +31,7 @@
\brief Settings for running Qt for Python applications.
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
diff --git a/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc b/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc
index 4e39314d8f5..edd78c0a193 100644
--- a/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc
+++ b/doc/qtcreator/src/qnx/creator-projects-settings-run-qnx.qdoc
@@ -11,7 +11,7 @@
\brief Settings for running applications on Linux-based devices.
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
diff --git a/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc b/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc
index 3f2ee989012..1d7be468c7b 100644
--- a/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc
+++ b/doc/qtcreator/src/qtquick/creator-only/creator-projects-settings-run-qtquick.qdoc
@@ -11,11 +11,11 @@
\brief Settings for running Qt Quick UI Prototype projects (.qmlproject).
- Specify settings for running applications on the \l {kits-tab}{Run device} that
+ Specify settings for running applications on the \l {Kits}{Run device} that
you select for a kit in \uicontrol Projects > \uicontrol {Build & Run} >
\uicontrol Run > \uicontrol {Run Settings}.
- \note Select the \uicontrol Desktop device type for the \l{kits-tab}{Run device}
+ \note Select the \uicontrol Desktop device type for the \l{Kits}{Run device}
in the kit.
\image qtquick-ui-prototype-run-settings.webp {Run Settings for a Qt Quick UI Prototype project}
@@ -42,5 +42,5 @@
\endtable
\sa {Create Qt Quick UI Prototypes}, {Activate kits for a project},
- {Configure projects for running}, {kits-tab}{Kits}
+ {Configure projects for running}, {Kits}
*/
diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc
index 0fbb4fdea07..f7181c59cf1 100644
--- a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc
+++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc
@@ -76,12 +76,12 @@
\li Select \uicontrol Next to open the \uicontrol {Kit Selection}
dialog.
- \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that
+ \li Select \l{Kits}{kits} for the platforms that
you want to build the application for.
\note Kits are listed if they have been specified in \preferences >
\uicontrol Kits.
- For more information, see \l {Add kits} and \l {kits-tab}{Kits}.
+ For more information, see \l {Add kits} and \l {Kits}.
\li Select \uicontrol Next to open the \uicontrol {Project Management}
dialog.
@@ -161,12 +161,11 @@
\li Select \uicontrol Next to open the \uicontrol {Kit Selection}
dialog.
- \li Select \l{glossary-buildandrun-kit}{kits} for the platforms that
+ \li Select \l{Kits}{kits} for the platforms that
you want to build the application for.
\note Kits are listed if they have been specified in \preferences >
\uicontrol Kits.
- For more information, see \l {Add kits} and \l {kits-tab}{Kits}.
\li Select \uicontrol Next to open the \uicontrol {Project Management}
dialog.
@@ -197,5 +196,6 @@
To use JavaScript and image files in the application, copy them to the
project folder.
- \sa {Create Qt Quick Applications}, {Creating Projects}
+ \sa {Create Qt Quick Applications}, {Manage Kits}{How To: Manage Kits},
+ {Creating Projects}
*/
diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc
index be0c55516a9..22d887c161c 100644
--- a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc
+++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc
@@ -37,14 +37,14 @@
\li Select \uicontrol Next to open the \uicontrol {Kit Selection} dialog.
- \li Select Qt 6.4 or later \l{glossary-buildandrun-kit}{kits} for the
+ \li Select Qt 6.4 or later \l{Kits}{kits} for the
platforms that you want to build the application for. To build
applications for mobile devices, select kits also for Android and
iOS.
\note The list shows kits that you specify in \preferences >
\uicontrol Kits.
- For more information, see \l {Add kits} and \l {kits-tab}{Kits}.
+ For more information, see \l {Add kits} and \l {Kits}.
\li Select \uicontrol Next to open the \uicontrol {Project Management}
dialog.
diff --git a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc
index b22bd5be5e7..eb74c5b547d 100644
--- a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc
+++ b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc
@@ -37,7 +37,7 @@
\li Set up QML debugging for the project. For more information, see
\l{Setting Up QML Debugging}.
\if defined(qtcreator)
- \li In the \uicontrol Projects mode, select a \l{glossary-buildandrun-kit}
+ \li In the \uicontrol Projects mode, select a \l{Kits}
{kit} with Qt version 4.7.4 or later.
\endif
\note To profile applications on \l{glossary-device}{devices}, you
diff --git a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc
index 0381320085f..5116000256c 100644
--- a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc
+++ b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc
@@ -294,6 +294,6 @@
\sa {View output}
\if defined(qtcreator)
- \sa {Add custom output parsers}
+ \sa {Add custom output parsers}, {Kits}
\endif
*/
diff --git a/doc/qtcreator/src/user-interface/creator-ui.qdoc b/doc/qtcreator/src/user-interface/creator-ui.qdoc
index 9794667f5b3..b6a4686f473 100644
--- a/doc/qtcreator/src/user-interface/creator-ui.qdoc
+++ b/doc/qtcreator/src/user-interface/creator-ui.qdoc
@@ -33,7 +33,7 @@
\row
\li \inlineimage numbers/02.png
\li Kit selector
- \li Select the appropriate \l{glossary-buildandrun-kit}{kit} for building
+ \li Select the appropriate \l{Kits}{kit} for building
the project and running it on particular hardware.
\li \l{Activate kits for a project}
\row
diff --git a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc
index 8f744bced05..4596d46da2e 100644
--- a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc
+++ b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc
@@ -76,7 +76,7 @@
\image qtcreator-new-project-qt-versions-qt-gui.png {Kit Selection dialog}
- \li Select build and run \l{glossary-buildandrun-kit}{kits} for your
+ \li Select build and run \l{Kits}{kits} for your
project.
\li Select \uicontrol Next or \uicontrol Continue to open the
From 70538bf38ce4f75dd5c2c114ea559db8a8977ded Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Robert=20L=C3=B6hning?=
Date: Thu, 6 Jun 2024 21:59:26 +0200
Subject: [PATCH 05/30] SquishTests: Handle and report missed breakpoint
instead of crashing
Change-Id: I28756803149828da871d48303ac0c989a2e99f7e
Reviewed-by: Christian Stenger
---
tests/system/suite_debugger/tst_debug_empty_main/test.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tests/system/suite_debugger/tst_debug_empty_main/test.py b/tests/system/suite_debugger/tst_debug_empty_main/test.py
index d62f76cdebf..2d166d2a876 100644
--- a/tests/system/suite_debugger/tst_debug_empty_main/test.py
+++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py
@@ -91,6 +91,9 @@ def performDebugging(projectName):
invokeMenuItem("Debug", "Enable or Disable Breakpoint")
clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton"))
handleDebuggerWarnings(config, isMsvc)
- clickButton(waitForObject(":*Qt Creator.Continue_Core::Internal::FancyToolButton"))
+ continueButtonStr = ":*Qt Creator.Continue_Core::Internal::FancyToolButton"
+ if test.verify(waitFor(lambda: object.exists(continueButtonStr), 20000),
+ "Did the debugger stop at the breakpoint as expected?"):
+ clickButton(waitForObject(continueButtonStr, 1000))
__handleAppOutputWaitForDebuggerFinish__()
removeOldBreakpoints()
From c1c462ab115b4fd1e1abe2a319c19b510a7e0968 Mon Sep 17 00:00:00 2001
From: Leena Miettinen
Date: Fri, 14 Jun 2024 16:52:30 +0200
Subject: [PATCH 06/30] Doc: Mention "Compiler Explorer Qt & C++ Source"
template
Task-number: QTCREATORBUG-30604
Change-Id: I9f21d21086cff38923a2ef2f398d68b2f8652470
Reviewed-by: Marcus Tillmanns
---
dist/changelog/changes-14.0.0.md | 4 +++-
...creator-new-project-compiler-explorer.webp | Bin 0 -> 10908 bytes
...how-to-create-compiler-explorer-setup.qdoc | 18 +++++++++++++-----
3 files changed, 16 insertions(+), 6 deletions(-)
create mode 100644 doc/qtcreator/images/qtcreator-new-project-compiler-explorer.webp
diff --git a/dist/changelog/changes-14.0.0.md b/dist/changelog/changes-14.0.0.md
index e5dc688e599..1d33c9fc9bd 100644
--- a/dist/changelog/changes-14.0.0.md
+++ b/dist/changelog/changes-14.0.0.md
@@ -110,7 +110,9 @@ Editing
### Compiler Explorer
-* Added a wizard template for code that uses Qt
+* Added a wizard template for code that uses Qt to `File`> `New File`>
+ `Compiler Explorer`
+ [Documentation](https://doc.qt.io/qtcreator/creator-how-to-create-compiler-explorer-sessions.html)
### Models
diff --git a/doc/qtcreator/images/qtcreator-new-project-compiler-explorer.webp b/doc/qtcreator/images/qtcreator-new-project-compiler-explorer.webp
new file mode 100644
index 0000000000000000000000000000000000000000..3744f4100fab70480d0d45b5b8695059b5c9cce0
GIT binary patch
literal 10908
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
literal 0
HcmV?d00001
diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc
index b35df2e6707..a8bc0f11d4b 100644
--- a/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc
+++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-create-compiler-explorer-setup.qdoc
@@ -9,19 +9,27 @@
\title Create compiler explorer sessions
- To create a compiler explorer session for a C++ or Python project:
+ \note Enable the Compiler Explorer plugin to use it.
+
+ To create a compiler explorer session for a Qt and C++, C++, or Python
+ project:
\list 1
\li Go to \uicontrol File > \uicontrol {New File}.
- \li Select \uicontrol {Compiler Explorer} > \uicontrol C++ or
- \uicontrol Python > \uicontrol Choose.
+ \li Select \uicontrol {Compiler Explorer}, and then select one of the
+ following:
+ \list
+ \li \uicontrol {Compiler Explorer C++ Source}
+ \li \uicontrol {Compiler Explorer Python Source}
+ \li \uicontrol {Compiler Explorer Qt & C++ Source}
+ \endlist
+ \image qtcreator-new-project-compiler-explorer.webp {New File dialog}
+ \li Select \uicontrol Choose.
\li Follow the instructions of the wizard to create an example
compiler explorer session as a JSON-based \c .qtce file and to open
it.
\endlist
- \note Enable the Compiler Explorer plugin to use it.
-
\sa {Create files}, {Enable and disable plugins}, {Explore compiler code}
*/
From c246cb87084646d28702add0c7609fbb47879356 Mon Sep 17 00:00:00 2001
From: David Schulz
Date: Tue, 18 Jun 2024 07:44:53 +0200
Subject: [PATCH 07/30] LanguageClient: postpone unreachable server error
reporting
Since the overall nature of the communication is asynchronous calling
functions might not expect that an error is reported from within the
sendMessage function.
Fixes: QTCREATORBUG-31054
Change-Id: Ie73510eb632408a9f7a9367c3a3e47ad021da7fe
Reviewed-by: Christian Kandeler
---
src/plugins/languageclient/client.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp
index c12693e4808..2ec4d41dbf3 100644
--- a/src/plugins/languageclient/client.cpp
+++ b/src/plugins/languageclient/client.cpp
@@ -735,7 +735,7 @@ void Client::openDocument(TextEditor::TextDocument *document)
void Client::sendMessage(const JsonRpcMessage &message, SendDocUpdates sendUpdates,
Schedule semanticTokensSchedule)
{
- QScopeGuard guard([responseHandler = message.responseHandler()](){
+ QScopeGuard guard([this, responseHandler = message.responseHandler()](){
if (responseHandler) {
static ResponseError error;
if (!error.isValid()) {
@@ -745,7 +745,9 @@ void Client::sendMessage(const JsonRpcMessage &message, SendDocUpdates sendUpdat
QJsonObject response;
response[idKey] = responseHandler->id;
response[errorKey] = QJsonObject(error);
- responseHandler->callback(JsonRpcMessage(response));
+ QMetaObject::invokeMethod(this, [callback = responseHandler->callback, response](){
+ callback(JsonRpcMessage(response));
+ }, Qt::QueuedConnection);
}
});
From 441ce652e7f9325babe8230693ea6723d2b7d4cd Mon Sep 17 00:00:00 2001
From: Christian Stenger
Date: Tue, 18 Jun 2024 07:34:45 +0200
Subject: [PATCH 08/30] Lua: Small tweak of wizard file
Change-Id: Ifef368aa646589d75f761c9893a18fa77b1b179c
Reviewed-by: Marcus Tillmanns
---
src/plugins/lua/wizards/plugin/wizard.json | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/src/plugins/lua/wizards/plugin/wizard.json b/src/plugins/lua/wizards/plugin/wizard.json
index b897f1eb141..a295dc27d45 100644
--- a/src/plugins/lua/wizards/plugin/wizard.json
+++ b/src/plugins/lua/wizards/plugin/wizard.json
@@ -1,7 +1,7 @@
{
"version": 1,
"supportedProjectTypes": [
- "Qt4ProjectManager.Qt4Project"
+ "ProjectExplorer.WorkspaceProject"
],
"id": "R.QtCreatorLuaPlugin",
"category": "G.Library",
@@ -9,11 +9,7 @@
"trDisplayName": "Qt Creator Lua Plugin",
"trDisplayCategory": "Library",
"iconText": "LuaP",
- "featuresRequired": [
- "QtSupport.Wizards.FeatureQt",
- "QtSupport.Wizards.FeatureDesktop"
- ],
- "enabled": "%{JS: value('Plugins').indexOf('CMakeProjectManager') >= 0}",
+ "featuresRequired": [],
"options": [
{
"key": "ProjectFile",
@@ -26,14 +22,6 @@
{
"key": "SrcFileName",
"value": "init.lua"
- },
- {
- "key": "CN",
- "value": "%{JS: Cpp.className(value('PluginName') + 'Plugin')}"
- },
- {
- "key": "HasTranslation",
- "value": "%{JS: value('TsFileName') !== ''}"
}
],
"pages": [
From 5f8ffd66ff1b1383bc4caff0c8dc725ee3966d1e Mon Sep 17 00:00:00 2001
From: David Schulz
Date: Thu, 6 Jun 2024 09:30:17 +0200
Subject: [PATCH 09/30] QmlJSEditor: fix assigning outline toolbar widget
Instead of adding a second toolbar widget, replace the current one. This
avoids weird situations where you get two outline toolbar widgets, one
provided by qmljseditorwidget and another one provided by qmlls.
Turning the language server on deletes the combobox created by
qmljseditorwidget, such that qmljseditorwidget has to recreate
its combobox after the language server stopped being in use.
Also make sure that m_outlineCombo is set to nullptr after it gets
deleted, such that late jumpToOutlineElement and
updateOutlineIndexNow() calls do no try to attempt stuff on an already
free'd pointer.
Change-Id: Ie323a7b3e7a4d5e24407fcedf8383dd2f0efe525
Reviewed-by: Ulf Hermann
Reviewed-by: David Schulz
Reviewed-by: Fabian Kosmale
---
src/plugins/qmljseditor/qmljseditor.cpp | 17 ++++++++++++++++-
src/plugins/qmljseditor/qmljseditor.h | 1 +
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 540e5559de6..11dc5cf9ae8 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -267,6 +267,8 @@ bool QmlJSEditorWidget::isOutlineCursorChangesBlocked()
void QmlJSEditorWidget::jumpToOutlineElement(int /*index*/)
{
+ if (!m_outlineCombo)
+ return;
QModelIndex index = m_outlineCombo->view()->currentIndex();
SourceLocation location = m_qmlJsEditorDocument->outlineModel()->sourceLocation(index);
@@ -285,6 +287,8 @@ void QmlJSEditorWidget::jumpToOutlineElement(int /*index*/)
void QmlJSEditorWidget::updateOutlineIndexNow()
{
+ if (!m_outlineCombo)
+ return;
if (!m_qmlJsEditorDocument->outlineModel()->document())
return;
@@ -570,8 +574,19 @@ void QmlJSEditorWidget::createToolBar()
connect(this, &QmlJSEditorWidget::cursorPositionChanged,
&m_updateOutlineIndexTimer, QOverload<>::of(&QTimer::start));
+ connect(this, &QmlJSEditorWidget::toolbarOutlineChanged,
+ this, &QmlJSEditorWidget::updateOutline);
- insertExtraToolBarWidget(TextEditorWidget::Left, m_outlineCombo);
+ setToolbarOutline(m_outlineCombo);
+}
+
+void QmlJSEditorWidget::updateOutline(QWidget *newOutline)
+{
+ if (!newOutline) {
+ createToolBar();
+ } else if (newOutline != m_outlineCombo){
+ m_outlineCombo = nullptr;
+ }
}
class CodeModelInspector : public MemberProcessor
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index d5279fe78e7..0929fa552a4 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -79,6 +79,7 @@ protected:
void scrollContentsBy(int dx, int dy) override;
void applyFontSettings() override;
void createToolBar();
+ void updateOutline(QWidget *newOutline);
void findLinkAt(const QTextCursor &cursor,
const Utils::LinkHandler &processLinkCallback,
bool resolveTarget = true,
From fe67cd39561e82eac1990f4f7b1dd78f6804bb0c Mon Sep 17 00:00:00 2001
From: Marco Bubke
Date: Fri, 14 Jun 2024 19:36:17 +0200
Subject: [PATCH 10/30] Fix errors and warnings in appdata.xml
{
"errors": [
"appstream-missing-developer-name",
"appstream-failed-validation"
],
"warnings": [
"appstream-summary-too-long",
"appstream-screenshot-missing-caption"
],
"appstream": [
"W: io.qt.QtCreator:29: screenshot-default-missing",
"E: io.qt.QtCreator:~: desktop-app-launchable-missing"
],
"message": "Please consult the documentation at
https://docs.flathub.org/docs/for-app-authors/linter"
}
Change-Id: Ief1cb6300c0976962bfbf436db9d69bc4a97850c
Reviewed-by: Eike Ziller
---
...rg.qt-project.qtcreator.appdata.xml.cmakein | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein b/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein
index 32d10990aaa..c3a27292a77 100644
--- a/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein
+++ b/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein
@@ -3,7 +3,10 @@
org.qt-project.qtcreator.desktop
Qt Creator
- Provides a cross-platform, complete integrated development environment (IDE) for application developers to create applications for multiple platforms and devices
+
+ Qt Project
+
+ Cross-platform integrated development environment (IDE)
CC0-1.0
GPL-3.0
@@ -23,16 +26,27 @@
newcomers to Qt.
+ org.qt-project.qtcreator.desktop
https://www.qt.io/ide/
Qt
+
+ Application development life-cycle
+ https://doc.qt.io/qtcreator/images/qt-app-dev-flow.webp
+
+ Overview
https://doc.qt.io/qtcreator/images/qtcreator-breakdown.png
- https://doc.qt.io/qtcreator/images/qtcreator-gs-build-example-open.png
+ Examples
+ https://doc.qt.io/qtcreator/images/qtcreator-examples-open.webp
+
+
+ Code editor
+ https://doc.qt.io/qtcreator/images/qtcreator-spliteditorview.png
From ba0f65937f6c2c06a6a61a97c81a730a6f57ca3d Mon Sep 17 00:00:00 2001
From: Marco Bubke
Date: Sat, 15 Jun 2024 08:13:19 +0200
Subject: [PATCH 11/30] Add changelog to appdata.xml release
Change-Id: I6f8472c5e36e808373d390ee23b05cba9d814c91
Reviewed-by: Eike Ziller
---
share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein | 1 +
1 file changed, 1 insertion(+)
diff --git a/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein b/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein
index c3a27292a77..c7f4c18cf63 100644
--- a/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein
+++ b/share/metainfo/org.qt-project.qtcreator.appdata.xml.cmakein
@@ -54,6 +54,7 @@
Qt Creator v${IDE_VERSION_DISPLAY}
+ https://github.com/qt-creator/qt-creator/releases/tag/v${IDE_VERSION_DISPLAY}
From b08421af2e9f28e8a3ff601347aa5ed69c1adf8c Mon Sep 17 00:00:00 2001
From: Leena Miettinen
Date: Tue, 18 Jun 2024 13:15:55 +0200
Subject: [PATCH 12/30] Doc: Mention how conditions on SCXML transitions are
shown
Task-number: QTCREATORBUG-30604
Change-Id: Ib1c7806951d63c558e0a98aea2f618c2c397acaa
Reviewed-by: Eike Ziller
---
dist/changelog/changes-14.0.0.md | 3 ++-
doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc | 3 +++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/dist/changelog/changes-14.0.0.md b/dist/changelog/changes-14.0.0.md
index 1d33c9fc9bd..ee0aaf7cc9d 100644
--- a/dist/changelog/changes-14.0.0.md
+++ b/dist/changelog/changes-14.0.0.md
@@ -122,8 +122,9 @@ Editing
### SCXML
-* Added visualization of conditions on transitions
+* Added visualization of conditions on transitions by using square brackets: `[]`
([QTCREATORBUG-21946](https://bugreports.qt.io/browse/QTCREATORBUG-21946))
+ ([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-scxml.html))
Projects
--------
diff --git a/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc b/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc
index 80ffbe8ab2b..1600c557a95 100644
--- a/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc
+++ b/doc/qtcreator/src/editors/creator-only/creator-scxml.qdoc
@@ -233,6 +233,9 @@
The editor center-aligns transition labels, but you can drag them to
other positions.
+ Conditions on transitions appear below the transition lines within square
+ brackets ([]).
+
To add edge points to transitions, select a transition line. You can add
only two edge points for each line. The editor automatically removes
unnecessary edge points. To remove the selected edge point, select
From 12d222636d8d881e8f94dd20fcdd66614213a7d9 Mon Sep 17 00:00:00 2001
From: Alessandro Portale
Date: Tue, 18 Jun 2024 16:33:53 +0200
Subject: [PATCH 13/30] Core: Add Tag variant to Core::Button
As specified as Figma component.
Change-Id: Id115fe5703b58902bc7479e966787c969e6b073d
Reviewed-by: Cristian Adam
---
src/plugins/coreplugin/welcomepagehelper.cpp | 17 +++++++++++++++++
src/plugins/coreplugin/welcomepagehelper.h | 1 +
2 files changed, 18 insertions(+)
diff --git a/src/plugins/coreplugin/welcomepagehelper.cpp b/src/plugins/coreplugin/welcomepagehelper.cpp
index 3fc432f7d01..1486ba95ea1 100644
--- a/src/plugins/coreplugin/welcomepagehelper.cpp
+++ b/src/plugins/coreplugin/welcomepagehelper.cpp
@@ -118,6 +118,10 @@ static const TextFormat &buttonTF(Button::Role role, WidgetState state)
static const TextFormat smallLinkHoveredTF
{Theme::Token_Text_Accent, smallLinkDefaultTF.uiElement,
smallLinkDefaultTF.drawTextFlags};
+ static const TextFormat tagDefaultTF
+ {Theme::Token_Text_Muted, StyleHelper::UiElement::UiElementLabelMedium};
+ static const TextFormat tagHoverTF
+ {Theme::Token_Text_Default, tagDefaultTF.uiElement};
switch (role) {
case Button::MediumPrimary: return mediumPrimaryTF;
@@ -128,6 +132,8 @@ static const TextFormat &buttonTF(Button::Role role, WidgetState state)
: smallListCheckedTF;
case Button::SmallLink: return (state == WidgetStateDefault) ? smallLinkDefaultTF
: smallLinkHoveredTF;
+ case Button::Tag: return (state == WidgetStateDefault) ? tagDefaultTF
+ : tagHoverTF;
}
return mediumPrimaryTF;
}
@@ -218,6 +224,13 @@ void Button::paintEvent(QPaintEvent *event)
}
case SmallLink:
break;
+ case Tag: {
+ const QBrush fill(hovered ? creatorColor(Theme::Token_Foreground_Subtle)
+ : QBrush(Qt::NoBrush));
+ const QPen outline(hovered ? QPen(Qt::NoPen) : creatorColor(Theme::Token_Stroke_Subtle));
+ drawCardBackground(&p, bgR, fill, outline, brRectRounding);
+ break;
+ }
}
if (!m_pixmap.isNull()) {
@@ -244,6 +257,10 @@ void Button::setPixmap(const QPixmap &pixmap)
void Button::updateMargins()
{
+ if (m_role == Tag) {
+ setContentsMargins(HPaddingXs, VPaddingXxs, HPaddingXs, VPaddingXxs);
+ return;
+ }
const bool tokenSizeS = m_role == MediumPrimary || m_role == MediumSecondary
|| m_role == SmallList || m_role == SmallLink;
const int gap = tokenSizeS ? HGapS : HGapXs;
diff --git a/src/plugins/coreplugin/welcomepagehelper.h b/src/plugins/coreplugin/welcomepagehelper.h
index eb3082129a1..e1c9199cfe4 100644
--- a/src/plugins/coreplugin/welcomepagehelper.h
+++ b/src/plugins/coreplugin/welcomepagehelper.h
@@ -80,6 +80,7 @@ public:
SmallSecondary,
SmallList,
SmallLink,
+ Tag,
};
explicit Button(const QString &text, Role role, QWidget *parent = nullptr);
From a8e2ccdea6957f9a9e14d98f8abfa630889d485b Mon Sep 17 00:00:00 2001
From: Cristian Adam
Date: Mon, 17 Jun 2024 16:27:36 +0200
Subject: [PATCH 14/30] CMakePM: Expand CMake macros in the "vendor" debugger
settings
Qt Creator will use the CMake macro expander for the "vendor" string
entries.
This would allow the following CMake preset snippet to work as a CMake
preset user would expect it to:
```
"vendor": {
"qt.io/QtCreator/1.0": {
"debugger": {
"DisplayName": "LLDB Dap 18.1.7 Debugger",
"Abis": ["arm-darwin-generic-mach_o-64bit"],
"Binary": "$env{HOME}/llvm/clang/bin/lldb-dap",
"EngineType": 1024,
"Version": "18.1.7"
}
}
}
```
Change-Id: I4ea5ce0b004ff05cebbe3e0ce4b6bcc09c716322
Reviewed-by: Alessandro Portale
---
.../cmakeprojectimporter.cpp | 46 ++++++++++++++++---
1 file changed, 39 insertions(+), 7 deletions(-)
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
index 998ccbf7ca8..69511b0fc07 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
@@ -211,15 +211,46 @@ FilePaths CMakeProjectImporter::presetCandidates()
return candidates;
}
+class DebuggerCMakeExpander
+{
+ const PresetsDetails::ConfigurePreset &preset;
+ const Environment &env;
+ const FilePath &projectDirectory;
+
+public:
+ DebuggerCMakeExpander(
+ const PresetsDetails::ConfigurePreset &p, const Environment &e, const FilePath &projectDir)
+ : preset(p)
+ , env(e)
+ , projectDirectory(projectDir)
+ {}
+
+ QString expand(const QString &value) const
+ {
+ QString result{value};
+ CMakePresets::Macros::expand(preset, env, projectDirectory, result);
+ return result;
+ }
+
+ QVariantMap expand(const QVariantMap &map) const
+ {
+ QVariantMap result{map};
+ for (auto it = result.begin(); it != result.end(); ++it)
+ if (it->canConvert())
+ it->setValue(expand(it->toString()));
+ return result;
+ }
+};
+
static QVariant findOrRegisterDebugger(
- Environment &env, const std::optional &vendor, const QString &presetName)
+ Environment &env, const PresetsDetails::ConfigurePreset &preset, const DebuggerCMakeExpander& expander)
{
const QString debuggerKey("debugger");
- if (!vendor || !vendor.value().contains(debuggerKey))
+ if (!preset.vendor || !preset.vendor.value().contains(debuggerKey))
return {};
- const QVariant debuggerVariant = vendor.value().value(debuggerKey);
- FilePath debuggerPath = FilePath::fromUserInput(debuggerVariant.toString());
+ const QVariant debuggerVariant = preset.vendor.value().value(debuggerKey);
+ FilePath debuggerPath = FilePath::fromUserInput(expander.expand(debuggerVariant.toString()));
if (!debuggerPath.isEmpty()) {
if (debuggerPath.isRelativePath())
debuggerPath = env.searchInPath(debuggerPath.fileName());
@@ -228,7 +259,7 @@ static QVariant findOrRegisterDebugger(
DebuggerItem debugger;
debugger.setCommand(debuggerPath);
debugger.setUnexpandedDisplayName(
- mainName.arg(presetName).arg(debuggerPath.completeBaseName()));
+ mainName.arg(preset.name).arg(debuggerPath.completeBaseName()));
debugger.setAutoDetected(false);
QString errorMessage;
debugger.reinitializeFromFile(&errorMessage, &env);
@@ -246,7 +277,7 @@ static QVariant findOrRegisterDebugger(
if (!debuggerMap.contains("Id"))
debuggerMap.insert("Id", QUuid::createUuid().toString());
- auto store = storeFromMap(debuggerMap);
+ auto store = storeFromMap(expander.expand(debuggerMap));
DebuggerItem debugger(store);
return DebuggerItemManager::registerDebugger(debugger);
@@ -883,7 +914,8 @@ QList CMakeProjectImporter::examineDirectory(const FilePath &importPath,
data->hasQmlDebugging = CMakeBuildConfiguration::hasQmlDebugging(config);
- data->debugger = findOrRegisterDebugger(env, configurePreset.vendor, configurePreset.name);
+ data->debugger = findOrRegisterDebugger(
+ env, configurePreset, DebuggerCMakeExpander(configurePreset, env, projectDirectory()));
QByteArrayList buildConfigurationTypes = {cache.valueOf("CMAKE_BUILD_TYPE")};
if (buildConfigurationTypes.front().isEmpty()) {
From ded397ca559cecb97a6b33f899c4abe8f7aac7da Mon Sep 17 00:00:00 2001
From: Cristian Adam
Date: Tue, 18 Jun 2024 16:55:28 +0200
Subject: [PATCH 15/30] Sqlite: Fix build with QTC_STATIC_BUILD
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Qt Creator was failing with:
```
In file included from /home/jarek/dev/creator-14-work/src/libs/sqlite/
sqliteexception.h:6,
from /home/jarek/dev/creator-14-work/src/libs/sqlite/
sqlitevalue.h:7,
from /home/jarek/dev/creator-14-work/src/plugins/
qmldesigner/designercore/projectstorage/projectstorageinfotypes.h:8,
from /home/jarek/dev/creator-14-work/src/plugins/
qmldesigner/designercore/projectstorage/projectstoragetypes.h:8,
from /home/jarek/dev/creator-14-work/src/plugins/
qmldesigner/designercore/include/propertymetainfo.h:9,
from /home/jarek/dev/creator-14-work/src/plugins/
qmldesigner/designercore/include/nodemetainfo.h:6,
from /home/jarek/dev/creator-14-work/tests/unit/tests/
printers/gtest-creator-printing.cpp:17:
/home/jarek/dev/creator-14-work/src/libs/sqlite/sqlite3_fwd.h:7:7:
error: conflicting declaration ‘using sqlite3 = struct qtc_sqlite3’
7 | using sqlite3 = struct qtc_sqlite3;
| ^~~~~~~
```
Task-number: QTCREATORBUG-30009
Change-Id: Ibc18f16ab304a92f73882c9336eebc2abd54aa44
Reviewed-by: Jarek Kobus
---
src/libs/sqlite/CMakeLists.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/libs/sqlite/CMakeLists.txt b/src/libs/sqlite/CMakeLists.txt
index f86f31871a4..e0cf3093142 100644
--- a/src/libs/sqlite/CMakeLists.txt
+++ b/src/libs/sqlite/CMakeLists.txt
@@ -80,5 +80,7 @@ extend_qtc_library(Sqlite
extend_qtc_library(Sqlite
CONDITION QTC_STATIC_BUILD
- PROPERTIES COMPILE_OPTIONS $,/FIsqlite_static_config.h,-includesqlite_static_config.h>
+ PROPERTIES
+ COMPILE_OPTIONS $,/FIsqlite_static_config.h,-includesqlite_static_config.h>
+ INTERFACE_COMPILE_OPTIONS $,/FI../3rdparty/sqlite/sqlite_static_config.h,-include../3rdparty/sqlite/sqlite_static_config.h>
)
From b240bfb3dbd7b0da4be1490f7262bcc2c5542731 Mon Sep 17 00:00:00 2001
From: Cristian Adam
Date: Tue, 18 Jun 2024 17:33:28 +0200
Subject: [PATCH 16/30] CMakePM: Fix crash when hovering in CMake file without
a project
Fixes: QTCREATORBUG-31077
Change-Id: I60526fb37e5d8c7713a5b22dfddb3e52c50fc5f7
Reviewed-by: Alessandro Portale
---
src/plugins/cmakeprojectmanager/cmakeeditor.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
index 27db33e14d2..92f63ea04c7 100644
--- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp
@@ -330,7 +330,7 @@ void CMakeEditorWidget::findLinkAt(const QTextCursor &cursor,
if (auto project = ProjectTree::currentProject()) {
buffer.replace("${CMAKE_SOURCE_DIR}", project->projectDirectory().path());
- if (auto bs = ProjectTree::currentBuildSystem(); bs->buildConfiguration()) {
+ if (auto bs = ProjectTree::currentBuildSystem(); bs && bs->buildConfiguration()) {
buffer.replace("${CMAKE_BINARY_DIR}", bs->buildConfiguration()->buildDirectory().path());
// Get the path suffix from current source dir to project source dir and apply it
From c5caee8be25a3a7ef71070a38e5b43b60476f7dc Mon Sep 17 00:00:00 2001
From: David Schulz
Date: Tue, 18 Jun 2024 13:01:02 +0200
Subject: [PATCH 17/30] Dumper: fix exception string
'...' % ... has 3 placeholder(s) but 2 substitution(s)
Change-Id: I8d0ac49a97d8ff1745240276fa4ef02f73991dbe
Reviewed-by: hjk
---
share/qtcreator/debugger/dumper.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 6a232124cbe..250c04e80e8 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -4202,7 +4202,7 @@ typename))
res = self.readRawMemory(address, size)
if len(res) > 0:
return res
- raise RuntimeError('CANNOT READ %d BYTES FROM ADDRESS: %s %s' % (size, address))
+ raise RuntimeError('CANNOT READ %d BYTES FROM ADDRESS: %s' % (size, address))
def value_display(self, value):
type_code = self.type_code(value.typeid)
From 34044757efe449565790b1cf4d641f94a750344f Mon Sep 17 00:00:00 2001
From: Jarek Kobus
Date: Tue, 18 Jun 2024 14:26:43 +0200
Subject: [PATCH 18/30] TaskTree: Fix tweaking done result in group done
handler
If the onGroupDone() handler returned DoneResult,
this result was ignored by the running task tree.
Fix it so that the optional DoneResult takes
priority over group's workflow policy.
Add tests for it.
Change-Id: I7ffdef2af08337d7214f2c3d4b68153cddaad425
Reviewed-by: hjk
Reviewed-by: Eike Ziller
---
src/libs/solutions/tasking/tasktree.cpp | 33 ++++++------
tests/auto/solutions/tasking/tst_tasking.cpp | 54 ++++++++++++++++++++
2 files changed, 71 insertions(+), 16 deletions(-)
diff --git a/src/libs/solutions/tasking/tasktree.cpp b/src/libs/solutions/tasking/tasktree.cpp
index 5c1f65e503f..b7ebb45a8c7 100644
--- a/src/libs/solutions/tasking/tasktree.cpp
+++ b/src/libs/solutions/tasking/tasktree.cpp
@@ -1987,23 +1987,24 @@ SetupResult TaskTreePrivate::continueStart(RuntimeContainer *container, SetupRes
{
const SetupResult groupAction = startAction == SetupResult::Continue ? startChildren(container)
: startAction;
- if (groupAction != SetupResult::Continue) {
- const bool bit = container->updateSuccessBit(groupAction == SetupResult::StopWithSuccess);
- RuntimeIteration *parentIteration = container->parentIteration();
- RuntimeTask *parentTask = container->m_parentTask;
- QT_CHECK(parentTask);
- const bool result = invokeDoneHandler(container, bit ? DoneWith::Success : DoneWith::Error);
- if (parentIteration) {
- parentIteration->deleteChild(parentTask);
- if (!parentIteration->m_container->isStarting())
- childDone(parentIteration, result);
- } else {
- QT_CHECK(m_runtimeRoot.get() == parentTask);
- m_runtimeRoot.reset();
- emitDone(result ? DoneWith::Success : DoneWith::Error);
- }
+ if (groupAction == SetupResult::Continue)
+ return groupAction;
+
+ const bool bit = container->updateSuccessBit(groupAction == SetupResult::StopWithSuccess);
+ RuntimeIteration *parentIteration = container->parentIteration();
+ RuntimeTask *parentTask = container->m_parentTask;
+ QT_CHECK(parentTask);
+ const bool result = invokeDoneHandler(container, bit ? DoneWith::Success : DoneWith::Error);
+ if (parentIteration) {
+ parentIteration->deleteChild(parentTask);
+ if (!parentIteration->m_container->isStarting())
+ childDone(parentIteration, result);
+ } else {
+ QT_CHECK(m_runtimeRoot.get() == parentTask);
+ m_runtimeRoot.reset();
+ emitDone(result ? DoneWith::Success : DoneWith::Error);
}
- return groupAction;
+ return toSetupResult(result);
}
SetupResult TaskTreePrivate::startChildren(RuntimeContainer *container)
diff --git a/tests/auto/solutions/tasking/tst_tasking.cpp b/tests/auto/solutions/tasking/tst_tasking.cpp
index f3d83b4806d..15f5d12004d 100644
--- a/tests/auto/solutions/tasking/tst_tasking.cpp
+++ b/tests/auto/solutions/tasking/tst_tasking.cpp
@@ -712,6 +712,60 @@ void tst_Tasking::testTree_data()
QTest::newRow("ErrorAndFinishAllAndError") << errorData(WorkflowPolicy::FinishAllAndError);
}
+ {
+ // These tests ensure that tweaking the done result in group's done handler takes priority
+ // over the group's workflow policy. In this case the group's workflow policy is ignored.
+ const auto setupGroup = [=](DoneResult doneResult, WorkflowPolicy policy) {
+ return Group {
+ storage,
+ Group {
+ workflowPolicy(policy),
+ onGroupDone([doneResult] { return doneResult; })
+ },
+ groupDone(0)
+ };
+ };
+
+ const auto doneData = [storage, setupGroup](WorkflowPolicy policy) {
+ return TestData{storage, setupGroup(DoneResult::Success, policy),
+ Log{{0, Handler::GroupSuccess}}, 0, DoneWith::Success, 0};
+ };
+ const auto errorData = [storage, setupGroup](WorkflowPolicy policy) {
+ return TestData{storage, setupGroup(DoneResult::Error, policy),
+ Log{{0, Handler::GroupError}}, 0, DoneWith::Error, 0};
+ };
+
+ QTest::newRow("GroupDoneTweakSuccessWithStopOnError")
+ << doneData(WorkflowPolicy::StopOnError);
+ QTest::newRow("GroupDoneTweakSuccessWithContinueOnError")
+ << doneData(WorkflowPolicy::ContinueOnError);
+ QTest::newRow("GroupDoneTweakSuccessWithStopOnSuccess")
+ << doneData(WorkflowPolicy::StopOnSuccess);
+ QTest::newRow("GroupDoneTweakSuccessWithContinueOnSuccess")
+ << doneData(WorkflowPolicy::ContinueOnSuccess);
+ QTest::newRow("GroupDoneTweakSuccessWithStopOnSuccessOrError")
+ << doneData(WorkflowPolicy::StopOnSuccessOrError);
+ QTest::newRow("GroupDoneTweakSuccessWithFinishAllAndSuccess")
+ << doneData(WorkflowPolicy::FinishAllAndSuccess);
+ QTest::newRow("GroupDoneTweakSuccessWithFinishAllAndError")
+ << doneData(WorkflowPolicy::FinishAllAndError);
+
+ QTest::newRow("GroupDoneTweakErrorWithStopOnError")
+ << errorData(WorkflowPolicy::StopOnError);
+ QTest::newRow("GroupDoneTweakErrorWithContinueOnError")
+ << errorData(WorkflowPolicy::ContinueOnError);
+ QTest::newRow("GroupDoneTweakErrorWithStopOnSuccess")
+ << errorData(WorkflowPolicy::StopOnSuccess);
+ QTest::newRow("GroupDoneTweakErrorWithContinueOnSuccess")
+ << errorData(WorkflowPolicy::ContinueOnSuccess);
+ QTest::newRow("GroupDoneTweakErrorWithStopOnSuccessOrError")
+ << errorData(WorkflowPolicy::StopOnSuccessOrError);
+ QTest::newRow("GroupDoneTweakErrorWithFinishAllAndSuccess")
+ << errorData(WorkflowPolicy::FinishAllAndSuccess);
+ QTest::newRow("GroupDoneTweakErrorWithFinishAllAndError")
+ << errorData(WorkflowPolicy::FinishAllAndError);
+ }
+
{
const Group root {
storage,
From 36e84b1c54b2e4441ffcfb4d878f3af6922d4980 Mon Sep 17 00:00:00 2001
From: Cristian Adam
Date: Tue, 18 Jun 2024 17:24:42 +0200
Subject: [PATCH 19/30] Doc/Wizards: Update minimum CMake version to 3.16
Qt Creator due to the usage of CMake File-API was already requiring
CMake 3.14.
Qt 6.7 now requires CMake version 3.16, thus the version requirement
bump.
Note that Qt SDK is shipping CMake version 3.27.
Fixes: QTCREATORBUG-31079
Change-Id: Ife26d178b80949941cb808a1fbd91389d6d723bc
Reviewed-by: Leena Miettinen
Reviewed-by: Eike Ziller
---
doc/qtcreator/examples/textfinder/CMakeLists.txt | 2 +-
doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt | 2 +-
share/qtcreator/cplusplus/examples/CMakeLists.txt | 2 +-
share/qtcreator/templates/wizards/autotest/files/tst.txt | 2 +-
share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt | 2 +-
.../templates/wizards/projects/consoleapp/CMakeLists.txt | 2 +-
.../templates/wizards/projects/cpplibrary/CMakeLists.txt | 2 +-
.../qtcreator/templates/wizards/projects/plainc/CMakeLists.txt | 2 +-
.../templates/wizards/projects/plaincpp/CMakeLists.txt | 2 +-
.../wizards/projects/qtquickapplication_compat/CMakeLists.txt | 2 +-
.../wizards/projects/qtwidgetsapplication/CMakeLists.txt | 2 +-
.../qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt | 2 +-
12 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/doc/qtcreator/examples/textfinder/CMakeLists.txt b/doc/qtcreator/examples/textfinder/CMakeLists.txt
index a00ccd856b4..d0e3130d2f7 100644
--- a/doc/qtcreator/examples/textfinder/CMakeLists.txt
+++ b/doc/qtcreator/examples/textfinder/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(TextFinder VERSION 0.1 LANGUAGES CXX)
diff --git a/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt b/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt
index 65fba000893..d2c47e4dd8c 100644
--- a/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt
+++ b/doc/qtcreatordev/examples/exampleplugin/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
#! [1]
# Remove when sharing with others.
diff --git a/share/qtcreator/cplusplus/examples/CMakeLists.txt b/share/qtcreator/cplusplus/examples/CMakeLists.txt
index 7d14eba5b98..5eafcab4e0b 100644
--- a/share/qtcreator/cplusplus/examples/CMakeLists.txt
+++ b/share/qtcreator/cplusplus/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(examples LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/autotest/files/tst.txt b/share/qtcreator/templates/wizards/autotest/files/tst.txt
index f0eeb813392..18653bdc32c 100644
--- a/share/qtcreator/templates/wizards/autotest/files/tst.txt
+++ b/share/qtcreator/templates/wizards/autotest/files/tst.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{TestCaseName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt b/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt
index 0e923c87945..b411048ef28 100644
--- a/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/codesnippet/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} VERSION 0.1 LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt
index a6f956127dd..d548d199a3c 100644
--- a/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/consoleapp/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt
index 4391af9678c..ef67bd5f7ad 100644
--- a/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/cpplibrary/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt
index 1a0a570e66f..bc89ded9d0b 100644
--- a/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/plainc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES C)
diff --git a/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt
index df5ef8a5cce..e8ba55ff43d 100644
--- a/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/plaincpp/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt
index b7afb831a77..de5e6850c23 100644
--- a/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/qtquickapplication_compat/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} VERSION 0.1 LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt
index 9d854899c36..d2ca81d463b 100644
--- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(%{ProjectName} VERSION 0.1 LANGUAGES CXX)
diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt
index be6f16a3fb6..13f9592fba1 100644
--- a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt
+++ b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
# Remove when sharing with others.
@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources')}
From e596707a6ba0a6287a41270d30edf7386cda450e Mon Sep 17 00:00:00 2001
From: Semih Yavuz
Date: Wed, 12 Jun 2024 15:28:56 +0200
Subject: [PATCH 20/30] preview named colors on hover
ColorPreviewHoverHandler only considered #XXXXXX and Qt::XXX
to preview colors. We can also have named colors that are
constructed from string literals. Add handling for string literals.
Note that this creates preview when hovering over any color related
string literals in the editor regardless of whether they are bound
to color property.
Also fix the crash due to the out-of-bounds access by adding boundary
check.
Fixes: QTCREATORBUG-30594
Change-Id: I5084b743c76beb6f343bd07049e3051a55fe8d53
Reviewed-by: David Schulz
Reviewed-by: Fabian Kosmale
Reviewed-by: Sami Shalayel
---
src/plugins/texteditor/colorpreviewhoverhandler.cpp | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/plugins/texteditor/colorpreviewhoverhandler.cpp b/src/plugins/texteditor/colorpreviewhoverhandler.cpp
index 62c7e1e5b48..fd014e0ad4a 100644
--- a/src/plugins/texteditor/colorpreviewhoverhandler.cpp
+++ b/src/plugins/texteditor/colorpreviewhoverhandler.cpp
@@ -33,7 +33,12 @@ static QString extractColorString(const QString &s, int pos)
QChar c = s[firstPos];
if (c == QLatin1Char('#'))
break;
-
+ // color from string literal, i.e "red", 'red';
+ // strip leading and trailing quotes
+ if (c == QLatin1Char('\"') || c == QLatin1Char('\'')) {
+ firstPos += 1;
+ break;
+ }
if (c == QLatin1Char(':')
&& (firstPos > 3)
&& (s.mid(firstPos-3, 4) == QLatin1String("Qt::"))) {
@@ -51,6 +56,8 @@ static QString extractColorString(const QString &s, int pos)
return QString();
int lastPos = firstPos + 1;
+ if (lastPos >= s.length())
+ return QString();
do {
QChar c = s[lastPos];
if (!(c.isLetterOrNumber() || c == QLatin1Char(':')))
@@ -106,7 +113,7 @@ static QColor checkColorText(const QString &str)
return fromEnumString(colorStr);
}
- return QColor();
+ return QColor::fromString(str);
}
// looks backwards through a string for the opening brace of a function
From ab78847af8b19e8591bb224064e1039797431142 Mon Sep 17 00:00:00 2001
From: Leena Miettinen
Date: Mon, 17 Jun 2024 16:34:50 +0200
Subject: [PATCH 21/30] Doc: Update model editor docs
- Describe new model element properties
- Update screenshots
- Update style
Task-number: QTCREATORBUG-30604
Change-Id: I8b296a610ce330d6c382f10e2ff3d8d9994ad503
Reviewed-by: Jochen Becher
Reviewed-by: Alessandro Portale
---
dist/changelog/changes-14.0.0.md | 8 +-
...reator-model-editor-component-diagram.webp | Bin 25690 -> 17656 bytes
.../images/qtcreator-modeleditor-classes.png | Bin 85095 -> 0 bytes
.../images/qtcreator-modeleditor-classes.webp | Bin 0 -> 20902 bytes
.../images/qtcreator-modeleditor-packages.png | Bin 64778 -> 0 bytes
.../qtcreator-modeleditor-packages.webp | Bin 0 -> 19220 bytes
.../images/qtcreator-modeleditor.png | Bin 83387 -> 0 bytes
.../images/qtcreator-modeleditor.webp | Bin 0 -> 23304 bytes
.../creator-only/creator-modeling.qdoc | 238 +++++++++++-------
9 files changed, 157 insertions(+), 89 deletions(-)
delete mode 100644 doc/qtcreator/images/qtcreator-modeleditor-classes.png
create mode 100644 doc/qtcreator/images/qtcreator-modeleditor-classes.webp
delete mode 100644 doc/qtcreator/images/qtcreator-modeleditor-packages.png
create mode 100644 doc/qtcreator/images/qtcreator-modeleditor-packages.webp
delete mode 100644 doc/qtcreator/images/qtcreator-modeleditor.png
create mode 100644 doc/qtcreator/images/qtcreator-modeleditor.webp
diff --git a/dist/changelog/changes-14.0.0.md b/dist/changelog/changes-14.0.0.md
index ee0aaf7cc9d..31a3e5daa04 100644
--- a/dist/changelog/changes-14.0.0.md
+++ b/dist/changelog/changes-14.0.0.md
@@ -99,7 +99,7 @@ Editing
### Python
* Added options for updating Python Language Server
- ([Documentation] (https://doc-snapshots.qt.io/qtcreator-14.0/creator-language-servers.html))
+ ([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-language-servers.html))
### Language Server Protocol
@@ -117,8 +117,10 @@ Editing
### Models
* Added more visual attributes for relations
-* Added support for linked files
-* Added support for custom images
+* Added support for linked files in model element properties
+* Added support for custom images in model element properties
+
+([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-how-to-create-models.html))
### SCXML
diff --git a/doc/qtcreator/images/qtcreator-model-editor-component-diagram.webp b/doc/qtcreator/images/qtcreator-model-editor-component-diagram.webp
index e28a94e0a2a16fcb62e8709f49aac03f463df33c..ecd5a013df18c0b7bab9e47358f82b2df1a309a4 100644
GIT binary patch
literal 17656
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 yGBED)J}2>MGpu-a&xPR6u91x%An6d7|Dct;6O^
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