Merge "Merge remote-tracking branch 'origin/9.0'"

This commit is contained in:
The Qt Project
2022-12-07 10:53:46 +00:00
36 changed files with 353 additions and 284 deletions

View File

@@ -682,6 +682,20 @@
\li An import statement has been added twice. For more information, \li An import statement has been added twice. For more information,
see \l{Import Statements}. see \l{Import Statements}.
\row
\li M401
\li Error
\li Do not reference the root item as alias
\li The alias property cannot reference the root component directly.
Create an instance of the component instead.
\row
\li M402
\li Warning
\li Avoid referencing the root item in a hierarchy
\li The alias property cannot reference the root component in a
hierarchy. Create an instance of the component instead.
\endtable \endtable
\section1 Resetting the Code Model \section1 Resetting the Code Model

View File

@@ -8,8 +8,8 @@
\title Using Squish \title Using Squish
\l{https://doc.froglogic.com/squish/latest/}{Squish} is an automated GUI \l{https://www.qt.io/product/quality-assurance/squish}{Squish} is an automated GUI
testing framework for testing Android, iOS, Java, Qt, Tk, Windows, and testing framework for testing Android, iOS, Java, \macos, Qt, Tk, Windows, and
XView applications, as well as HTML-based web applications running in XView applications, as well as HTML-based web applications running in
browsers, such as Apple Safari, Mozilla Firefox, Google Chrome, and browsers, such as Apple Safari, Mozilla Firefox, Google Chrome, and
Microsoft Internet Explorer and Edge. Microsoft Internet Explorer and Edge.

View File

@@ -175,19 +175,24 @@
\section1 Supported Qt for MCUs SDKs \section1 Supported Qt for MCUs SDKs
Since version 7.0.0, \QC supports version 2.0 and later of the Qt for MCUs SDK. \note The Qt for MCUs SDK 2.3 requires \QC 9.0.0, or later.
For older versions, refer to the following table.
The following table lists the \QC versions you can use to develop
applications with particular Qt for MCUs SDK versions.
\table \table
\header \header
\li \QC version \li \QC version
\li Qt for MCUs SDK version \li Qt for MCUs SDK version
\row \row
\li 7.0.0 or later \li 9.0.0 or later
\li 2.0 or later \li 2.0 or later
\row
\li 7.0.0 up to 8.0.2
\li 2.0 up to 2.2
\row \row
\li 6.0.x \li 6.0.x
\li 1.3 or later, including 2.0 or later \li 1.3 up to 2.2
\row \row
\li 4.12.4 up to 5.0.3 \li 4.12.4 up to 5.0.3
\li 1.3 up to 1.9 \li 1.3 up to 1.9

View File

@@ -21,7 +21,7 @@
\li {3,1} Development Platform \li {3,1} Development Platform
\header \header
\li \l Linux \li \l Linux
\li \l macOS \li \l \macos
\li \l Windows \li \l Windows
\row \row
\li \l Android \li \l Android
@@ -50,7 +50,7 @@
\li \li
\row \row
\li \l{Microcontroller Units (MCU)}{MCUs} \li \l{Microcontroller Units (MCU)}{MCUs}
\li \li \image ok.png
\li \li
\li \image ok.png \li \image ok.png
\row \row

View File

@@ -165,8 +165,15 @@ def qdump__std____1__stack(d, value):
def std_1_string_dumper(d, value): def std_1_string_dumper(d, value):
charType = value['__l']['__data_'].dereference().type charType = value['__l']['__data_'].dereference().type
D = None
try: # LLDB
D = value[0][0][0][0] D = value[0][0][0][0]
except: # GDB
try: # std::string
D = value[0].members(True)[0][0][0]
except: # std::u16string, std::u32string
D = value[2].members(True)[0][0][0]
layoutDecider = D[0][0] layoutDecider = D[0][0]
if not layoutDecider: if not layoutDecider:
@@ -225,6 +232,7 @@ def std_1_string_dumper(d, value):
return return
def qdump__std____1__string(d, value): def qdump__std____1__string(d, value):
std_1_string_dumper(d, value) std_1_string_dumper(d, value)

View File

@@ -124,19 +124,19 @@
<name>CMakeProjectManager</name> <name>CMakeProjectManager</name>
<message> <message>
<source>Initial Configuration</source> <source>Initial Configuration</source>
<translation type="unfinished"></translation> <translation>Initiale Konfiguration</translation>
</message> </message>
<message> <message>
<source>Current Configuration</source> <source>Current Configuration</source>
<translation type="unfinished"></translation> <translation>Aktuelle Konfiguration</translation>
</message> </message>
<message> <message>
<source>Kit Configuration</source> <source>Kit Configuration</source>
<translation type="unfinished"></translation> <translation>Kit-Konfiguration</translation>
</message> </message>
<message> <message>
<source>Edit the current kit&apos;s CMake configuration.</source> <source>Edit the current kit&apos;s CMake configuration.</source>
<translation type="unfinished"></translation> <translation>Die CMake-Konfiguration des aktuellen Kits bearbeiten.</translation>
</message> </message>
<message> <message>
<source>Filter</source> <source>Filter</source>
@@ -176,11 +176,11 @@
</message> </message>
<message> <message>
<source>&amp;Set</source> <source>&amp;Set</source>
<translation type="unfinished"></translation> <translation>&amp;Setzen</translation>
</message> </message>
<message> <message>
<source>Set a value in the CMake configuration.</source> <source>Set a value in the CMake configuration.</source>
<translation type="unfinished"></translation> <translation>Einen Wert in der CMake-Konfiguration setzen.</translation>
</message> </message>
<message> <message>
<source>&amp;Unset</source> <source>&amp;Unset</source>
@@ -200,11 +200,11 @@
</message> </message>
<message> <message>
<source>Batch Edit...</source> <source>Batch Edit...</source>
<translation type="unfinished"></translation> <translation>Als Text bearbeiten...</translation>
</message> </message>
<message> <message>
<source>Set or reset multiple values in the CMake configuration.</source> <source>Set or reset multiple values in the CMake configuration.</source>
<translation type="unfinished"></translation> <translation>Mehrere Variablen in der CMake-Konfiguration setzen oder zurücksetzen.</translation>
</message> </message>
<message> <message>
<source>Advanced</source> <source>Advanced</source>
@@ -212,63 +212,63 @@
</message> </message>
<message> <message>
<source>Clear system environment</source> <source>Clear system environment</source>
<translation type="unfinished">Systemumgebung löschen</translation> <translation>Systemumgebung löschen</translation>
</message> </message>
<message> <message>
<source>Help</source> <source>Help</source>
<translation type="unfinished">Hilfe</translation> <translation>Hilfe</translation>
</message> </message>
<message> <message>
<source>Apply Kit Value</source> <source>Apply Kit Value</source>
<translation type="unfinished"></translation> <translation>Wert des Kits anwenden</translation>
</message> </message>
<message> <message>
<source>Apply Initial Configuration Value</source> <source>Apply Initial Configuration Value</source>
<translation type="unfinished"></translation> <translation>Wert der initialen Konfiguration anwenden</translation>
</message> </message>
<message> <message>
<source>Copy</source> <source>Copy</source>
<translation type="unfinished">Kopieren</translation> <translation>Kopieren</translation>
</message> </message>
<message> <message>
<source>Change the build directory to &quot;%1&quot; and start with a basic CMake configuration?</source> <source>Change the build directory to &quot;%1&quot; and start with a basic CMake configuration?</source>
<translation type="unfinished"></translation> <translation>Wollen Sie das Build-Verzeichnis auf &quot;%1&quot; ändern und mit einer grundlegenden CMake-Konfiguration beginnen?</translation>
</message> </message>
<message> <message>
<source>The CMake flag for the development team</source> <source>The CMake flag for the development team</source>
<translation type="unfinished"></translation> <translation>Das CMake-Flag für das Entwicklerteam</translation>
</message> </message>
<message> <message>
<source>The CMake flag for the provisioning profile</source> <source>The CMake flag for the provisioning profile</source>
<translation type="unfinished"></translation> <translation>Das CMake-Flag für das Provisioning-Profil</translation>
</message> </message>
<message> <message>
<source>The CMake flag for the architecture on macOS</source> <source>The CMake flag for the architecture on macOS</source>
<translation type="unfinished"></translation> <translation>Das CMake-Flag für die macOS-Architektur</translation>
</message> </message>
<message> <message>
<source>The CMake flag for QML debugging, if enabled</source> <source>The CMake flag for QML debugging, if enabled</source>
<translation type="unfinished"></translation> <translation>Das CMake-Flag für QML-Debuggen, falls aktiviert</translation>
</message> </message>
<message> <message>
<source>Profile</source> <source>Profile</source>
<translation type="unfinished">Profile</translation> <translation>Profile</translation>
</message> </message>
<message> <message>
<source>Clean Environment</source> <source>Clean Environment</source>
<translation type="unfinished">Saubere Umgebung</translation> <translation>Saubere Umgebung</translation>
</message> </message>
<message> <message>
<source>System Environment</source> <source>System Environment</source>
<translation type="unfinished">Systemumgebung</translation> <translation>Systemumgebung</translation>
</message> </message>
<message> <message>
<source>Additional CMake &lt;a href=&quot;options&quot;&gt;options&lt;/a&gt;:</source> <source>Additional CMake &lt;a href=&quot;options&quot;&gt;options&lt;/a&gt;:</source>
<translation type="unfinished"></translation> <translation>Weitere CMake-&lt;a href=&quot;options&quot;&gt;Optionen&lt;/a&gt;:</translation>
</message> </message>
<message> <message>
<source>Build type:</source> <source>Build type:</source>
<translation type="unfinished"></translation> <translation>Build-Typ:</translation>
</message> </message>
<message> <message>
<source>&lt;UNSET&gt;</source> <source>&lt;UNSET&gt;</source>
@@ -276,31 +276,31 @@
</message> </message>
<message> <message>
<source>Enter one CMake &lt;a href=&quot;variable&quot;&gt;variable&lt;/a&gt; per line.&lt;br/&gt;To set or change a variable, use -D&amp;lt;variable&amp;gt;:&amp;lt;type&amp;gt;=&amp;lt;value&amp;gt;.&lt;br/&gt;&amp;lt;type&amp;gt; can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.&lt;br/&gt;To unset a variable, use -U&amp;lt;variable&amp;gt;.&lt;br/&gt;</source> <source>Enter one CMake &lt;a href=&quot;variable&quot;&gt;variable&lt;/a&gt; per line.&lt;br/&gt;To set or change a variable, use -D&amp;lt;variable&amp;gt;:&amp;lt;type&amp;gt;=&amp;lt;value&amp;gt;.&lt;br/&gt;&amp;lt;type&amp;gt; can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.&lt;br/&gt;To unset a variable, use -U&amp;lt;variable&amp;gt;.&lt;br/&gt;</source>
<translation type="unfinished"></translation> <translation>Geben Sie eine CMake-&lt;a href=&quot;variable&quot;&gt;Variable&lt;/a&gt; pro Zeile ein.&lt;br/&gt;Um eine Variable zu setzen oder zu ändern, benutzen Sie -D&amp;lt;Variable&amp;gt;:&amp;lt;Typ&amp;gt;=&amp;lt;Wert&amp;gt;.&lt;br/&gt;&amp;lt;Typ&amp;gt; kann einer der folgenden Werte sein: FILEPATH, PATH, BOOL, INTERNAL oder STRING.&lt;br/&gt;Um eine Variable zurückzusetzen, benutzen Sie -U&amp;lt;Variable&amp;gt;.&lt;br/&gt;</translation>
</message> </message>
<message> <message>
<source>Re-configure with Initial Parameters</source> <source>Re-configure with Initial Parameters</source>
<translation type="unfinished"></translation> <translation>Mit initialen Parametern neu konfigurieren</translation>
</message> </message>
<message> <message>
<source>Clear CMake configuration and configure with initial parameters?</source> <source>Clear CMake configuration and configure with initial parameters?</source>
<translation type="unfinished"></translation> <translation>Die CMake-Konfiguration löschen und mit initialen Parametern konfigurieren?</translation>
</message> </message>
<message> <message>
<source>Do not ask again</source> <source>Do not ask again</source>
<translation type="unfinished">Nicht noch einmal nachfragen</translation> <translation>Nicht noch einmal nachfragen</translation>
</message> </message>
<message> <message>
<source>Kit CMake Configuration</source> <source>Kit CMake Configuration</source>
<translation type="unfinished"></translation> <translation>CMake-Konfiguration des Kits</translation>
</message> </message>
<message> <message>
<source>Configure</source> <source>Configure</source>
<translation type="unfinished">Konfigurieren</translation> <translation>Konfigurieren</translation>
</message> </message>
<message> <message>
<source>Stop CMake</source> <source>Stop CMake</source>
<translation type="unfinished"></translation> <translation>CMake abbrechen</translation>
</message> </message>
<message> <message>
<source>bool</source> <source>bool</source>
@@ -336,7 +336,7 @@
</message> </message>
<message> <message>
<source>Clear CMake Configuration</source> <source>Clear CMake Configuration</source>
<translation>CMake-Konfiguration bereinigen</translation> <translation>CMake-Konfiguration löschen</translation>
</message> </message>
<message> <message>
<source>Rescan Project</source> <source>Rescan Project</source>
@@ -372,15 +372,15 @@
</message> </message>
<message> <message>
<source>CMakeUserPresets.json cannot re-define the %1 preset: %2</source> <source>CMakeUserPresets.json cannot re-define the %1 preset: %2</source>
<translation type="unfinished"></translation> <translation>CMakeUserPresets.json kann das Preset %1 nicht erneut definieren: %2</translation>
</message> </message>
<message> <message>
<source>Build preset %1 is missing a corresponding configure preset.</source> <source>Build preset %1 is missing a corresponding configure preset.</source>
<translation type="unfinished"></translation> <translation>Im Build-Preset %1 fehlt ein entsprechendes Configure-Preset.</translation>
</message> </message>
<message> <message>
<source>Failed to load %1: %2</source> <source>Failed to load %1: %2</source>
<translation type="unfinished"></translation> <translation>%1 konnte nicht geladen werden: %2</translation>
</message> </message>
<message> <message>
<source>yes</source> <source>yes</source>
@@ -416,35 +416,35 @@
</message> </message>
<message> <message>
<source>Version: %1</source> <source>Version: %1</source>
<translation type="unfinished">Version: %1</translation> <translation>Version: %1</translation>
</message> </message>
<message> <message>
<source>Supports fileApi: %1</source> <source>Supports fileApi: %1</source>
<translation type="unfinished"></translation> <translation>Unterstützt fileApi: %1</translation>
</message> </message>
<message> <message>
<source>Detection source: &quot;%1&quot;</source> <source>Detection source: &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation>Quelle: &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<source>CMake executable path does not exist.</source> <source>CMake executable path does not exist.</source>
<translation type="unfinished"></translation> <translation>Pfad für das CMake-Werkzeug existiert nicht.</translation>
</message> </message>
<message> <message>
<source>CMake executable path is not a file.</source> <source>CMake executable path is not a file.</source>
<translation type="unfinished"></translation> <translation>Pfad für das CMake-Werkzeug ist keine Datei.</translation>
</message> </message>
<message> <message>
<source>CMake executable path is not executable.</source> <source>CMake executable path is not executable.</source>
<translation type="unfinished"></translation> <translation>Pfad für das CMake-Werkzeug ist nicht ausführbar.</translation>
</message> </message>
<message> <message>
<source>CMake executable does not provide required IDE integration features.</source> <source>CMake executable does not provide required IDE integration features.</source>
<translation type="unfinished"></translation> <translation>Ausführbare CMake-Datei unterstützt die benötigten Funktionen für die IDE-Integration nicht.</translation>
</message> </message>
<message> <message>
<source>Path</source> <source>Path</source>
<translation type="unfinished">Pfad</translation> <translation>Pfad</translation>
</message> </message>
<message> <message>
<source>Name:</source> <source>Name:</source>
@@ -456,7 +456,7 @@
</message> </message>
<message> <message>
<source>Version:</source> <source>Version:</source>
<translation type="unfinished">Version:</translation> <translation>Version:</translation>
</message> </message>
<message> <message>
<source>Help file:</source> <source>Help file:</source>
@@ -496,27 +496,27 @@
</message> </message>
<message> <message>
<source>Current executable</source> <source>Current executable</source>
<translation type="unfinished"></translation> <translation>Aktuelle ausführbare Datei</translation>
</message> </message>
<message> <message>
<source>Build the executable used in the active run configuration. Currently: %1</source> <source>Build the executable used in the active run configuration. Currently: %1</source>
<translation type="unfinished"></translation> <translation>Die ausführbare Datei der aktiven Ausführungskonfiguration erstellen. Aktuell: %1</translation>
</message> </message>
<message> <message>
<source>Target: %1</source> <source>Target: %1</source>
<translation type="unfinished"></translation> <translation>Ziel: %1</translation>
</message> </message>
<message> <message>
<source>Enable automatic provisioning updates:</source> <source>Enable automatic provisioning updates:</source>
<translation type="unfinished"></translation> <translation>Automatische Provisionierungsaktualisierungen aktivieren:</translation>
</message> </message>
<message> <message>
<source>Tells xcodebuild to create and download a provisioning profile if a valid one does not exist.</source> <source>Tells xcodebuild to create and download a provisioning profile if a valid one does not exist.</source>
<translation type="unfinished"></translation> <translation>Veranlasst xcodebuild, ein Provisionierungsprofil zu erstellen und herunterzuladen, wenn kein gültiges vorhanden ist.</translation>
</message> </message>
<message> <message>
<source>Target</source> <source>Target</source>
<translation type="unfinished">Ziel</translation> <translation>Ziel</translation>
</message> </message>
<message> <message>
<source>The build configuration is currently disabled.</source> <source>The build configuration is currently disabled.</source>
@@ -524,7 +524,7 @@
</message> </message>
<message> <message>
<source>A CMake tool must be set up for building. Configure a CMake tool in the kit options.</source> <source>A CMake tool must be set up for building. Configure a CMake tool in the kit options.</source>
<translation>Zum Erstellen muss ein CMake Tool eingestellt sein. Die Konfiguration erfolgt in den Kit Einstellungen.</translation> <translation>Zum Erstellen muss ein CMake-Werkzeug eingestellt sein. Die Konfiguration erfolgt in den Kit Einstellungen.</translation>
</message> </message>
<message> <message>
<source>There is a CMakeCache.txt file in &quot;%1&quot;, which suggest an in-source build was done before. You are now building in &quot;%2&quot;, and the CMakeCache.txt file might confuse CMake.</source> <source>There is a CMakeCache.txt file in &quot;%1&quot;, which suggest an in-source build was done before. You are now building in &quot;%2&quot;, and the CMakeCache.txt file might confuse CMake.</source>
@@ -545,7 +545,7 @@
<message> <message>
<source>CMake Build</source> <source>CMake Build</source>
<comment>Display name for CMakeProjectManager::CMakeBuildStep id.</comment> <comment>Display name for CMakeProjectManager::CMakeBuildStep id.</comment>
<translation type="unfinished">Erstellen mit CMake</translation> <translation>Erstellen mit CMake</translation>
</message> </message>
<message> <message>
<source>CMake arguments:</source> <source>CMake arguments:</source>
@@ -558,7 +558,7 @@
<message> <message>
<source>Build</source> <source>Build</source>
<comment>ConfigWidget display name.</comment> <comment>ConfigWidget display name.</comment>
<translation type="unfinished"></translation> <translation>Erstellen</translation>
</message> </message>
<message> <message>
<source>Targets:</source> <source>Targets:</source>
@@ -570,19 +570,19 @@
</message> </message>
<message> <message>
<source>Kit:</source> <source>Kit:</source>
<translation type="unfinished">Kit:</translation> <translation>Kit:</translation>
</message> </message>
<message> <message>
<source>Initial Configuration:</source> <source>Initial Configuration:</source>
<translation type="unfinished"></translation> <translation>Initiale Konfiguration:</translation>
</message> </message>
<message> <message>
<source>Current Configuration:</source> <source>Current Configuration:</source>
<translation type="unfinished"></translation> <translation>Aktuelle Konfiguration:</translation>
</message> </message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished">Typ:</translation> <translation>Typ:</translation>
</message> </message>
<message> <message>
<source>Value</source> <source>Value</source>
@@ -631,23 +631,23 @@
</message> </message>
<message> <message>
<source>Package manager auto setup</source> <source>Package manager auto setup</source>
<translation type="unfinished"></translation> <translation>Automatisches Aufsetzen von Paketmanagern</translation>
</message> </message>
<message> <message>
<source>Add the CMAKE_PROJECT_INCLUDE_BEFORE variable pointing to a CMake script that will install dependencies from the conanfile.txt, conanfile.py, or vcpkg.json file from the project source directory.</source> <source>Add the CMAKE_PROJECT_INCLUDE_BEFORE variable pointing to a CMake script that will install dependencies from the conanfile.txt, conanfile.py, or vcpkg.json file from the project source directory.</source>
<translation type="unfinished"></translation> <translation>Setzt die Variable CMAKE_PROJECT_INCLUDE_BEFORE auf ein CMake-Script, das Abhängigkeiten von einer conanfile.txt, conanfile.py oder vcpkg.json-Datei im Quellverzeichnis des Projekts installiert.</translation>
</message> </message>
<message> <message>
<source>Ask before re-configuring with initial parameters</source> <source>Ask before re-configuring with initial parameters</source>
<translation type="unfinished"></translation> <translation>Vor dem Neukonfigurieren mit initialen Parametern nachfragen</translation>
</message> </message>
<message> <message>
<source>Show subfolders inside source group folders</source> <source>Show subfolders inside source group folders</source>
<translation type="unfinished"></translation> <translation>Unterverzeichnisse in Sourcegruppen anzeigen</translation>
</message> </message>
<message> <message>
<source>General</source> <source>General</source>
<translation type="unfinished">Allgemein</translation> <translation>Allgemein</translation>
</message> </message>
<message> <message>
<source>Adding Files</source> <source>Adding Files</source>
@@ -675,12 +675,12 @@
</message> </message>
<message> <message>
<source>Copy to Clipboard?</source> <source>Copy to Clipboard?</source>
<translation type="unfinished">In die Zwischenablage kopieren?</translation> <translation>In die Zwischenablage kopieren?</translation>
</message> </message>
<message> <message>
<source>Files are not automatically added to the CMakeLists.txt file of the CMake project. <source>Files are not automatically added to the CMakeLists.txt file of the CMake project.
Copy the path to the source files to the clipboard?</source> Copy the path to the source files to the clipboard?</source>
<translation type="unfinished">Dateien werden nicht automatisch zur Datei CMakeLists.txt des CMake-Projekts hinzugefügt. <translation>Dateien werden nicht automatisch zur Datei CMakeLists.txt des CMake-Projekts hinzugefügt.
Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</translation> Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</translation>
</message> </message>
<message> <message>
@@ -689,15 +689,15 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>Run CMake with configuration changes?</source> <source>Run CMake with configuration changes?</source>
<translation type="unfinished"></translation> <translation>CMake mit Änderungen der Konfiguration ausführen?</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;CMake configuration failed&lt;b&gt;&lt;p&gt;The backup of the previous configuration has been restored.&lt;/p&gt;&lt;p&gt;Issues and &quot;Projects &gt; Build&quot; settings show more information about the failure.&lt;/p</source> <source>&lt;b&gt;CMake configuration failed&lt;b&gt;&lt;p&gt;The backup of the previous configuration has been restored.&lt;/p&gt;&lt;p&gt;Issues and &quot;Projects &gt; Build&quot; settings show more information about the failure.&lt;/p</source>
<translation type="unfinished"></translation> <translation>&lt;b&gt;CMake-Konfiguration ist fehlgeschlagen&lt;b/&gt;&lt;p&gt;Das Backup der vorherigen Konfiguration wurde wiederhergestellt.&lt;/p&gt;&lt;p&gt;Details zu dem Problem finden Sie in &quot;Probleme&quot; und den Einstellungen in &quot;Projekte &gt; Erstellen&quot;.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Failed to load project&lt;b&gt;&lt;p&gt;Issues and &quot;Projects &gt; Build&quot; settings show more information about the failure.&lt;/p</source> <source>&lt;b&gt;Failed to load project&lt;b&gt;&lt;p&gt;Issues and &quot;Projects &gt; Build&quot; settings show more information about the failure.&lt;/p</source>
<translation type="unfinished"></translation> <translation>&lt;b&gt;Laden des Projekts fehlgeschlagen&lt;/b&gt;&lt;p&gt;Details zu dem Problem finden Sie in &quot;Probleme&quot; und den Einstellungen in &quot;Projekte &gt; Erstellen&quot;.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<source>Failed to create build directory &quot;%1&quot;.</source> <source>Failed to create build directory &quot;%1&quot;.</source>
@@ -705,11 +705,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>No CMake tool set up in kit.</source> <source>No CMake tool set up in kit.</source>
<translation type="unfinished"></translation> <translation>Im Kit ist kein CMake-Werkzeug eingerichtet.</translation>
</message> </message>
<message> <message>
<source>The remote CMake executable cannot write to the local build directory.</source> <source>The remote CMake executable cannot write to the local build directory.</source>
<translation type="unfinished"></translation> <translation>Das entfernte CMake-Werkzeug kann nicht in das lokale Build-Verzeichnis schreiben.</translation>
</message> </message>
<message> <message>
<source>&lt;No CMake Tool available&gt;</source> <source>&lt;No CMake Tool available&gt;</source>
@@ -729,11 +729,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>Path to the cmake executable</source> <source>Path to the cmake executable</source>
<translation>Pfad zur ausführbaren Datei von cmake</translation> <translation>Pfad zum CMake-Werkzeug</translation>
</message> </message>
<message> <message>
<source>CMake version %1 is unsupported. Update to version 3.14 (with file-api) or later.</source> <source>CMake version %1 is unsupported. Update to version 3.14 (with file-api) or later.</source>
<translation type="unfinished"></translation> <translation>Die CMake-Version %1 wird nicht unterstützt. Aktualisieren Sie auf Version 3.14 (mit file-api) oder neuer.</translation>
</message> </message>
<message> <message>
<source>Change...</source> <source>Change...</source>
@@ -749,11 +749,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>Platform</source> <source>Platform</source>
<translation type="unfinished">Plattform</translation> <translation>Plattform</translation>
</message> </message>
<message> <message>
<source>Toolset</source> <source>Toolset</source>
<translation type="unfinished"></translation> <translation>Toolset</translation>
</message> </message>
<message> <message>
<source>Generator:</source> <source>Generator:</source>
@@ -777,11 +777,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>CMake Tool is unconfigured, CMake generator will be ignored.</source> <source>CMake Tool is unconfigured, CMake generator will be ignored.</source>
<translation>Das CMake-Tool ist nicht konfiguriert. Der CMake-Generator wird ignoriert.</translation> <translation>Das CMake-Werkzeug ist nicht konfiguriert. Der CMake-Generator wird ignoriert.</translation>
</message> </message>
<message> <message>
<source>CMake Tool does not support the configured generator.</source> <source>CMake Tool does not support the configured generator.</source>
<translation>Das CMake-Tool unterstützt den konfigurierten Generator nicht.</translation> <translation>Das CMake-Werkzeug unterstützt den konfigurierten Generator nicht.</translation>
</message> </message>
<message> <message>
<source>Platform is not supported by the selected CMake generator.</source> <source>Platform is not supported by the selected CMake generator.</source>
@@ -813,15 +813,15 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>CMake &lt;a href=&quot;generator&quot;&gt;generator&lt;/a&gt;</source> <source>CMake &lt;a href=&quot;generator&quot;&gt;generator&lt;/a&gt;</source>
<translation type="unfinished"></translation> <translation>CMake-&lt;a href=&quot;generator&quot;&gt;Generator&lt;/a&gt;</translation>
</message> </message>
<message> <message>
<source>The selected CMake binary does not support file-api. %1 will not be able to parse CMake projects.</source> <source>The selected CMake binary does not support file-api. %1 will not be able to parse CMake projects.</source>
<translation type="unfinished"></translation> <translation>Das gewählte CMake-Werkzeug unterstützt file-api nicht. %1 wird nicht in der Lage sein, CMake-Projekte auszuwerten.</translation>
</message> </message>
<message> <message>
<source>Enter one CMake &lt;a href=&quot;variable&quot;&gt;variable&lt;/a&gt; per line.&lt;br/&gt;To set a variable, use -D&amp;lt;variable&amp;gt;:&amp;lt;type&amp;gt;=&amp;lt;value&amp;gt;.&lt;br/&gt;&amp;lt;type&amp;gt; can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.</source> <source>Enter one CMake &lt;a href=&quot;variable&quot;&gt;variable&lt;/a&gt; per line.&lt;br/&gt;To set a variable, use -D&amp;lt;variable&amp;gt;:&amp;lt;type&amp;gt;=&amp;lt;value&amp;gt;.&lt;br/&gt;&amp;lt;type&amp;gt; can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.</source>
<translation type="unfinished"></translation> <translation>Geben Sie eine CMake-&lt;a href=&quot;variable&quot;&gt;Variable&lt;/a&gt; pro Zeile ein.&lt;br/&gt;Um eine Variable zu setzen, benutzen Sie -D&amp;lt;Variable&amp;gt;:&amp;lt;Typ&amp;gt;=&amp;lt;Wert&amp;gt;.&lt;br/&gt;&amp;lt;Typ&amp;gt; kann einer der folgenden Werte sein: FILEPATH, PATH, BOOL, INTERNAL oder STRING.</translation>
</message> </message>
<message> <message>
<source>CMake Configuration</source> <source>CMake Configuration</source>
@@ -877,7 +877,7 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>Builds a target of any open CMake project.</source> <source>Builds a target of any open CMake project.</source>
<translation type="unfinished"></translation> <translation>Erstellt ein Ziel eines geöffneten CMake-Projekts.</translation>
</message> </message>
<message> <message>
<source>Open CMake target</source> <source>Open CMake target</source>
@@ -885,23 +885,23 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>Jumps to the definition of a target of any open CMake project.</source> <source>Jumps to the definition of a target of any open CMake project.</source>
<translation type="unfinished"></translation> <translation>Springt zur Definition eines Ziels eines geöffneten CMake-Projekts.</translation>
</message> </message>
<message> <message>
<source>The source directory %1 is not reachable by the CMake executable %2.</source> <source>The source directory %1 is not reachable by the CMake executable %2.</source>
<translation type="unfinished"></translation> <translation>Das Quellverzeichnis %1 kann vom CMake-Werkzeug %2 nicht erreicht werden.</translation>
</message> </message>
<message> <message>
<source>The build directory %1 is not reachable by the CMake executable %2.</source> <source>The build directory %1 is not reachable by the CMake executable %2.</source>
<translation type="unfinished"></translation> <translation>Das Build-Verzeichnis %1 kann vom CMake-Werkzeug %2 nicht erreicht werden.</translation>
</message> </message>
<message> <message>
<source>The build directory &quot;%1&quot; does not exist</source> <source>The build directory &quot;%1&quot; does not exist</source>
<translation type="unfinished"></translation> <translation>Das Build-Verzeichnis &quot;%1&quot; existiert nicht</translation>
</message> </message>
<message> <message>
<source>CMake executable &quot;%1&quot; and build directory &quot;%2&quot; must be on the same device.</source> <source>CMake executable &quot;%1&quot; and build directory &quot;%2&quot; must be on the same device.</source>
<translation type="unfinished"></translation> <translation>Das CMake-Werkzeug &quot;%1&quot; und das Build-Verzeichnis &quot;%2&quot; müssen auf demselben Gerät liegen.</translation>
</message> </message>
<message> <message>
<source>Running %1 in %2.</source> <source>Running %1 in %2.</source>
@@ -913,19 +913,19 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>CMake process failed to start.</source> <source>CMake process failed to start.</source>
<translation type="unfinished"></translation> <translation>Der CMake-Prozess konnte nicht gestartet werden.</translation>
</message> </message>
<message> <message>
<source>CMake process was canceled by the user.</source> <source>CMake process was canceled by the user.</source>
<translation type="unfinished"></translation> <translation>Der CMake-Prozess wurde vom Benutzer abgebrochen.</translation>
</message> </message>
<message> <message>
<source>CMake process crashed.</source> <source>CMake process crashed.</source>
<translation type="unfinished"></translation> <translation>Der CMake-Prozess ist abgestürzt.</translation>
</message> </message>
<message> <message>
<source>CMake process exited with exit code %1.</source> <source>CMake process exited with exit code %1.</source>
<translation type="unfinished"></translation> <translation>Der CMake-Prozess wurde mit dem Rückgabewert %1 beendet.</translation>
</message> </message>
<message> <message>
<source>&lt;Build Directory&gt;</source> <source>&lt;Build Directory&gt;</source>
@@ -937,165 +937,167 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren?</trans
</message> </message>
<message> <message>
<source>Unexpected source directory &quot;%1&quot;, expected &quot;%2&quot;. This can be correct in some situations, for example when importing a standalone Qt test, but usually this is an error. Import the build anyway?</source> <source>Unexpected source directory &quot;%1&quot;, expected &quot;%2&quot;. This can be correct in some situations, for example when importing a standalone Qt test, but usually this is an error. Import the build anyway?</source>
<translation type="unfinished"></translation> <translation>Unerwartetes Quellverzeichnis &quot;%1&quot;, erwartet wurde &quot;%2&quot;. Dies kann in einigen Situationen korrekt sein, zum Beispiel beim Importieren eines eigenständigen Qt-Tests, aber normalerweise ist es ein Fehler. Soll der Build trotzdem importiert werden?</translation>
</message> </message>
<message> <message>
<source>CMake Modules</source> <source>CMake Modules</source>
<translation type="unfinished">CMake-Module</translation> <translation>CMake-Module</translation>
</message> </message>
<message> <message>
<source>Target type: </source> <source>Target type: </source>
<translation type="unfinished">Zieltyp: </translation> <translation>Zieltyp: </translation>
</message> </message>
<message> <message>
<source>No build artifacts</source> <source>No build artifacts</source>
<translation type="unfinished">Keine Build-Artefakte</translation> <translation>Keine Build-Artefakte</translation>
</message> </message>
<message> <message>
<source>Build artifacts:</source> <source>Build artifacts:</source>
<translation type="unfinished">Build-Artefakte:</translation> <translation>Build-Artefakte:</translation>
</message> </message>
<message> <message>
<source>Version not parseable</source> <source>Version not parseable</source>
<translation type="unfinished"></translation> <translation>Version kann nicht ausgewertet werden</translation>
</message> </message>
<message> <message>
<source>Searching CMake binaries...</source> <source>Searching CMake binaries...</source>
<translation type="unfinished"></translation> <translation>Suche CMake-Werkzeuge...</translation>
</message> </message>
<message> <message>
<source>Found &quot;%1&quot;</source> <source>Found &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation>&quot;%1&quot; gefunden</translation>
</message> </message>
<message> <message>
<source>Removing CMake entries...</source> <source>Removing CMake entries...</source>
<translation type="unfinished"></translation> <translation>Entferne CMake-Einträge...</translation>
</message> </message>
<message> <message>
<source>Removed &quot;%1&quot;</source> <source>Removed &quot;%1&quot;</source>
<translation type="unfinished"></translation> <translation>&quot;%1&quot; entfernt</translation>
</message> </message>
<message> <message>
<source>CMake:</source> <source>CMake:</source>
<translation type="unfinished"></translation> <translation>CMake:</translation>
</message> </message>
<message> <message>
<source>Failed to set up CMake file API support. %1 cannot extract project information.</source> <source>Failed to set up CMake file API support. %1 cannot extract project information.</source>
<translation type="unfinished"></translation> <translation>CMake file-api-Unterstützung konnte nicht aufgesetzt werden. %1 kann keine Projektinformationen auswerten.</translation>
</message> </message>
<message> <message>
<source>Invalid reply file created by CMake.</source> <source>Invalid reply file created by CMake.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Antwortdatei erstellt.</translation>
</message> </message>
<message> <message>
<source>Invalid cache file generated by CMake.</source> <source>Invalid cache file generated by CMake.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Cache-Datei erstellt.</translation>
</message> </message>
<message> <message>
<source>Invalid cmakeFiles file generated by CMake.</source> <source>Invalid cmakeFiles file generated by CMake.</source>
<translation type="unfinished"></translation> <translation>CMake hat ungültige &quot;cmakeFiles&quot; erstellt.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: No directories.</source> <source>Invalid codemodel file generated by CMake: No directories.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Keine Verzeichnisse.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Empty directory object.</source> <source>Invalid codemodel file generated by CMake: Empty directory object.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Verzeichnisobjekt.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: No projects.</source> <source>Invalid codemodel file generated by CMake: No projects.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Keine Projekte.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Empty project object.</source> <source>Invalid codemodel file generated by CMake: Empty project object.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Projektobjekt.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Broken project data.</source> <source>Invalid codemodel file generated by CMake: Broken project data.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Fehlerhafte Projektdaten.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Empty target object.</source> <source>Invalid codemodel file generated by CMake: Empty target object.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Zielobjekt.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Broken target data.</source> <source>Invalid codemodel file generated by CMake: Broken target data.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Fehlerhafte Zieldaten.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: No configurations.</source> <source>Invalid codemodel file generated by CMake: No configurations.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Keine Konfigurationen.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Empty configuration object.</source> <source>Invalid codemodel file generated by CMake: Empty configuration object.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Konfigurationsobjekt.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake: Broken indexes in directories, projects, or targets.</source> <source>Invalid codemodel file generated by CMake: Broken indexes in directories, projects, or targets.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt: Fehlerhafte Indizes in Verzeichnissen, Projekten oder Zielen.</translation>
</message> </message>
<message> <message>
<source>Invalid codemodel file generated by CMake.</source> <source>Invalid codemodel file generated by CMake.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Codemodell-Datei erstellt.</translation>
</message> </message>
<message> <message>
<source>Invalid target file: Information is missing.</source> <source>Invalid target file: Information is missing.</source>
<translation type="unfinished"></translation> <translation>Ungültige Zieldatei: Information fehlt.</translation>
</message> </message>
<message> <message>
<source>Invalid target file generated by CMake: Broken indexes in target details.</source> <source>Invalid target file generated by CMake: Broken indexes in target details.</source>
<translation type="unfinished"></translation> <translation>CMake hat eine ungültige Zieldatei erstellt: Fehlerhafte Indizes in den Zieldetails.</translation>
</message> </message>
<message> <message>
<source>CMake parsing was canceled.</source> <source>CMake parsing was canceled.</source>
<translation type="unfinished"></translation> <translation>CMake-Auswertung wurde abgebrochen.</translation>
</message> </message>
<message> <message>
<source>No &quot;%1&quot; CMake configuration found. Available configurations: &quot;%2&quot;. <source>No &quot;%1&quot; CMake configuration found. Available configurations: &quot;%2&quot;.
Make sure that CMAKE_CONFIGURATION_TYPES variable contains the &quot;Build type&quot; field.</source> Make sure that CMAKE_CONFIGURATION_TYPES variable contains the &quot;Build type&quot; field.</source>
<translation type="unfinished"></translation> <translation>CMake-Konfiguration &quot;%1 wurde nicht gefunden. Verfügbare Konfigurationen: &quot;%2&quot;.
Stellen Sie sicher, dass der Wert des &quot;Build-Typ&quot;-Felds in der CMAKE_CONFIGURATION_TYPES-Variable enthalten ist.</translation>
</message> </message>
<message> <message>
<source>No &quot;%1&quot; CMake configuration found. Available configuration: &quot;%2&quot;. <source>No &quot;%1&quot; CMake configuration found. Available configuration: &quot;%2&quot;.
Make sure that CMAKE_BUILD_TYPE variable matches the &quot;Build type&quot; field.</source> Make sure that CMAKE_BUILD_TYPE variable matches the &quot;Build type&quot; field.</source>
<translation type="unfinished"></translation> <translation>CMake-Konfiguration &quot;%1 wurde nicht gefunden. Verfügbare Konfigurationen: &quot;%2&quot;.
Stellen Sie sicher, dass der Wert der CMAKE_BUILD_TYPE-Variable derselbe wie der des &quot;Build-Typ&quot;-Felds ist.</translation>
</message> </message>
<message> <message>
<source>CMake returned error code: %1</source> <source>CMake returned error code: %1</source>
<translation type="unfinished"></translation> <translation>CMake hat einen Fehlerwert zurückgegeben: %1</translation>
</message> </message>
<message> <message>
<source>Failed to rename %1 to %2.</source> <source>Failed to rename %1 to %2.</source>
<translation type="unfinished"></translation> <translation>Umbenennen von %1 nach %2 ist fehlgeschlagen.</translation>
</message> </message>
<message> <message>
<source>Failed to copy %1 to %2.</source> <source>Failed to copy %1 to %2.</source>
<translation type="unfinished"></translation> <translation>Kopieren von %1 nach %2 ist fehlgeschlagen.</translation>
</message> </message>
<message> <message>
<source>Failed to read %1 file</source> <source>Failed to read %1 file</source>
<translation type="unfinished"></translation> <translation>Die Datei %1 konnte nicht gelesen werden</translation>
</message> </message>
<message> <message>
<source>Invalid %1 file</source> <source>Invalid %1 file</source>
<translation type="unfinished"></translation> <translation>Ungültige Datei %1</translation>
</message> </message>
<message> <message>
<source>Invalid &quot;version&quot; in %1 file</source> <source>Invalid &quot;version&quot; in %1 file</source>
<translation type="unfinished"></translation> <translation>Ungültige &quot;version&quot; in Datei %1</translation>
</message> </message>
<message> <message>
<source>Invalid &quot;configurePresets&quot; section in %1 file</source> <source>Invalid &quot;configurePresets&quot; section in %1 file</source>
<translation type="unfinished"></translation> <translation>Ungültiger Abschnitt &quot;configurePresets&quot; in Datei %1</translation>
</message> </message>
<message> <message>
<source>Invalid &quot;buildPresets&quot; section in %1 file</source> <source>Invalid &quot;buildPresets&quot; section in %1 file</source>
<translation type="unfinished"></translation> <translation>Ungültiger Abschnitt &quot;buildPresets&quot; in Datei %1</translation>
</message> </message>
<message> <message>
<source>&lt;File System&gt;</source> <source>&lt;File System&gt;</source>
<translation type="unfinished"></translation> <translation>&lt;Dateisystem&gt;</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -52708,7 +52710,7 @@ in &quot;%2&quot; aus.
<name>CMakeProjectManager::Tr::Tr</name> <name>CMakeProjectManager::Tr::Tr</name>
<message> <message>
<source>Tools</source> <source>Tools</source>
<translation type="unfinished">Werkzeuge</translation> <translation>Werkzeuge</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@@ -494,6 +494,11 @@ int main(int argc, char **argv)
qputenv("QT_ENABLE_REGEXP_JIT", "0"); qputenv("QT_ENABLE_REGEXP_JIT", "0");
} }
if (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("GTK_THEME"))
// Work around QTCREATORBUG-28497:
// Prevent Qt's GTK3 platform theme plugin from enforcing a dark palette
qputenv("GTK_THEME", ":light");
#if defined(QTC_FORCE_XCB) #if defined(QTC_FORCE_XCB)
if (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("QT_QPA_PLATFORM")) { if (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("QT_QPA_PLATFORM")) {
// Enforce XCB on Linux/Gnome, if the user didn't override via QT_QPA_PLATFORM // Enforce XCB on Linux/Gnome, if the user didn't override via QT_QPA_PLATFORM

View File

@@ -374,8 +374,10 @@ void InfoBarDisplay::update()
if (infoWidgetCloseButton) if (infoWidgetCloseButton)
hbox->addWidget(infoWidgetCloseButton); hbox->addWidget(infoWidgetCloseButton);
} else { } else {
if (infoWidgetCloseButton) {
infoWidgetCloseButton->setText(info.m_cancelButtonText); infoWidgetCloseButton->setText(info.m_cancelButtonText);
hbox->addWidget(infoWidgetCloseButton); hbox->addWidget(infoWidgetCloseButton);
}
if (infoWidgetSuppressButton) if (infoWidgetSuppressButton)
hbox->addWidget(infoWidgetSuppressButton); hbox->addWidget(infoWidgetSuppressButton);
} }

View File

@@ -93,7 +93,7 @@ FilterDialog::FilterDialog(const Checks &checks, QWidget *parent)
buttonBox, buttonBox,
}.attachTo(this); }.attachTo(this);
connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [&] { connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [=] {
const bool hasSelection = !m_view->selectionModel()->selectedRows().isEmpty(); const bool hasSelection = !m_view->selectionModel()->selectedRows().isEmpty();
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection); buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection);
}); });

View File

@@ -1623,10 +1623,24 @@ bool CMakeBuildConfiguration::fromMap(const QVariantMap &map)
m_buildSystem->setInitialCMakeArguments(cmd.splitArguments()); m_buildSystem->setInitialCMakeArguments(cmd.splitArguments());
} }
d->m_clearSystemConfigureEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)) // Upgrading from Qt Creator version <9 to 9, if the build environment is set
.toBool(); // apply the specific values to the configure environment
auto settingsKey = [map](const QLatin1String &configureKey, const QLatin1String &buildKey) {
if (!map.contains(configureKey) && map.contains(buildKey))
return buildKey;
return configureKey;
};
const QLatin1String clearSystemEnvironmentKey
= settingsKey(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY),
QLatin1String(ProjectExplorer::Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY));
const QLatin1String userEnvironmentChangesKey
= settingsKey(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY),
QLatin1String(ProjectExplorer::Constants::USER_ENVIRONMENT_CHANGES_KEY));
d->m_clearSystemConfigureEnvironment = map.value(clearSystemEnvironmentKey).toBool();
d->m_userConfigureEnvironmentChanges = EnvironmentItem::fromStringList( d->m_userConfigureEnvironmentChanges = EnvironmentItem::fromStringList(
map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList()); map.value(userEnvironmentChangesKey).toStringList());
updateAndEmitConfigureEnvironmentChanged(); updateAndEmitConfigureEnvironmentChanged();

View File

@@ -96,14 +96,24 @@ Internal::PresetsData CMakeProject::combinePresets(Internal::PresetsData &cmakeP
for (const auto &p : presets) for (const auto &p : presets)
presetsHash.insert(p.name, p); presetsHash.insert(p.name, p);
auto resolveInherits = [](const auto &presetsHash, auto &presetsList) { auto resolveInherits = [](auto &presetsHash, auto &presetsList) {
Utils::sort(presetsList, [](const auto &left, const auto &right) {
if (left.inherits) {
if (left.inherits.value().contains(right.name))
return false;
}
return true;
});
for (auto &p : presetsList) { for (auto &p : presetsList) {
if (!p.inherits) if (!p.inherits)
continue; continue;
for (const QString &inheritFromName : p.inherits.value()) for (const QString &inheritFromName : p.inherits.value()) {
if (presetsHash.contains(inheritFromName)) if (presetsHash.contains(inheritFromName)) {
p.inheritFrom(presetsHash[inheritFromName]); p.inheritFrom(presetsHash[inheritFromName]);
presetsHash[p.name] = p;
}
}
} }
}; };

View File

@@ -164,8 +164,8 @@ void CompilationDatabaseTests::testFilterArguments()
{"RELATIVE_PLUGIN_PATH", "\"../lib/qtcreator/plugins\""}, {"RELATIVE_PLUGIN_PATH", "\"../lib/qtcreator/plugins\""},
{"QT_CREATOR", "1"}})); {"QT_CREATOR", "1"}}));
QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource); QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource);
QCOMPARE(testData.sysRoot.toString(), HostOsInfo::isWindowsHost() ? QString("C:\\sysroot\\embedded") QCOMPARE(testData.sysRoot.toUserOutput(), HostOsInfo::isWindowsHost()
: QString("/opt/sysroot/embedded")); ? QString("C:\\sysroot\\embedded") : QString("/opt/sysroot/embedded"));
} }
static QString kCmakeCommand static QString kCmakeCommand

View File

@@ -752,7 +752,7 @@ void ExternalToolConfig::showInfoForItem(const QModelIndex &index)
static FilePath getUserFilePath(const QString &proposalFileName) static FilePath getUserFilePath(const QString &proposalFileName)
{ {
const FilePath resourceDir(ICore::userResourcePath()); const FilePath resourceDir(ICore::userResourcePath());
const FilePath externalToolsDir = resourceDir / "externalTools"; const FilePath externalToolsDir = resourceDir / "externaltools";
if (!externalToolsDir.isDir()) if (!externalToolsDir.isDir())
externalToolsDir.createDir(); externalToolsDir.createDir();

View File

@@ -79,7 +79,7 @@ int DocumentModelPrivate::rowCount(const QModelIndex &parent) const
return 0; return 0;
} }
void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry) DocumentModel::Entry *DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
{ {
const Utils::FilePath filePath = entry->filePath(); const Utils::FilePath filePath = entry->filePath();
@@ -95,9 +95,8 @@ void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
this, [this, document = previousEntry->document] { itemChanged(document); }); this, [this, document = previousEntry->document] { itemChanged(document); });
} }
delete entry; delete entry;
entry = nullptr;
disambiguateDisplayNames(previousEntry); disambiguateDisplayNames(previousEntry);
return; return nullptr;
} }
auto positions = positionEntry(m_entries, entry); auto positions = positionEntry(m_entries, entry);
@@ -115,6 +114,7 @@ void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
itemChanged(document); itemChanged(document);
}); });
endInsertRows(); endInsertRows();
return entry;
} }
bool DocumentModelPrivate::disambiguateDisplayNames(DocumentModel::Entry *entry) bool DocumentModelPrivate::disambiguateDisplayNames(DocumentModel::Entry *entry)
@@ -411,8 +411,7 @@ DocumentModel::Entry *DocumentModelPrivate::addSuspendedDocument(const FilePath
entry->document->setPreferredDisplayName(displayName); entry->document->setPreferredDisplayName(displayName);
entry->document->setId(id); entry->document->setId(id);
entry->isSuspended = true; entry->isSuspended = true;
d->addEntry(entry); return d->addEntry(entry);
return entry;
} }
DocumentModel::Entry *DocumentModelPrivate::firstSuspendedEntry() DocumentModel::Entry *DocumentModelPrivate::firstSuspendedEntry()

View File

@@ -33,7 +33,7 @@ public:
Qt::DropActions supportedDragActions() const override; Qt::DropActions supportedDragActions() const override;
QStringList mimeTypes() const override; QStringList mimeTypes() const override;
void addEntry(DocumentModel::Entry *entry); DocumentModel::Entry *addEntry(DocumentModel::Entry *entry);
void removeDocument(int idx); void removeDocument(int idx);
std::optional<int> indexOfFilePath(const Utils::FilePath &filePath) const; std::optional<int> indexOfFilePath(const Utils::FilePath &filePath) const;

View File

@@ -720,7 +720,9 @@ void ICore::raiseWindow(QWidget *widget)
if (!widget) if (!widget)
return; return;
QWidget *window = widget->window(); QWidget *window = widget->window();
if (window && window == m_mainwindow) { if (!window)
return;
if (window == m_mainwindow) {
m_mainwindow->raiseWindow(); m_mainwindow->raiseWindow();
} else { } else {
window->raise(); window->raise();

View File

@@ -356,8 +356,8 @@ void CppCodeStylePreferencesWidget::setCodeStyle(CppCodeStylePreferences *codeSt
slotCurrentPreferencesChanged(currentPreferences); slotCurrentPreferencesChanged(currentPreferences);
}); });
setTabSettings(m_preferences->tabSettings()); setTabSettings(m_preferences->currentTabSettings());
setCodeStyleSettings(m_preferences->codeStyleSettings(), false); setCodeStyleSettings(m_preferences->currentCodeStyleSettings(), false);
slotCurrentPreferencesChanged(m_preferences->currentPreferences(), false); slotCurrentPreferencesChanged(m_preferences->currentPreferences(), false);
updatePreview(); updatePreview();

View File

@@ -12,7 +12,6 @@
#include "cppeditordocument.h" #include "cppeditordocument.h"
#include "cppeditorwidget.h" #include "cppeditorwidget.h"
#include "cppfilesettingspage.h" #include "cppfilesettingspage.h"
#include "cpphighlighter.h"
#include "cppincludehierarchy.h" #include "cppincludehierarchy.h"
#include "cppmodelmanager.h" #include "cppmodelmanager.h"
#include "cppoutline.h" #include "cppoutline.h"
@@ -260,42 +259,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
connect(openInNextSplitAction, &QAction::triggered, connect(openInNextSplitAction, &QAction::triggered,
this, [] { CppModelManager::switchHeaderSource(true); }); this, [] { CppModelManager::switchHeaderSource(true); });
QAction * const showPreprocessedAction = new QAction(tr("Show Preprocessed Source"), this);
command = ActionManager::registerAction(showPreprocessedAction,
Constants::SHOW_PREPROCESSED_FILE, context);
mcpptools->addAction(command);
connect(showPreprocessedAction, &QAction::triggered,
this, [] { CppModelManager::showPreprocessedFile(false); });
QAction * const showPreprocessedInSplitAction = new QAction
(tr("Show Preprocessed Source in Next Split"), this);
command = ActionManager::registerAction(showPreprocessedInSplitAction,
Constants::SHOW_PREPROCESSED_FILE_SPLIT, context);
mcpptools->addAction(command);
connect(showPreprocessedInSplitAction, &QAction::triggered,
this, [] { CppModelManager::showPreprocessedFile(true); });
QAction * const findUnusedFunctionsAction = new QAction(tr("Find Unused Functions"), this);
command = ActionManager::registerAction(findUnusedFunctionsAction,
"CppTools.FindUnusedFunctions");
mcpptools->addAction(command);
connect(findUnusedFunctionsAction, &QAction::triggered,
this, [] { CppModelManager::findUnusedFunctions({}); });
QAction * const findUnusedFunctionsInSubProjectAction
= new QAction(tr("Find Unused C/C++ Functions"), this);
command = ActionManager::registerAction(findUnusedFunctionsInSubProjectAction,
"CppTools.FindUnusedFunctionsInSubProject");
for (ActionContainer * const projectContextMenu : {
ActionManager::actionContainer(ProjectExplorer::Constants::M_SUBPROJECTCONTEXT),
ActionManager::actionContainer(ProjectExplorer::Constants::M_PROJECTCONTEXT)}) {
projectContextMenu->addSeparator(ProjectExplorer::Constants::G_PROJECT_TREE);
projectContextMenu->addAction(command, ProjectExplorer::Constants::G_PROJECT_TREE);
}
connect(findUnusedFunctionsInSubProjectAction, &QAction::triggered, this, [] {
if (const Node * const node = ProjectTree::currentNode(); node && node->asFolderNode())
CppModelManager::findUnusedFunctions(node->directory());
});
MacroExpander *expander = globalMacroExpander(); MacroExpander *expander = globalMacroExpander();
expander->registerVariable("Cpp:LicenseTemplate", expander->registerVariable("Cpp:LicenseTemplate",
tr("The license template."), tr("The license template."),
@@ -336,9 +299,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST); contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION); touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION);
cmd = ActionManager::command(Constants::SHOW_PREPROCESSED_FILE);
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cmd = ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR); cmd = ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR);
cmd->setTouchBarText(tr("Follow", "text on macOS touch bar")); cmd->setTouchBarText(tr("Follow", "text on macOS touch bar"));
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST); contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
@@ -418,6 +378,44 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST); contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
cppToolsMenu->addAction(cmd); cppToolsMenu->addAction(cmd);
QAction * const showPreprocessedAction = new QAction(tr("Show Preprocessed Source"), this);
command = ActionManager::registerAction(showPreprocessedAction,
Constants::SHOW_PREPROCESSED_FILE, context);
mcpptools->addAction(command);
contextMenu->addAction(command, Constants::G_CONTEXT_FIRST);
connect(showPreprocessedAction, &QAction::triggered,
this, [] { CppModelManager::showPreprocessedFile(false); });
QAction * const showPreprocessedInSplitAction = new QAction
(tr("Show Preprocessed Source in Next Split"), this);
command = ActionManager::registerAction(showPreprocessedInSplitAction,
Constants::SHOW_PREPROCESSED_FILE_SPLIT, context);
mcpptools->addAction(command);
connect(showPreprocessedInSplitAction, &QAction::triggered,
this, [] { CppModelManager::showPreprocessedFile(true); });
QAction *const findUnusedFunctionsAction = new QAction(tr("Find Unused Functions"), this);
command = ActionManager::registerAction(findUnusedFunctionsAction,
"CppTools.FindUnusedFunctions");
mcpptools->addAction(command);
connect(findUnusedFunctionsAction, &QAction::triggered, this, [] {
CppModelManager::findUnusedFunctions({});
});
QAction *const findUnusedFunctionsInSubProjectAction
= new QAction(tr("Find Unused C/C++ Functions"), this);
command = ActionManager::registerAction(findUnusedFunctionsInSubProjectAction,
"CppTools.FindUnusedFunctionsInSubProject");
for (ActionContainer *const projectContextMenu :
{ActionManager::actionContainer(ProjectExplorer::Constants::M_SUBPROJECTCONTEXT),
ActionManager::actionContainer(ProjectExplorer::Constants::M_PROJECTCONTEXT)}) {
projectContextMenu->addSeparator(ProjectExplorer::Constants::G_PROJECT_TREE);
projectContextMenu->addAction(command, ProjectExplorer::Constants::G_PROJECT_TREE);
}
connect(findUnusedFunctionsInSubProjectAction, &QAction::triggered, this, [] {
if (const Node *const node = ProjectTree::currentNode(); node && node->asFolderNode())
CppModelManager::findUnusedFunctions(node->directory());
});
d->m_openTypeHierarchyAction = new QAction(tr("Open Type Hierarchy"), this); d->m_openTypeHierarchyAction = new QAction(tr("Open Type Hierarchy"), this);
cmd = ActionManager::registerAction(d->m_openTypeHierarchyAction, Constants::OPEN_TYPE_HIERARCHY, context); cmd = ActionManager::registerAction(d->m_openTypeHierarchyAction, Constants::OPEN_TYPE_HIERARCHY, context);
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+T") : tr("Ctrl+Shift+T"))); cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+T") : tr("Ctrl+Shift+T")));

View File

@@ -2871,6 +2871,56 @@ static void formatCdbBreakPointResponse(int modelId, const QString &responseId,
str << '\n'; str << '\n';
} }
// Helper to retrieve an int child from GDBMI
static inline std::optional<int> gdbmiChildToInt(const GdbMi &parent, const char *childName)
{
const GdbMi childBA = parent[childName];
if (childBA.isValid()) {
bool ok;
const int v = childBA.data().toInt(&ok);
if (ok)
return v;
}
return std::nullopt;
}
// Helper to retrieve an bool child from GDBMI
static inline std::optional<bool> gdbmiChildToBool(const GdbMi &parent, const char *childName)
{
const GdbMi childBA = parent[childName];
return childBA.isValid() ? std::make_optional(childBA.data() == "true") : std::nullopt;
}
// Parse extension command listing breakpoints.
// Note that not all fields are returned, since file, line, function are encoded
// in the expression (that is in addition deleted on resolving for a bp-type breakpoint).
BreakpointParameters CdbEngine::parseBreakPoint(const GdbMi &gdbmi)
{
BreakpointParameters result;
result.enabled = gdbmiChildToBool(gdbmi, "enabled").value_or(result.enabled);
result.pending = gdbmiChildToBool(gdbmi, "deferred").value_or(result.pending);
const GdbMi moduleG = gdbmi["module"];
if (moduleG.isValid())
result.module = moduleG.data();
const GdbMi sourceFileName = gdbmi["srcfile"];
if (sourceFileName.isValid()) {
NormalizedSourceFileName mappedFile = sourceMapNormalizeFileNameFromDebugger(
sourceFileName.data());
result.fileName = Utils::FilePath::fromUserInput(mappedFile.fileName);
const GdbMi lineNumber = gdbmi["srcline"];
if (lineNumber.isValid())
result.lineNumber = lineNumber.data().toULongLong(nullptr, 0);
}
const GdbMi addressG = gdbmi["address"];
if (addressG.isValid())
result.address = addressG.data().toULongLong(nullptr, 0);
if (const std::optional<int> ignoreCount = gdbmiChildToInt(gdbmi, "passcount"))
result.ignoreCount = *ignoreCount - 1;
result.threadSpec = gdbmiChildToInt(gdbmi, "thread").value_or(result.threadSpec);
return result;
}
void CdbEngine::handleBreakPoints(const DebuggerResponse &response) void CdbEngine::handleBreakPoints(const DebuggerResponse &response)
{ {
if (debugBreakpoints) { if (debugBreakpoints) {
@@ -2896,8 +2946,7 @@ void CdbEngine::handleBreakPoints(const DebuggerResponse &response)
for (const GdbMi &breakPointG : response.data) { for (const GdbMi &breakPointG : response.data) {
// Might not be valid if there is not id // Might not be valid if there is not id
const QString responseId = breakPointG["id"].data(); const QString responseId = breakPointG["id"].data();
BreakpointParameters reportedResponse; BreakpointParameters reportedResponse = parseBreakPoint(breakPointG);
parseBreakPoint(breakPointG, &reportedResponse);
if (debugBreakpoints) if (debugBreakpoints)
qDebug(" Parsed %s: pending=%d %s\n", qPrintable(responseId), qDebug(" Parsed %s: pending=%d %s\n", qPrintable(responseId),
reportedResponse.pending, reportedResponse.pending,

View File

@@ -168,6 +168,7 @@ private:
unsigned parseStackTrace(const GdbMi &data, bool sourceStepInto); unsigned parseStackTrace(const GdbMi &data, bool sourceStepInto);
void mergeStartParametersSourcePathMap(); void mergeStartParametersSourcePathMap();
void checkQtSdkPdbFiles(const QString &module); void checkQtSdkPdbFiles(const QString &module);
BreakpointParameters parseBreakPoint(const GdbMi &gdbmi);
const QString m_tokenPrefix; const QString m_tokenPrefix;
void handleSetupFailure(const QString &errorMessage); void handleSetupFailure(const QString &errorMessage);

View File

@@ -189,64 +189,6 @@ QString cdbClearBreakpointCommand(const Breakpoint &bp)
return "bc " + QString::number(firstBreakPoint) + '-' + QString::number(lastBreakPoint); return "bc " + QString::number(firstBreakPoint) + '-' + QString::number(lastBreakPoint);
} }
// Helper to retrieve an int child from GDBMI
static inline bool gdbmiChildToInt(const GdbMi &parent, const char *childName, int *target)
{
const GdbMi childBA = parent[childName];
if (childBA.isValid()) {
bool ok;
const int v = childBA.data().toInt(&ok);
if (ok) {
*target = v;
return true;
}
}
return false;
}
// Helper to retrieve an bool child from GDBMI
static inline bool gdbmiChildToBool(const GdbMi &parent, const char *childName, bool *target)
{
const GdbMi childBA = parent[childName];
if (childBA.isValid()) {
*target = childBA.data() == "true";
return true;
}
return false;
}
// Parse extension command listing breakpoints.
// Note that not all fields are returned, since file, line, function are encoded
// in the expression (that is in addition deleted on resolving for a bp-type breakpoint).
void parseBreakPoint(const GdbMi &gdbmi, BreakpointParameters *r,
QString *expression /* = 0 */)
{
gdbmiChildToBool(gdbmi, "enabled", &(r->enabled));
gdbmiChildToBool(gdbmi, "deferred", &(r->pending));
const GdbMi moduleG = gdbmi["module"];
if (moduleG.isValid())
r->module = moduleG.data();
const GdbMi sourceFileName = gdbmi["srcfile"];
if (sourceFileName.isValid()) {
r->fileName = Utils::FilePath::fromUserInput(
Utils::FileUtils::normalizedPathName(sourceFileName.data()));
const GdbMi lineNumber = gdbmi["srcline"];
if (lineNumber.isValid())
r->lineNumber = lineNumber.data().toULongLong(nullptr, 0);
}
if (expression) {
const GdbMi expressionG = gdbmi["expression"];
if (expressionG.isValid())
*expression = expressionG.data();
}
const GdbMi addressG = gdbmi["address"];
if (addressG.isValid())
r->address = addressG.data().toULongLong(nullptr, 0);
if (gdbmiChildToInt(gdbmi, "passcount", &(r->ignoreCount)))
r->ignoreCount--;
gdbmiChildToInt(gdbmi, "thread", &(r->threadSpec));
}
QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data) QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data)
{ {
QString cmd; QString cmd;

View File

@@ -38,10 +38,6 @@ QString cdbAddBreakpointCommand(const BreakpointParameters &d,
const QList<QPair<QString, QString> > &sourcePathMapping, const QList<QPair<QString, QString> > &sourcePathMapping,
const QString &responseId = QString()); const QString &responseId = QString());
QString cdbClearBreakpointCommand(const Breakpoint &bp); QString cdbClearBreakpointCommand(const Breakpoint &bp);
// Parse extension command listing breakpoints.
// Note that not all fields are returned, since file, line, function are encoded
// in the expression (that is in addition deleted on resolving for a bp-type breakpoint).
void parseBreakPoint(const GdbMi &gdbmi, BreakpointParameters *r, QString *expression = nullptr);
// Write memory (f ...). // Write memory (f ...).
QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data); QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data);

View File

@@ -249,8 +249,18 @@ void DebuggerKitAspect::fix(Kit *k)
setup(k); setup(k);
return; return;
} }
const Abi tcAbi = ToolChainKitAspect::targetAbi(k);
if (item->matchTarget(tcAbi) != DebuggerItem::DoesNotMatch) Abi kitAbi;
if (ToolChainKitAspect::toolChains(k).isEmpty()) {
if (DeviceTypeKitAspect::deviceTypeId(k)
!= ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
return;
}
kitAbi = Abi(Abi::UnknownArchitecture, Abi::hostAbi().os());
} else {
kitAbi = ToolChainKitAspect::targetAbi(k);
}
if (item->matchTarget(kitAbi) != DebuggerItem::DoesNotMatch)
return; return;
k->setValue(DebuggerKitAspect::id(), QVariant()); k->setValue(DebuggerKitAspect::id(), QVariant());
setup(k); setup(k);

View File

@@ -419,7 +419,7 @@ void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *doc
client->openDocument(document); client->openDocument(document);
else else
client->activateDocument(document); client->activateDocument(document);
} else if (Core::EditorManager::currentEditor()->document() == document) { } else if (Core::EditorManager::currentDocument() == document) {
TextEditor::IOutlineWidgetFactory::updateOutline(); TextEditor::IOutlineWidgetFactory::updateOutline();
} }
} }

View File

@@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1050_evk_freertos_json = R"(
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file", "type": "file",
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
"visible": false, "visible": false,
"optional": false "optional": false
} }

View File

@@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1064_evk_freertos_json = R"(
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file", "type": "file",
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
"visible": false, "visible": false,
"optional": false "optional": false
} }

View File

@@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1170_evk_freertos_json = R"(
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file", "type": "file",
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
"visible": false, "visible": false,
"optional": false "optional": false
} }

View File

@@ -62,7 +62,7 @@ constexpr auto armgcc_stm32f769i_discovery_freertos_json = R"(
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file", "type": "file",
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
"visible": false, "visible": false,
"optional": false "optional": false
} }

View File

@@ -62,7 +62,7 @@ constexpr auto armgcc_stm32h750b_discovery_baremetal_json = R"(
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
"cmakeVar": "CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE",
"type": "file", "type": "file",
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
"visible": false, "visible": false,
"optional": false "optional": false
} }

View File

@@ -14,6 +14,7 @@ namespace PerfProfiler {
class PERFPROFILER_EXPORT PerfRunConfigurationAspect : class PERFPROFILER_EXPORT PerfRunConfigurationAspect :
public ProjectExplorer::GlobalOrProjectAspect public ProjectExplorer::GlobalOrProjectAspect
{ {
Q_OBJECT
public: public:
PerfRunConfigurationAspect(ProjectExplorer::Target *target); PerfRunConfigurationAspect(ProjectExplorer::Target *target);
}; };

View File

@@ -46,8 +46,6 @@ using namespace Utils;
const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount"; const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount";
const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList."; const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList.";
const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment";
const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges";
const char CUSTOM_PARSERS_KEY[] = "ProjectExplorer.BuildConfiguration.CustomParsers"; const char CUSTOM_PARSERS_KEY[] = "ProjectExplorer.BuildConfiguration.CustomParsers";
const char PARSE_STD_OUT_KEY[] = "ProjectExplorer.BuildConfiguration.ParseStandardOutput"; const char PARSE_STD_OUT_KEY[] = "ProjectExplorer.BuildConfiguration.ParseStandardOutput";
@@ -378,8 +376,9 @@ QVariantMap BuildConfiguration::toMap() const
{ {
QVariantMap map = ProjectConfiguration::toMap(); QVariantMap map = ProjectConfiguration::toMap();
map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment); map.insert(QLatin1String(Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment);
map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), EnvironmentItem::toStringList(d->m_userEnvironmentChanges)); map.insert(QLatin1String(Constants::USER_ENVIRONMENT_CHANGES_KEY),
EnvironmentItem::toStringList(d->m_userEnvironmentChanges));
map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), 2); map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), 2);
map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(0), d->m_buildSteps.toMap()); map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(0), d->m_buildSteps.toMap());
@@ -393,8 +392,10 @@ QVariantMap BuildConfiguration::toMap() const
bool BuildConfiguration::fromMap(const QVariantMap &map) bool BuildConfiguration::fromMap(const QVariantMap &map)
{ {
d->m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool(); d->m_clearSystemEnvironment = map.value(QLatin1String(Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY))
d->m_userEnvironmentChanges = EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList()); .toBool();
d->m_userEnvironmentChanges = EnvironmentItem::fromStringList(
map.value(QLatin1String(Constants::USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
updateCacheAndEmitEnvironmentChanged(); updateCacheAndEmitEnvironmentChanged();

View File

@@ -220,6 +220,8 @@ const char SETTINGS_MENU_HIDE_BUILD[] = "Menu/HideBuild";
const char SETTINGS_MENU_HIDE_DEBUG[] = "Menu/HideDebug"; const char SETTINGS_MENU_HIDE_DEBUG[] = "Menu/HideDebug";
const char SETTINGS_MENU_HIDE_ANALYZE[] = "Menu/HideAnalyze"; const char SETTINGS_MENU_HIDE_ANALYZE[] = "Menu/HideAnalyze";
const char SESSION_TASKFILE_KEY[] = "TaskList.File"; const char SESSION_TASKFILE_KEY[] = "TaskList.File";
const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment";
const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges";
// UI texts // UI texts
PROJECTEXPLORER_EXPORT QString msgAutoDetected(); PROJECTEXPLORER_EXPORT QString msgAutoDetected();

View File

@@ -92,7 +92,7 @@ void SquishXmlOutputHandler::mergeResultFiles(const Utils::FilePaths &reportFile
// and finally write test tag (case name) - the prolog tag (for test case) // and finally write test tag (case name) - the prolog tag (for test case)
// will be written outside the if // will be written outside the if
const QXmlStreamAttributes testAttributes = reader.attributes(); const QXmlStreamAttributes testAttributes = reader.attributes();
QXmlStreamReader::TokenType token; QXmlStreamReader::TokenType token = QXmlStreamReader::NoToken;
while (!reader.atEnd()) { while (!reader.atEnd()) {
token = reader.readNext(); token = reader.readNext();
if (token != QXmlStreamReader::Characters) if (token != QXmlStreamReader::Characters)

View File

@@ -5889,7 +5889,7 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
{ {
QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y())); QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y()));
int markWidth; int markWidth = 0;
extraAreaWidth(&markWidth); extraAreaWidth(&markWidth);
const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0; const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0;

View File

@@ -4061,15 +4061,15 @@ void tst_Dumpers::dumper_data()
+ Check("list.0", "[0]", "1", "int") + Check("list.0", "[0]", "1", "int")
+ Check("list.1", "[1]", "2", "int") + Check("list.1", "[1]", "2", "int")
+ Check("list.2", "[2]", "3", "int") + Check("list.2", "[2]", "3", "int")
+ Check("v3", "", "@QVariant (@QList<int>)") % Qt5 + Check("v3", "", "@QVariant (@QList<int>)") % NeedsInferiorCall % Qt5
+ Check("v3.data", "<3 items>", TypePattern(".*QList<int>")) % NeedsInferiorCall % Qt5 + Check("v3.data", "<3 items>", TypePattern(".*QList<int>")) % NeedsInferiorCall % Qt5
+ Check("v3.data.0", "[0]", "1", "int") % NeedsInferiorCall % Qt5 + Check("v3.data.0", "[0]", "1", "int") % NeedsInferiorCall % Qt5
+ Check("v3.data.1", "[1]", "2", "int") % NeedsInferiorCall % Qt5 + Check("v3.data.1", "[1]", "2", "int") % NeedsInferiorCall % Qt5
+ Check("v3.data.2", "[2]", "3", "int") % NeedsInferiorCall % Qt5 + Check("v3.data.2", "[2]", "3", "int") % NeedsInferiorCall % Qt5
+ Check("v3", "<3 items>", "@QVariant (@QList<int>)") % Qt6 + Check("v3", "<3 items>", "@QVariant (@QList<int>)") % Qt6
+ Check("v3.0", "[0]", "1", "int") % NeedsInferiorCall % Qt6 + Check("v3.0", "[0]", "1", "int") % Qt6
+ Check("v3.1", "[1]", "2", "int") % NeedsInferiorCall % Qt6 + Check("v3.1", "[1]", "2", "int") % Qt6
+ Check("v3.2", "[2]", "3", "int") % NeedsInferiorCall % Qt6; + Check("v3.2", "[2]", "3", "int") % Qt6;
QTest::newRow("QVariant2") QTest::newRow("QVariant2")

View File

@@ -115,6 +115,14 @@ void tst_gdb::version_data()
QTest::newRow("Debian 7.12 git") QTest::newRow("Debian 7.12 git")
<< "GNU gdb (Debian 7.12-6) 7.12.0.20161007-git" << "GNU gdb (Debian 7.12-6) 7.12.0.20161007-git"
<< 71200 << 6 << false << false; << 71200 << 6 << false << false;
QTest::newRow("Debian 10.1 git")
<< "GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git"
<< 100100 << 1 << false << false;
QTest::newRow("Ubuntu 22.04")
<< "GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1"
<< 120100 << 0 << false << false;
} }
static QString chopConst(QString type) static QString chopConst(QString type)