diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index e1be45d67c6..d695061f95d 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -7,7 +7,7 @@ on: - 'doc/**' env: - QT_VERSION: 6.4.1 + QT_VERSION: 6.4.0 CLANG_VERSION: 15.0.0 ELFUTILS_VERSION: 0.175 CMAKE_VERSION: 3.21.1 diff --git a/cmake/CreatePythonXY.cmake b/cmake/CreatePythonXY.cmake index 8aeeb156cb2..0475b259f68 100644 --- a/cmake/CreatePythonXY.cmake +++ b/cmake/CreatePythonXY.cmake @@ -64,6 +64,7 @@ function(create_python_xy PythonExe PythonZipFilePath) set(ENV{PYTHONOPTIMIZE} "2") execute_process( COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b + ${QTC_COMMAND_ERROR_IS_FATAL} ) file(GLOB_RECURSE python_lib_files "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*.py") @@ -75,5 +76,6 @@ function(create_python_xy PythonExe PythonZipFilePath) execute_process( COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/" + ${QTC_COMMAND_ERROR_IS_FATAL} ) endfunction() diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 52ba2f44026..68461f8bcd6 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -778,14 +778,14 @@ function(add_qtc_executable name) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -delete_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() foreach(_rpath ${install_rpath}) set(_code "${_code} execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -add_rpath \"${_rpath}\" - \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\")" + \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${_EXECUTABLE_FILE_PATH}\" ${QTC_COMMAND_ERROR_IS_FATAL})" ) endforeach() install(CODE "${_code}") diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 4efb59c988d..ace1f3c8d1c 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -1,3 +1,7 @@ +if (CMAKE_VERSION GREATER_EQUAL 3.19) + set(QTC_COMMAND_ERROR_IS_FATAL COMMAND_ERROR_IS_FATAL ANY) +endif() + if (CMAKE_VERSION VERSION_LESS 3.18) if (CMAKE_CXX_COMPILER_ID STREQUAL GNU) set(BUILD_WITH_PCH OFF CACHE BOOL "" FORCE) diff --git a/cmake/QtCreatorDocumentation.cmake b/cmake/QtCreatorDocumentation.cmake index 49bf3d2d02d..a652d625176 100644 --- a/cmake/QtCreatorDocumentation.cmake +++ b/cmake/QtCreatorDocumentation.cmake @@ -22,7 +22,8 @@ function(qt5_query_qmake) TIMEOUT 10 RESULT_VARIABLE _qmake_result OUTPUT_VARIABLE _qmake_stdout - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_STRIP_TRAILING_WHITESPACE + ${QTC_COMMAND_ERROR_IS_FATAL}) if (NOT "${_qmake_result}" STREQUAL "0") message(FATAL_ERROR "Qmake did not execute successfully: ${_qmake_result}.") diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index e43674e4a35..602781ca391 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -47,6 +47,7 @@ function(setup_dependencies_component) \"\${_ide_app_target}\" \"${_qmake_binary}\" COMMAND_ECHO STDOUT + \${QTC_COMMAND_ERROR_IS_FATAL} ) " COMPONENT Dependencies diff --git a/coin/instructions/common_environment.yaml b/coin/instructions/common_environment.yaml index 7c6bcfe14c0..5843ca790b0 100644 --- a/coin/instructions/common_environment.yaml +++ b/coin/instructions/common_environment.yaml @@ -10,7 +10,7 @@ instructions: variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_15.0.0-based - type: EnvironmentVariable variableName: QTC_QT_BASE_URL - variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.1-released/Qt" + variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.0-released/Qt" - type: EnvironmentVariable variableName: QTC_QT_MODULES variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine" diff --git a/doc/qtcreator/src/editors/creator-code-indentation.qdoc b/doc/qtcreator/src/editors/creator-code-indentation.qdoc index 11cae3c5b3f..f00ecdc4f15 100644 --- a/doc/qtcreator/src/editors/creator-code-indentation.qdoc +++ b/doc/qtcreator/src/editors/creator-code-indentation.qdoc @@ -65,7 +65,9 @@ To visualize whitespace in the editor, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Visualize whitespace}. To visualize indentation, select - \uicontrol {Visualize Indent}. + \uicontrol {Visualize Indent}. To adjust the color of the visualization, + change the value of the Visual Whitespace setting of the editor color scheme + in \uicontrol {Font & Colors}. \image qtcreator-options-text-editor-display.png "Text Editor Display preferences" diff --git a/doc/qtcreator/src/editors/creator-code-syntax.qdoc b/doc/qtcreator/src/editors/creator-code-syntax.qdoc index ae86067e9f8..f4f57e6488e 100644 --- a/doc/qtcreator/src/editors/creator-code-syntax.qdoc +++ b/doc/qtcreator/src/editors/creator-code-syntax.qdoc @@ -682,6 +682,20 @@ \li An import statement has been added twice. For more information, 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 \section1 Resetting the Code Model diff --git a/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc b/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc index d6aafd4469e..a9a94cd3df8 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc @@ -8,8 +8,8 @@ \title Using Squish - \l{https://doc.froglogic.com/squish/latest/}{Squish} is an automated GUI - testing framework for testing Android, iOS, Java, Qt, Tk, Windows, and + \l{https://www.qt.io/product/quality-assurance/squish}{Squish} is an automated GUI + testing framework for testing Android, iOS, Java, \macos, Qt, Tk, Windows, and XView applications, as well as HTML-based web applications running in browsers, such as Apple Safari, Mozilla Firefox, Google Chrome, and Microsoft Internet Explorer and Edge. diff --git a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc index efa148bfe25..2719aa3e4c8 100644 --- a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc +++ b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc @@ -175,19 +175,24 @@ \section1 Supported Qt for MCUs SDKs - Since version 7.0.0, \QC supports version 2.0 and later of the Qt for MCUs SDK. - For older versions, refer to the following table. + \note The Qt for MCUs SDK 2.3 requires \QC 9.0.0, or later. + + The following table lists the \QC versions you can use to develop + applications with particular Qt for MCUs SDK versions. \table \header \li \QC version \li Qt for MCUs SDK version \row - \li 7.0.0 or later + \li 9.0.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 \li 6.0.x - \li 1.3 or later, including 2.0 or later + \li 1.3 up to 2.2 \row \li 4.12.4 up to 5.0.3 \li 1.3 up to 1.9 diff --git a/doc/qtcreator/src/overview/creator-only/creator-supported-platforms.qdoc b/doc/qtcreator/src/overview/creator-only/creator-supported-platforms.qdoc index 6dfdf06c8e3..e7da4b12c7e 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-supported-platforms.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-supported-platforms.qdoc @@ -21,7 +21,7 @@ \li {3,1} Development Platform \header \li \l Linux - \li \l macOS + \li \l \macos \li \l Windows \row \li \l Android @@ -50,7 +50,7 @@ \li \row \li \l{Microcontroller Units (MCU)}{MCUs} - \li + \li \image ok.png \li \li \image ok.png \row diff --git a/doc/qtdesignstudio/examples/doc/webinardemo.qdoc b/doc/qtdesignstudio/examples/doc/webinardemo.qdoc index a5fa528b3da..56aedef21be 100644 --- a/doc/qtdesignstudio/examples/doc/webinardemo.qdoc +++ b/doc/qtdesignstudio/examples/doc/webinardemo.qdoc @@ -90,7 +90,8 @@ \image webinardemo-qb-fastblur.png "Settings for exporting blurEffect layer" - We want to apply the \l {FastBlur} effect to the \e smallPopup UI control. + We want to apply the \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-fastblur.html} + {Fast Blur} effect to the \e smallPopup UI control. In the artboard, we have a \e blurEffect layer that we want to export as a \e FastBlurItem component. In the \uicontrol Component field, we enter \e FastBlurItem. diff --git a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc index e8a4d65d518..9cff12750c0 100644 --- a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc +++ b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc @@ -78,7 +78,7 @@ \li Description \row \li \inlineimage icons/blend-mode-16px.png - \li \l [QML] {Blend} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-blend.html}{Blend} \li \li Merges two source components by using a blend mode. @@ -88,28 +88,34 @@ is subtracted from the source and written over it. For a list of possible \uicontrol Mode values and examples of their - use, see \l{Blend::mode}{Blend.mode}. + use, see + \l{https://doc.qt.io/qt-5/qml-qtgraphicaleffects-blend.html#mode-prop} + {Blend.mode}. \row \li \inlineimage icons/brightness-contrast-16px.png - \li \l {BrightnessContrast}{Brightness Contrast} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-brightnesscontrast.html} + {Brightness Contrast} \li \inlineimage ok.png \li Adjusts \uicontrol Brightness and \uicontrol Contrast. \row \li \inlineimage icons/colourize-16px.png - \li \l {ColorOverlay}{Color Overlay} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-coloroverlay.html} + {Color Overlay} \li \inlineimage ok.png \li Alters the colors of the source component by applying an \uicontrol {Overlay color}. You can use the color picker to \l{Picking Colors}{select the color}. \row \li \inlineimage icons/colourize-16px.png - \li \l Colorize + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-colorize.html} + {Colorize} \li \inlineimage ok.png \li Sets the color in the HSL color space by specifying \uicontrol Hue, \uicontrol Lightness, and \uicontrol Saturation values. \row \li \inlineimage icons/desaturation-16px.png - \li \l {Desaturate}{Desaturation} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-desaturate.html} + {Desaturation} \li \inlineimage ok.png \li Reduces the saturation of the colors by the value set in the \uicontrol Desaturation field. The value ranges from \c 0.0 @@ -118,7 +124,8 @@ of the source component. \row \li \inlineimage icons/directional-blur-16px.png - \li \l {DirectionalBlur}{Directional Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-directionalblur.html} + {Directional Blur} \li \inlineimage ok.png \li Applies a blur effect to the specified direction. The value of the \uicontrol Angle field defines the direction of the blur. This @@ -135,7 +142,8 @@ more samples are needed to preserve high visual quality. \row \li \inlineimage icons/displace-16px.png - \li \l Displace + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-displace.html} + {Displace} \li \inlineimage ok.png \li Moves the pixels of the source component according to the displacement map specified in the \uicontrol {Displacement source} field. @@ -148,7 +156,8 @@ maximum shift. \row \li \inlineimage icons/drop-shadow-16px.png - \li \l {DropShadow}{Drop Shadow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-dropshadow.html} + {Drop Shadow} \li \inlineimage ok.png \li Generates a soft shadow behind the source component using a gaussian blur. This effect blurs the alpha channel of the input and @@ -170,7 +179,8 @@ FPS on high-end graphics hardware. \row \li \inlineimage icons/fast-blur-16px.png - \li \l {FastBlur}{Fast Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-fastblur.html} + {Fast Blur} \li \inlineimage ok.png \li Applies a fast blur effect to one or more source components. \uicontrol {Fast Blur} offers lower blur quality than @@ -188,7 +198,8 @@ to provide good rendering performance. \row \li \inlineimage icons/gamma-adjust-16px.png - \li \l [QML] {GammaAdjust}{Gamma Adjust} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-gammaadjust.html} + {Gamma Adjust} \li \inlineimage ok.png \li Alters the luminance of the source component. This effect is applied to each pixel according to the curve that is pre-defined as a @@ -196,7 +207,8 @@ field is used as the reciprocal scaling exponent. \row \li \inlineimage icons/gaussian-blur-16px.png - \li \l [QML] {GaussianBlur}{Gaussian Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-gaussianblur.html} + {Gaussian Blur} \li \li Applies a gaussian blur effect to one or more source components. The effect softens the image by blurring it with an algorithm that @@ -218,7 +230,7 @@ the radius. \row \li \inlineimage icons/glow-16px.png - \li \l [QML] {Glow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-glow.html}{Glow} \li \inlineimage ok.png \li Generates a halo-like glow around the source component. This effect blurs the alpha channel of the source and colorizes it with @@ -229,7 +241,8 @@ glow can be changed using the value of the \uicontrol Spread field. \row \li \inlineimage icons/hue-saturation-16px.png - \li \l {HueSaturation}{Hue Saturation} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-huesaturation.html} + {Hue Saturation} \li \inlineimage ok.png \li Alters the source component colors in the HSL color space. This effect is similar to the \uicontrol Colorize effect, but @@ -239,7 +252,8 @@ setting them. \row \li \inlineimage icons/inner-shadow-16px.png - \li \l {InnerShadow}{Inner Shadow} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-innershadow.html} + {Inner Shadow} \li \li Generates a colorized and blurred shadow inside the source using the color that you specify in the \uicontrol {Inner shadow color} @@ -261,7 +275,8 @@ check box. \row \li \inlineimage icons/levels-16px.png - \li \l {LevelAdjust}{Level Adjust} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-leveladjust.html} + {Level Adjust} \li \inlineimage ok.png \li Adjusts color levels in the RGBA color space. This effect adjusts the source component colors separately for each color channel. Source @@ -291,7 +306,8 @@ value of the \uicontrol Minimum output field. \row \li \inlineimage icons/mask-blur-16px.png - \li \l {MaskedBlur}{Masked Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-maskedblur.html} + {Masked Blur} \li \li Softens the image by blurring it. The intensity of the blur can be controlled for each pixel by specifying a \uicontrol {Mask source}, @@ -306,7 +322,8 @@ samples produce better quality, but are slower to render. \row \li \inlineimage icons/opacity-mask-16px.png - \li \l {OpacityMask}{Opacity Mask} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-opacitymask.html} + {Opacity Mask} \li \inlineimage ok.png \li Masks the source component with another component specified in the \uicontrol {Mask source} field. The mask component gets rendered into an @@ -321,7 +338,8 @@ with the mask alpha: \c {As * Am}. \row \li \inlineimage icons/radial-blur-16px.png - \li \l {RadialBlur}{Radial Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-radialblur.html} + {Radial Blur} \li \li Applies a directional blur effect in a circular direction around the component's center point. This effect makes the source component appear @@ -336,7 +354,8 @@ samples are needed to preserve high visual quality. \row \li \inlineimage icons/recursive-blur-16px.png - \li \l {RecursiveBlur}{Recursive Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-recursiveblur.html} + {Recursive Blur} \li \li Blurs repeatedly, providing a strong blur effect. This effect softens the image by blurring it with an algorithm that uses a @@ -352,7 +371,8 @@ but the result is produced asynchronously and takes more time. \row \li \inlineimage icons/threshold-16px.png - \li \l {ThresholdMask}{Threshold Mask} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-thresholdmask.html} + {Threshold Mask} \li \inlineimage ok.png \li Masks the source component with another component specified by \uicontrol {Mask source}. The value of the \uicontrol Spread @@ -363,7 +383,8 @@ opaque mask pixels by adding interpolated values between them. \row \li \inlineimage icons/zoom-blur-16px.png - \li \l {ZoomBlur}{Zoom Blur} + \li \l {https://doc.qt.io/qt-5/qml-qtgraphicaleffects-zoomblur.html} + {Zoom Blur} \li \li Applies a directional blur effect towards source component's center point. This effect makes the source component appear to be diff --git a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc index 0f7547c1195..8f8a1da66b8 100644 --- a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc +++ b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc @@ -392,7 +392,8 @@ Typically, this component should be a shader effect with a source texture specified. You can use the effects in \uicontrol Components > \uicontrol {Qt Quick Studio Effects} that are based on the components in the - \l {Qt Graphical Effects} module. + \l {https://doc.qt.io/qt-5/qtgraphicaleffects-index.html} + {Qt Graphical Effects} module. To enable the component to pass the layer's offscreen surface to the effect correctly, the \uicontrol {Sampler name} field is set to the source diff --git a/share/qtcreator/debugger/mac_stdtypes.py b/share/qtcreator/debugger/mac_stdtypes.py index 9484e3d14bf..3f6fcbdb93c 100644 --- a/share/qtcreator/debugger/mac_stdtypes.py +++ b/share/qtcreator/debugger/mac_stdtypes.py @@ -165,8 +165,15 @@ def qdump__std____1__stack(d, value): def std_1_string_dumper(d, value): charType = value['__l']['__data_'].dereference().type + D = None - D = value[0][0][0][0] + try: # LLDB + 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] if not layoutDecider: @@ -218,13 +225,14 @@ def std_1_string_dumper(d, value): if short_mode and location_sp: d.putCharArrayHelper(d.extractPointer(location_sp), size, - charType, d.currentItemFormat()) + charType, d.currentItemFormat()) else: d.putCharArrayHelper(location_sp.integer(), - size, charType, d.currentItemFormat()) + size, charType, d.currentItemFormat()) return + def qdump__std____1__string(d, value): std_1_string_dumper(d, value) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 8c4a5e934e5..790c66800c7 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -124,19 +124,19 @@ CMakeProjectManager Initial Configuration - + Initiale Konfiguration Current Configuration - + Aktuelle Konfiguration Kit Configuration - + Kit-Konfiguration Edit the current kit's CMake configuration. - + Die CMake-Konfiguration des aktuellen Kits bearbeiten. Filter @@ -176,11 +176,11 @@ &Set - + &Setzen Set a value in the CMake configuration. - + Einen Wert in der CMake-Konfiguration setzen. &Unset @@ -200,11 +200,11 @@ Batch Edit... - + Als Text bearbeiten... Set or reset multiple values in the CMake configuration. - + Mehrere Variablen in der CMake-Konfiguration setzen oder zurücksetzen. Advanced @@ -212,63 +212,63 @@ Clear system environment - Systemumgebung löschen + Systemumgebung löschen Help - Hilfe + Hilfe Apply Kit Value - + Wert des Kits anwenden Apply Initial Configuration Value - + Wert der initialen Konfiguration anwenden Copy - Kopieren + Kopieren Change the build directory to "%1" and start with a basic CMake configuration? - + Wollen Sie das Build-Verzeichnis auf "%1" ändern und mit einer grundlegenden CMake-Konfiguration beginnen? The CMake flag for the development team - + Das CMake-Flag für das Entwicklerteam The CMake flag for the provisioning profile - + Das CMake-Flag für das Provisioning-Profil The CMake flag for the architecture on macOS - + Das CMake-Flag für die macOS-Architektur The CMake flag for QML debugging, if enabled - + Das CMake-Flag für QML-Debuggen, falls aktiviert Profile - Profile + Profile Clean Environment - Saubere Umgebung + Saubere Umgebung System Environment - Systemumgebung + Systemumgebung Additional CMake <a href="options">options</a>: - + Weitere CMake-<a href="options">Optionen</a>: Build type: - + Build-Typ: <UNSET> @@ -276,31 +276,31 @@ Enter one CMake <a href="variable">variable</a> per line.<br/>To set or change a variable, use -D&lt;variable&gt;:&lt;type&gt;=&lt;value&gt;.<br/>&lt;type&gt; can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.<br/>To unset a variable, use -U&lt;variable&gt;.<br/> - + Geben Sie eine CMake-<a href="variable">Variable</a> pro Zeile ein.<br/>Um eine Variable zu setzen oder zu ändern, benutzen Sie -D&lt;Variable&gt;:&lt;Typ&gt;=&lt;Wert&gt;.<br/>&lt;Typ&gt; kann einer der folgenden Werte sein: FILEPATH, PATH, BOOL, INTERNAL oder STRING.<br/>Um eine Variable zurückzusetzen, benutzen Sie -U&lt;Variable&gt;.<br/> Re-configure with Initial Parameters - + Mit initialen Parametern neu konfigurieren Clear CMake configuration and configure with initial parameters? - + Die CMake-Konfiguration löschen und mit initialen Parametern konfigurieren? Do not ask again - Nicht noch einmal nachfragen + Nicht noch einmal nachfragen Kit CMake Configuration - + CMake-Konfiguration des Kits Configure - Konfigurieren + Konfigurieren Stop CMake - + CMake abbrechen bool @@ -336,7 +336,7 @@ Clear CMake Configuration - CMake-Konfiguration bereinigen + CMake-Konfiguration löschen Rescan Project @@ -372,15 +372,15 @@ CMakeUserPresets.json cannot re-define the %1 preset: %2 - + CMakeUserPresets.json kann das Preset %1 nicht erneut definieren: %2 Build preset %1 is missing a corresponding configure preset. - + Im Build-Preset %1 fehlt ein entsprechendes Configure-Preset. Failed to load %1: %2 - + %1 konnte nicht geladen werden: %2 yes @@ -416,35 +416,35 @@ Version: %1 - Version: %1 + Version: %1 Supports fileApi: %1 - + Unterstützt fileApi: %1 Detection source: "%1" - + Quelle: "%1" CMake executable path does not exist. - + Pfad für das CMake-Werkzeug existiert nicht. CMake executable path is not a file. - + Pfad für das CMake-Werkzeug ist keine Datei. CMake executable path is not executable. - + Pfad für das CMake-Werkzeug ist nicht ausführbar. CMake executable does not provide required IDE integration features. - + Ausführbare CMake-Datei unterstützt die benötigten Funktionen für die IDE-Integration nicht. Path - Pfad + Pfad Name: @@ -456,7 +456,7 @@ Version: - Version: + Version: Help file: @@ -496,27 +496,27 @@ Current executable - + Aktuelle ausführbare Datei Build the executable used in the active run configuration. Currently: %1 - + Die ausführbare Datei der aktiven Ausführungskonfiguration erstellen. Aktuell: %1 Target: %1 - + Ziel: %1 Enable automatic provisioning updates: - + Automatische Provisionierungsaktualisierungen aktivieren: Tells xcodebuild to create and download a provisioning profile if a valid one does not exist. - + Veranlasst xcodebuild, ein Provisionierungsprofil zu erstellen und herunterzuladen, wenn kein gültiges vorhanden ist. Target - Ziel + Ziel The build configuration is currently disabled. @@ -524,7 +524,7 @@ A CMake tool must be set up for building. Configure a CMake tool in the kit options. - Zum Erstellen muss ein CMake Tool eingestellt sein. Die Konfiguration erfolgt in den Kit Einstellungen. + Zum Erstellen muss ein CMake-Werkzeug eingestellt sein. Die Konfiguration erfolgt in den Kit Einstellungen. There is a CMakeCache.txt file in "%1", which suggest an in-source build was done before. You are now building in "%2", and the CMakeCache.txt file might confuse CMake. @@ -545,7 +545,7 @@ CMake Build Display name for CMakeProjectManager::CMakeBuildStep id. - Erstellen mit CMake + Erstellen mit CMake CMake arguments: @@ -558,7 +558,7 @@ Build ConfigWidget display name. - + Erstellen Targets: @@ -570,19 +570,19 @@ Kit: - Kit: + Kit: Initial Configuration: - + Initiale Konfiguration: Current Configuration: - + Aktuelle Konfiguration: Type: - Typ: + Typ: Value @@ -631,23 +631,23 @@ Package manager auto setup - + Automatisches Aufsetzen von Paketmanagern 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. - + 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. Ask before re-configuring with initial parameters - + Vor dem Neukonfigurieren mit initialen Parametern nachfragen Show subfolders inside source group folders - + Unterverzeichnisse in Sourcegruppen anzeigen General - Allgemein + Allgemein Adding Files @@ -675,12 +675,12 @@ Copy to Clipboard? - In die Zwischenablage kopieren? + In die Zwischenablage kopieren? Files are not automatically added to the CMakeLists.txt file of the CMake project. Copy the path to the source files to the clipboard? - Dateien werden nicht automatisch zur Datei CMakeLists.txt des CMake-Projekts hinzugefügt. + 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? @@ -689,15 +689,15 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? Run CMake with configuration changes? - + CMake mit Änderungen der Konfiguration ausführen? <b>CMake configuration failed<b><p>The backup of the previous configuration has been restored.</p><p>Issues and "Projects > Build" settings show more information about the failure.</p - + <b>CMake-Konfiguration ist fehlgeschlagen<b/><p>Das Backup der vorherigen Konfiguration wurde wiederhergestellt.</p><p>Details zu dem Problem finden Sie in "Probleme" und den Einstellungen in "Projekte > Erstellen".</p> <b>Failed to load project<b><p>Issues and "Projects > Build" settings show more information about the failure.</p - + <b>Laden des Projekts fehlgeschlagen</b><p>Details zu dem Problem finden Sie in "Probleme" und den Einstellungen in "Projekte > Erstellen".</p> Failed to create build directory "%1". @@ -705,11 +705,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? No CMake tool set up in kit. - + Im Kit ist kein CMake-Werkzeug eingerichtet. The remote CMake executable cannot write to the local build directory. - + Das entfernte CMake-Werkzeug kann nicht in das lokale Build-Verzeichnis schreiben. <No CMake Tool available> @@ -729,11 +729,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? Path to the cmake executable - Pfad zur ausführbaren Datei von cmake + Pfad zum CMake-Werkzeug CMake version %1 is unsupported. Update to version 3.14 (with file-api) or later. - + Die CMake-Version %1 wird nicht unterstützt. Aktualisieren Sie auf Version 3.14 (mit file-api) oder neuer. Change... @@ -749,11 +749,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? Platform - Plattform + Plattform Toolset - + Toolset Generator: @@ -777,11 +777,11 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? CMake Tool is unconfigured, CMake generator will be ignored. - Das CMake-Tool ist nicht konfiguriert. Der CMake-Generator wird ignoriert. + Das CMake-Werkzeug ist nicht konfiguriert. Der CMake-Generator wird ignoriert. CMake Tool does not support the configured generator. - Das CMake-Tool unterstützt den konfigurierten Generator nicht. + Das CMake-Werkzeug unterstützt den konfigurierten Generator nicht. Platform is not supported by the selected CMake generator. @@ -813,15 +813,15 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? CMake <a href="generator">generator</a> - + CMake-<a href="generator">Generator</a> The selected CMake binary does not support file-api. %1 will not be able to parse CMake projects. - + Das gewählte CMake-Werkzeug unterstützt file-api nicht. %1 wird nicht in der Lage sein, CMake-Projekte auszuwerten. Enter one CMake <a href="variable">variable</a> per line.<br/>To set a variable, use -D&lt;variable&gt;:&lt;type&gt;=&lt;value&gt;.<br/>&lt;type&gt; can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING. - + Geben Sie eine CMake-<a href="variable">Variable</a> pro Zeile ein.<br/>Um eine Variable zu setzen, benutzen Sie -D&lt;Variable&gt;:&lt;Typ&gt;=&lt;Wert&gt;.<br/>&lt;Typ&gt; kann einer der folgenden Werte sein: FILEPATH, PATH, BOOL, INTERNAL oder STRING. CMake Configuration @@ -877,7 +877,7 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? Builds a target of any open CMake project. - + Erstellt ein Ziel eines geöffneten CMake-Projekts. Open CMake target @@ -885,23 +885,23 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? Jumps to the definition of a target of any open CMake project. - + Springt zur Definition eines Ziels eines geöffneten CMake-Projekts. The source directory %1 is not reachable by the CMake executable %2. - + Das Quellverzeichnis %1 kann vom CMake-Werkzeug %2 nicht erreicht werden. The build directory %1 is not reachable by the CMake executable %2. - + Das Build-Verzeichnis %1 kann vom CMake-Werkzeug %2 nicht erreicht werden. The build directory "%1" does not exist - + Das Build-Verzeichnis "%1" existiert nicht CMake executable "%1" and build directory "%2" must be on the same device. - + Das CMake-Werkzeug "%1" und das Build-Verzeichnis "%2" müssen auf demselben Gerät liegen. Running %1 in %2. @@ -913,19 +913,19 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? CMake process failed to start. - + Der CMake-Prozess konnte nicht gestartet werden. CMake process was canceled by the user. - + Der CMake-Prozess wurde vom Benutzer abgebrochen. CMake process crashed. - + Der CMake-Prozess ist abgestürzt. CMake process exited with exit code %1. - + Der CMake-Prozess wurde mit dem Rückgabewert %1 beendet. <Build Directory> @@ -937,165 +937,167 @@ Möchten Sie den Pfad zu den Quelldateien in die Zwischenablage kopieren? Unexpected source directory "%1", expected "%2". 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? - + Unerwartetes Quellverzeichnis "%1", erwartet wurde "%2". 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? CMake Modules - CMake-Module + CMake-Module Target type: - Zieltyp: + Zieltyp: No build artifacts - Keine Build-Artefakte + Keine Build-Artefakte Build artifacts: - Build-Artefakte: + Build-Artefakte: Version not parseable - + Version kann nicht ausgewertet werden Searching CMake binaries... - + Suche CMake-Werkzeuge... Found "%1" - + "%1" gefunden Removing CMake entries... - + Entferne CMake-Einträge... Removed "%1" - + "%1" entfernt CMake: - + CMake: Failed to set up CMake file API support. %1 cannot extract project information. - + CMake file-api-Unterstützung konnte nicht aufgesetzt werden. %1 kann keine Projektinformationen auswerten. Invalid reply file created by CMake. - + CMake hat eine ungültige Antwortdatei erstellt. Invalid cache file generated by CMake. - + CMake hat eine ungültige Cache-Datei erstellt. Invalid cmakeFiles file generated by CMake. - + CMake hat ungültige "cmakeFiles" erstellt. Invalid codemodel file generated by CMake: No directories. - + CMake hat eine ungültige Codemodell-Datei erstellt: Keine Verzeichnisse. Invalid codemodel file generated by CMake: Empty directory object. - + CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Verzeichnisobjekt. Invalid codemodel file generated by CMake: No projects. - + CMake hat eine ungültige Codemodell-Datei erstellt: Keine Projekte. Invalid codemodel file generated by CMake: Empty project object. - + CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Projektobjekt. Invalid codemodel file generated by CMake: Broken project data. - + CMake hat eine ungültige Codemodell-Datei erstellt: Fehlerhafte Projektdaten. Invalid codemodel file generated by CMake: Empty target object. - + CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Zielobjekt. Invalid codemodel file generated by CMake: Broken target data. - + CMake hat eine ungültige Codemodell-Datei erstellt: Fehlerhafte Zieldaten. Invalid codemodel file generated by CMake: No configurations. - + CMake hat eine ungültige Codemodell-Datei erstellt: Keine Konfigurationen. Invalid codemodel file generated by CMake: Empty configuration object. - + CMake hat eine ungültige Codemodell-Datei erstellt: Leeres Konfigurationsobjekt. Invalid codemodel file generated by CMake: Broken indexes in directories, projects, or targets. - + CMake hat eine ungültige Codemodell-Datei erstellt: Fehlerhafte Indizes in Verzeichnissen, Projekten oder Zielen. Invalid codemodel file generated by CMake. - + CMake hat eine ungültige Codemodell-Datei erstellt. Invalid target file: Information is missing. - + Ungültige Zieldatei: Information fehlt. Invalid target file generated by CMake: Broken indexes in target details. - + CMake hat eine ungültige Zieldatei erstellt: Fehlerhafte Indizes in den Zieldetails. CMake parsing was canceled. - + CMake-Auswertung wurde abgebrochen. No "%1" CMake configuration found. Available configurations: "%2". Make sure that CMAKE_CONFIGURATION_TYPES variable contains the "Build type" field. - + CMake-Konfiguration "%1 wurde nicht gefunden. Verfügbare Konfigurationen: "%2". +Stellen Sie sicher, dass der Wert des "Build-Typ"-Felds in der CMAKE_CONFIGURATION_TYPES-Variable enthalten ist. No "%1" CMake configuration found. Available configuration: "%2". Make sure that CMAKE_BUILD_TYPE variable matches the "Build type" field. - + CMake-Konfiguration "%1 wurde nicht gefunden. Verfügbare Konfigurationen: "%2". +Stellen Sie sicher, dass der Wert der CMAKE_BUILD_TYPE-Variable derselbe wie der des "Build-Typ"-Felds ist. CMake returned error code: %1 - + CMake hat einen Fehlerwert zurückgegeben: %1 Failed to rename %1 to %2. - + Umbenennen von %1 nach %2 ist fehlgeschlagen. Failed to copy %1 to %2. - + Kopieren von %1 nach %2 ist fehlgeschlagen. Failed to read %1 file - + Die Datei %1 konnte nicht gelesen werden Invalid %1 file - + Ungültige Datei %1 Invalid "version" in %1 file - + Ungültige "version" in Datei %1 Invalid "configurePresets" section in %1 file - + Ungültiger Abschnitt "configurePresets" in Datei %1 Invalid "buildPresets" section in %1 file - + Ungültiger Abschnitt "buildPresets" in Datei %1 <File System> - + <Dateisystem> @@ -42519,22 +42521,22 @@ Are you sure? [Source: %1] - + [Quelle: %1] ClangCodeModel Component - Komponente + Komponente Total Memory - + Gesamtspeicher Update - Aktualisieren + Aktualisieren @@ -42590,7 +42592,7 @@ Ausgabe: Documentation: - + Dokumentation: @@ -42616,11 +42618,11 @@ Ausgabe: Filter for This Diagnostic Kind - Nach dieser Art von Einträgen filtern + Nach dieser Art von Meldungen filtern Filter out This Diagnostic Kind - Diese Art von Einträgen herausfiltern + Diese Art von Meldungen herausfiltern Web Page @@ -42628,19 +42630,19 @@ Ausgabe: Suppress Selected Diagnostics - + Ausgewählte Meldungen unterdrücken Suppress This Diagnostic - Diese Art von Einträgen nicht anzeigen + Diese Art von Meldungen nicht anzeigen Disable These Checks - + Diese Checks deaktivieren Disable This Check - + Diesen Check deaktivieren @@ -43132,7 +43134,7 @@ Was soll %1 tun? ClangFormat::ClangFormatConfigWidget Clang-Format Style - + Clang-Format-Stil @@ -43150,7 +43152,7 @@ Was soll %1 tun? The ClangFormat plugin has been built against an unmodified Clang. You might experience formatting glitches in certain circumstances. See https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/README.md for more information. - + Das ClangFormat-Plugin wurde gegen ein unmodifiziertes Clang gebaut. Unter Umständen werden Sie Mängel beim Formatieren feststellen. Unter https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/README.md können Sie mehr erfahren. @@ -44729,11 +44731,11 @@ You might find further explanations in the Application Output view. Filters - Filter + Filter Reset Topic Filter - + Themenfilter zurücksetzen Checks @@ -44746,7 +44748,8 @@ You might find further explanations in the Application Output view. Could not query the supported checks from the clazy-standalone executable. Set a valid executable first. - + Konnte die von clazy-standalone unterstützten Überprüfungen nicht abfragen. +Setzen Sie erst eine gültige ausführbare Datei. Enable lower levels automatically @@ -44761,19 +44764,19 @@ Set a valid executable first. Select All - + Alle auswählen Select All with Fixits - + Alle mit Korrekturen auswählen Clear Selection - + Auswahl löschen Select the diagnostics to display. - + Wählen Sie die anzuzeigenden Meldungen. @@ -44784,11 +44787,11 @@ Set a valid executable first. Analyze open files - + Offene Dateien analysieren Run Options - + Ausführungseinstellungen Parallel jobs: @@ -44812,7 +44815,8 @@ Set a valid executable first. Could not query the supported checks from the clang-tidy executable. Set a valid executable first. - + Konnte die von clang-tidy unterstützten Überprüfungen nicht abfragen. +Setzen Sie erst eine gültige ausführbare Datei. @@ -45701,11 +45705,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. ClangTools::Internal::ClangTool Analyze Project... - + Projekt analysieren... Analyze Current File - + Aktuelle Datei analysieren Go to previous diagnostic. @@ -45717,7 +45721,7 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Load diagnostics from YAML files exported with "-export-fixes". - + Meldungen, die mit "-export-fixes" exportiert wurden, aus YAML-Datei laden. Clear @@ -45725,11 +45729,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Expand All - + Alle aufklappen Collapse All - + Alle einklappen Filter Diagnostics @@ -45773,119 +45777,119 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Cannot analyze current file: No files open. - + Kann aktuelle Datei nicht analysieren: Keine Dateien geöffnet. Cannot analyze current file: "%1" is not a known source file. - + Kann aktuelle Datei nicht analysieren: "%1" ist keine bekannte Quelldatei. Select YAML Files with Diagnostics - + Wählen Sie YAML-Datei mit Meldungen YAML Files (*.yml *.yaml);;All Files (*) - + YAML-Dateien (*.yml *.yaml);;Alle Dateien (*) Error Loading Diagnostics - + Fehler beim Laden der Meldungen Set a valid Clang-Tidy executable. - + Wählen Sie eine gültige ausführbare Datei für Clang-Tidy. Set a valid Clazy-Standalone executable. - + Wählen Sie eine gültige ausführbare Datei für Clazy-Standalone. Project "%1" is not a C/C++ project. - + Das Projekt "%1" ist kein C/C++-Projekt. Open a C/C++ project to start analyzing. - + Öffnen Sie ein C/C++-Projekt, um mit der Analyse zu beginnen. Failed to build the project. - + Das Projekt konnte nicht erstellt werden. Failed to start the analyzer. - + Das Analyse-Werkzeug konnte nicht gestartet werden. All Files - + Alle Dateien Opened Files - + Geöffnete Dateien Edited Files - + Bearbeitete Dateien Failed to analyze %n file(s). - - - + + Eine Datei konnte nicht analysiert werden. + %n Dateien konnten nicht analysiert werden. Analyzing... - + Analysiere... Analyzing... %1 of %n file(s) processed. - - - + + Analysiere... %1 von einer Datei verarbeitet. + Analysiere... %1 von %n Dateien verarbeitet. Analysis stopped by user. - + Analyse durch den Benutzer gestoppt. Finished processing %n file(s). - - - + + Verarbeitung einer Datei abgeschlossen. + Verarbeitung von %n Dateien abgeschlossen. Diagnostics imported. - + Meldungen importiert. %1 diagnostics. %2 fixits, %3 selected. - + %1 Meldung(en). %2 Korrektur(en), %3 ausgewählt. No diagnostics. - + Keine Meldungen. In general, the project should be built before starting the analysis to ensure that the code to analyze is valid.<br/><br/>Building the project might also run code generators that update the source files as necessary. - + Im Allgemeinen sollte das Projekt vor der Analyse gebaut werden, um sicherzustellen, dass der zu analysierende Code gültig ist.<br/><br/>Beim Erstellen des Projekts werden möglicherweise auch Code-Generatoren ausgeführt, die Quelldateien nach Bedarf aktualisieren. Info About Build the Project Before Analysis - + Information über das Erstellen des Projekts vor der Analyse ClangTools::Internal::ClangToolRunWorker Failed to build the project. - + Das Projekt konnte nicht erstellt werden. No code model data available for project. - + Für das Projekt sind keine Codemodell-Daten vorhanden. The project configuration changed since the start of the %1. Please re-run with current configuration. @@ -45893,11 +45897,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Failed to create temporary directory: %1. - + Das temporäre Verzeichnis konnte nicht erstellt werden: %1. Running %1 on %2 with configuration "%3". - + Führe %1 auf %2 mit der Konfiguration "%3" aus. Analyzing @@ -45905,11 +45909,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Analyzing "%1" [%2]. - + Analysiere "%1" [%2]. Failed to start runner "%1". - + Das Werkzeug "%1" konnte nicht gestartet werden. Failed to analyze "%1": %2 @@ -45917,14 +45921,14 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Error: Failed to analyze %n files. - - - + + Fehler: Eine Datei konnte nicht analysiert werden. + Fehler: %n Dateien konnten nicht analysiert werden. Note: You might need to build the project to generate or update source files. To build automatically, enable "Build the project before analysis". - + Hinweis: Möglicherweise müssen Sie das Projekt erstellen, um Quelldateien zu generieren oder aktualisieren. Aktivieren Sie "Projekt vor der Analyse erstellen", um das Projekt automatisch zu erstellen. %1 finished: Processed %2 files successfully, %3 failed. @@ -45973,11 +45977,11 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Clang-Tidy Checks - + Clang-Tidy Checks Clazy Checks - + Clazy Checks Edit Checks as String... @@ -52413,43 +52417,43 @@ in "%2" aus. ClangCodeModel::Internal::ClangdClient clangd - + clangd Indexing %1 with clangd - + Indiziere %1 mit clangd Indexing session with clangd - + Indiziere Sitzung mit clangd Memory Usage - Speicherverbrauch + Speicherverbrauch Location: %1 Parent folder for proposed #include completion - Pfad: %1 + Pfad: %1 collecting overrides ... - + Suche überschriebene Methoden ... <base declaration> - + <Basisdeklaration> ClangCodeModel::Internal::ClangdFindReferences C++ Usages: - + C++ Referenzen: Re&name %n files - + Eine Datei umbe&nennen %n Dateien umbe&nennen @@ -52457,7 +52461,7 @@ in "%2" aus. Files: %1 - Dateien: + Dateien: %1 @@ -52465,233 +52469,234 @@ in "%2" aus. ClangCodeModel::Internal::ClangModelManagerSupport The use of clangd for the C/C++ code model was disabled, because it is likely that its memory requirements would be higher than what your system can handle. - + Clangd wurde für das C/C++-Codemodell deaktiviert, da dessen Speicheranforderung wahrscheinlich die Leistungsfähigkeit Ihres Systems übersteigt. With clangd enabled, Qt Creator fully supports modern C++ when highlighting code, completing symbols and so on.<br>This comes at a higher cost in terms of CPU load and memory usage compared to the built-in code model, which therefore might be the better choice on older machines and/or with legacy code.<br>You can enable/disable and fine-tune clangd <a href="dummy">here</a>. - + Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum eingebauten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. Enable Anyway - + Trotzdem aktivieren Cannot use clangd: Failed to generate compilation database: %1 - + Kann Clangd nicht nutzen: Erstellen der Kompilierungsdatenbank fehlgeschlagen: +%1 ClangdTextMark Code Model Error - Codemodell-Fehler + Codemodell-Fehler Code Model Warning - Codemodell-Warnung + Codemodell-Warnung Copy to Clipboard Clang Code Model Marks - In die Zwischenablage kopieren + In die Zwischenablage kopieren Disable Diagnostic in Current Project - + Meldung für aktuelles Projekt deaktivieren ClangUtils Could not retrieve build directory. - + Build-Verzeichnis konnte nicht abgefragt werden. Could not create "%1": %2 - + Konnte "%1" nicht erzeugen: %2 ClangFormat::ClangFormatGlobalConfigWidget Formatting mode: - + Formatierungsart: Format while typing - Bei der Eingabe formatieren + Bei der Eingabe formatieren Format edited code on file save - Bearbeiteten Quelltext beim Speichern der Datei formatieren + Bearbeiteten Quelltext beim Speichern der Datei formatieren Override Clang Format configuration file - Clang-Format-Konfigurationsdatei überschreiben + Clang-Format-Konfigurationsdatei überschreiben ClangFormat global setting: - + Globale Einstellungen für ClangFormat: Indenting only - + Nur Einrückung Full formatting - + Komplette Formatierung Disable - Deaktivieren + Deaktivieren The current project has its own .clang-format file which can be overridden by the settings below. - + Das aktuelle Projekt hat ihre eigene .clang-format-Datei, die in den untenstehenden Einstellungen überschrieben werden kann. Override Clang Format configuration file with the chosen configuration. - + Die Clang-Format-Konfigurationsdatei mit der gewählten Konfiguration überschreiben. ClangFormatStyleFactory ClangFormat - ClangFormat + ClangFormat ClangTools::Internal::ClangToolsProjectSettingsWidget Restore Global Settings - Globale Einstellungen wiederherstellen + Globale Einstellungen wiederherstellen Go to Analyzer - + Zum Analyzer wechseln Remove Selected - Ausgewählte entfernen + Ausgewählte entfernen Remove All - Alle entfernen + Alle entfernen Suppressed diagnostics - Unterdrückte Diagnosemeldungen + Unterdrückte Meldungen ClangToolsDiagnosticModel No Fixits - Keine Korrekturen + Keine Korrekturen Not Scheduled - nicht eingeplant + Nicht eingeplant Invalidated - Ungültig + Ungültig Scheduled - eingeplant + Eingeplant Failed to Apply - Konnte nicht angewendet werden + Konnte nicht angewendet werden Applied - Angewendet + Angewendet ClangTools::Internal::TidyOptionsDialog Options for %1 - + Einstellungen für %1 Option - + Einstellung Value - Wert + Wert Add Option - + Einstellung hinzufügen Remove Option - + Einstellung entfernen <new option> - + <Neue Einstellung> ClangTools::Internal::TidyChecksTreeModel Options - Einstellungen + Einstellungen Clang Tools Custom Configuration - + Benutzerdefinierte Konfiguration ClangTools::Internal::DiagnosticMark Copy to Clipboard - In die Zwischenablage kopieren + In die Zwischenablage kopieren Disable Diagnostic - + Meldung deaktivieren ClangTools::Internal::FilterChecksModel Check - + Check ClangTools::Internal::SettingsWidget Clang-Tidy Executable - + Ausführbare Datei für Clang-Tidy Clazy Executable - + Ausführbare Datei für Clazy Executables - + Ausführbare Dateien Clang-Tidy: - + Clang-Tidy: Clazy-Standalone: - + Clazy-Standalone: @@ -52705,7 +52710,7 @@ in "%2" aus. CMakeProjectManager::Tr::Tr Tools - Werkzeuge + Werkzeuge diff --git a/src/app/main.cpp b/src/app/main.cpp index e197f17393a..bdd80ed34e2 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -494,6 +494,11 @@ int main(int argc, char **argv) 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 (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("QT_QPA_PLATFORM")) { // Enforce XCB on Linux/Gnome, if the user didn't override via QT_QPA_PLATFORM diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 75fba81867c..a5b3381acc6 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1529,7 +1529,7 @@ static QString normalizePathSegmentHelper(const QString &name) { const int len = name.length(); - if (len == 0) + if (len == 0 || name.contains("%{")) return name; int i = len - 1; diff --git a/src/libs/utils/infobar.cpp b/src/libs/utils/infobar.cpp index 13fca918f53..59bca4de703 100644 --- a/src/libs/utils/infobar.cpp +++ b/src/libs/utils/infobar.cpp @@ -374,8 +374,10 @@ void InfoBarDisplay::update() if (infoWidgetCloseButton) hbox->addWidget(infoWidgetCloseButton); } else { - infoWidgetCloseButton->setText(info.m_cancelButtonText); - hbox->addWidget(infoWidgetCloseButton); + if (infoWidgetCloseButton) { + infoWidgetCloseButton->setText(info.m_cancelButtonText); + hbox->addWidget(infoWidgetCloseButton); + } if (infoWidgetSuppressButton) hbox->addWidget(infoWidgetSuppressButton); } diff --git a/src/plugins/autotest/gtest/gtestconfiguration.cpp b/src/plugins/autotest/gtest/gtestconfiguration.cpp index 2ff3b5c6b1e..231dea01ff2 100644 --- a/src/plugins/autotest/gtest/gtestconfiguration.cpp +++ b/src/plugins/autotest/gtest/gtestconfiguration.cpp @@ -60,8 +60,12 @@ QStringList GTestConfiguration::argumentsForTestRunner(QStringList *omitted) con } const QStringList &testSets = testCases(); - if (!testSets.isEmpty()) - arguments << "--gtest_filter=\"" + testSets.join(':') + '"'; + if (!testSets.isEmpty()) { + if (isDebugRunMode()) // debugger does its own special quoting + arguments << "--gtest_filter=" + testSets.join(':'); + else + arguments << "--gtest_filter=\"" + testSets.join(':') + '"'; + } auto gSettings = static_cast(framework()->testSettings()); if (!gSettings) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 679e41004bf..0e76423e69f 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -127,7 +127,7 @@ static void checkSystemForClangdSuitability() if (ClangdSettings::hardwareFulfillsRequirements()) return; - ClangdSettings::setUseClangd(false); + ClangdSettings::setUseClangdAndSave(false); const QString warnStr = ClangModelManagerSupport::tr("The use of clangd for the C/C++ " "code model was disabled, because it is likely that its memory requirements " "would be higher than what your system can handle."); @@ -148,7 +148,7 @@ static void checkSystemForClangdSuitability() return label; }); info.addCustomButton(ClangModelManagerSupport::tr("Enable Anyway"), [clangdWarningSetting] { - ClangdSettings::setUseClangd(true); + ClangdSettings::setUseClangdAndSave(true); Core::ICore::infoBar()->removeInfo(clangdWarningSetting); }); Core::ICore::infoBar()->addInfo(info); @@ -517,12 +517,14 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr && currentClient->project() == docProject) { continue; } - if (!docProject || docProject == project) { - if (currentClient) - currentClient->closeDocument(doc); - LanguageClientManager::openDocumentWithClient(doc, client); - hasDocuments = true; + if (docProject != project + && (docProject || !ProjectFile::isHeader(doc->filePath()))) { + continue; } + if (currentClient) + currentClient->closeDocument(doc); + LanguageClientManager::openDocumentWithClient(doc, client); + hasDocuments = true; } for (auto it = m_queuedShadowDocuments.begin(); it != m_queuedShadowDocuments.end();) { @@ -625,11 +627,13 @@ void ClangModelManagerSupport::claimNonProjectSources(ClangdClient *client) } if (!ClangdSettings::instance().sizeIsOkay(doc->filePath())) continue; - if (!ProjectExplorer::SessionManager::projectForFile(doc->filePath())) { - if (currentClient) - currentClient->closeDocument(doc); - LanguageClientManager::openDocumentWithClient(doc, client); - } + if (ProjectExplorer::SessionManager::projectForFile(doc->filePath())) + continue; + if (client->project() && !ProjectFile::isHeader(doc->filePath())) + continue; + if (currentClient) + currentClient->closeDocument(doc); + LanguageClientManager::openDocumentWithClient(doc, client); } } @@ -717,7 +721,7 @@ void ClangModelManagerSupport::onEditorOpened(Core::IEditor *editor) return; if (sessionModeEnabled()) project = nullptr; - else if (!project) + else if (!project && ProjectFile::isHeader(document->filePath())) project = fallbackProject(); if (ClangdClient * const client = clientForProject(project)) LanguageClientManager::openDocumentWithClient(textDocument, client); diff --git a/src/plugins/clangtools/filterdialog.cpp b/src/plugins/clangtools/filterdialog.cpp index b1225270d8e..cd54add6b88 100644 --- a/src/plugins/clangtools/filterdialog.cpp +++ b/src/plugins/clangtools/filterdialog.cpp @@ -93,7 +93,7 @@ FilterDialog::FilterDialog(const Checks &checks, QWidget *parent) buttonBox, }.attachTo(this); - connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [&] { + connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [=] { const bool hasSelection = !m_view->selectionModel()->selectedRows().isEmpty(); buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection); }); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index b5adf4bc09d..4b6ab55d4df 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -1621,10 +1621,24 @@ bool CMakeBuildConfiguration::fromMap(const QVariantMap &map) m_buildSystem->setInitialCMakeArguments(cmd.splitArguments()); } - d->m_clearSystemConfigureEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)) - .toBool(); + // Upgrading from Qt Creator version <9 to 9, if the build environment is set + // 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( - map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList()); + map.value(userEnvironmentChangesKey).toStringList()); updateAndEmitConfigureEnvironmentChanged(); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index ad4c685d3f5..ce490d17714 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -96,14 +96,24 @@ Internal::PresetsData CMakeProject::combinePresets(Internal::PresetsData &cmakeP for (const auto &p : presets) 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) { if (!p.inherits) continue; - for (const QString &inheritFromName : p.inherits.value()) - if (presetsHash.contains(inheritFromName)) + for (const QString &inheritFromName : p.inherits.value()) { + if (presetsHash.contains(inheritFromName)) { p.inheritFrom(presetsHash[inheritFromName]); + presetsHash[p.name] = p; + } + } } }; diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp index fccdeb9af2f..1ed68ab5139 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp @@ -164,8 +164,8 @@ void CompilationDatabaseTests::testFilterArguments() {"RELATIVE_PLUGIN_PATH", "\"../lib/qtcreator/plugins\""}, {"QT_CREATOR", "1"}})); QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource); - QCOMPARE(testData.sysRoot.toString(), HostOsInfo::isWindowsHost() ? QString("C:\\sysroot\\embedded") - : QString("/opt/sysroot/embedded")); + QCOMPARE(testData.sysRoot.toUserOutput(), HostOsInfo::isWindowsHost() + ? QString("C:\\sysroot\\embedded") : QString("/opt/sysroot/embedded")); } static QString kCmakeCommand diff --git a/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp b/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp index d9d03501d0f..f04fd3a4a53 100644 --- a/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp +++ b/src/plugins/coreplugin/dialogs/externaltoolconfig.cpp @@ -752,7 +752,7 @@ void ExternalToolConfig::showInfoForItem(const QModelIndex &index) static FilePath getUserFilePath(const QString &proposalFileName) { const FilePath resourceDir(ICore::userResourcePath()); - const FilePath externalToolsDir = resourceDir / "externalTools"; + const FilePath externalToolsDir = resourceDir / "externaltools"; if (!externalToolsDir.isDir()) externalToolsDir.createDir(); diff --git a/src/plugins/coreplugin/editormanager/documentmodel.cpp b/src/plugins/coreplugin/editormanager/documentmodel.cpp index c154ebb551e..8198a2a4762 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel.cpp +++ b/src/plugins/coreplugin/editormanager/documentmodel.cpp @@ -79,7 +79,7 @@ int DocumentModelPrivate::rowCount(const QModelIndex &parent) const return 0; } -void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry) +DocumentModel::Entry *DocumentModelPrivate::addEntry(DocumentModel::Entry *entry) { const Utils::FilePath filePath = entry->fileName(); @@ -95,9 +95,8 @@ void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry) this, [this, document = previousEntry->document] { itemChanged(document); }); } delete entry; - entry = nullptr; disambiguateDisplayNames(previousEntry); - return; + return nullptr; } auto positions = positionEntry(m_entries, entry); @@ -115,6 +114,7 @@ void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry) itemChanged(document); }); endInsertRows(); + return entry; } bool DocumentModelPrivate::disambiguateDisplayNames(DocumentModel::Entry *entry) @@ -411,8 +411,7 @@ DocumentModel::Entry *DocumentModelPrivate::addSuspendedDocument(const FilePath entry->document->setPreferredDisplayName(displayName); entry->document->setId(id); entry->isSuspended = true; - d->addEntry(entry); - return entry; + return d->addEntry(entry); } DocumentModel::Entry *DocumentModelPrivate::firstSuspendedEntry() diff --git a/src/plugins/coreplugin/editormanager/documentmodel_p.h b/src/plugins/coreplugin/editormanager/documentmodel_p.h index 560dd0d0bd0..7d44172688c 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel_p.h +++ b/src/plugins/coreplugin/editormanager/documentmodel_p.h @@ -33,7 +33,7 @@ public: Qt::DropActions supportedDragActions() const override; QStringList mimeTypes() const override; - void addEntry(DocumentModel::Entry *entry); + DocumentModel::Entry *addEntry(DocumentModel::Entry *entry); void removeDocument(int idx); std::optional indexOfFilePath(const Utils::FilePath &filePath) const; diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 0ed4d4cc8a5..6d8a35b62c6 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -720,7 +720,9 @@ void ICore::raiseWindow(QWidget *widget) if (!widget) return; QWidget *window = widget->window(); - if (window && window == m_mainwindow) { + if (!window) + return; + if (window == m_mainwindow) { m_mainwindow->raiseWindow(); } else { window->raise(); diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index 4bb98af0c3b..3103a655a59 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -253,6 +253,12 @@ bool ClangdSettings::useClangd() const void ClangdSettings::setUseClangd(bool use) { instance().m_data.useClangd = use; } +void ClangdSettings::setUseClangdAndSave(bool use) +{ + setUseClangd(use); + instance().saveSettings(); +} + bool ClangdSettings::hardwareFulfillsRequirements() { instance().m_data.haveCheckedHardwareReqirements = true; diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h index 02d480d68e3..58b8f3005f3 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.h +++ b/src/plugins/cppeditor/cppcodemodelsettings.h @@ -133,6 +133,7 @@ public: static ClangdSettings &instance(); bool useClangd() const; static void setUseClangd(bool use); + static void setUseClangdAndSave(bool use); static bool hardwareFulfillsRequirements(); static bool haveCheckedHardwareRequirements(); diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.cpp b/src/plugins/cppeditor/cppcodestylesettingspage.cpp index 225f8fcfdb3..6493c13589f 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.cpp +++ b/src/plugins/cppeditor/cppcodestylesettingspage.cpp @@ -161,8 +161,8 @@ void CppCodeStylePreferencesWidget::setCodeStyle(CppCodeStylePreferences *codeSt slotCurrentPreferencesChanged(currentPreferences); }); - setTabSettings(m_preferences->tabSettings()); - setCodeStyleSettings(m_preferences->codeStyleSettings(), false); + setTabSettings(m_preferences->currentTabSettings()); + setCodeStyleSettings(m_preferences->currentCodeStyleSettings(), false); slotCurrentPreferencesChanged(m_preferences->currentPreferences(), false); updatePreview(); diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index 867223e15c1..15ad03d1d28 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -12,7 +12,6 @@ #include "cppeditordocument.h" #include "cppeditorwidget.h" #include "cppfilesettingspage.h" -#include "cpphighlighter.h" #include "cppincludehierarchy.h" #include "cppmodelmanager.h" #include "cppoutline.h" @@ -261,21 +260,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err connect(openInNextSplitAction, &QAction::triggered, 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); }); - MacroExpander *expander = globalMacroExpander(); expander->registerVariable("Cpp:LicenseTemplate", tr("The license template."), @@ -316,9 +300,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST); 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->setTouchBarText(tr("Follow", "text on macOS touch bar")); contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST); @@ -398,6 +379,22 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST); 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); }); + d->m_openTypeHierarchyAction = new QAction(tr("Open Type Hierarchy"), this); cmd = ActionManager::registerAction(d->m_openTypeHierarchyAction, Constants::OPEN_TYPE_HIERARCHY, context); cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+T") : tr("Ctrl+Shift+T"))); diff --git a/src/plugins/cppeditor/cppprojectfile.cpp b/src/plugins/cppeditor/cppprojectfile.cpp index c28f41a2291..c5a5d57d5b8 100644 --- a/src/plugins/cppeditor/cppprojectfile.cpp +++ b/src/plugins/cppeditor/cppprojectfile.cpp @@ -6,6 +6,7 @@ #include "cppeditorconstants.h" #include +#include #include #include @@ -125,6 +126,11 @@ bool ProjectFile::isHeader(ProjectFile::Kind kind) } } +bool ProjectFile::isHeader(const Utils::FilePath &fp) +{ + return isHeader(classify(fp.toString())); +} + bool ProjectFile::isSource(ProjectFile::Kind kind) { switch (kind) { diff --git a/src/plugins/cppeditor/cppprojectfile.h b/src/plugins/cppeditor/cppprojectfile.h index 71310fec8a2..16894555cf5 100644 --- a/src/plugins/cppeditor/cppprojectfile.h +++ b/src/plugins/cppeditor/cppprojectfile.h @@ -7,6 +7,8 @@ #include +namespace Utils { class FilePath; } + namespace CppEditor { class CPPEDITOR_EXPORT ProjectFile @@ -39,6 +41,7 @@ public: static bool isSource(Kind kind); static bool isHeader(Kind kind); + static bool isHeader(const Utils::FilePath &fp); static bool isC(Kind kind); static bool isCxx(Kind kind); static bool isAmbiguousHeader(const QString &filePath); diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 97e4ed1c77f..f2167c80c27 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -2871,6 +2871,56 @@ static void formatCdbBreakPointResponse(int modelId, const QString &responseId, str << '\n'; } + +// Helper to retrieve an int child from GDBMI +static inline std::optional 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 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 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) { if (debugBreakpoints) { @@ -2896,8 +2946,7 @@ void CdbEngine::handleBreakPoints(const DebuggerResponse &response) for (const GdbMi &breakPointG : response.data) { // Might not be valid if there is not id const QString responseId = breakPointG["id"].data(); - BreakpointParameters reportedResponse; - parseBreakPoint(breakPointG, &reportedResponse); + BreakpointParameters reportedResponse = parseBreakPoint(breakPointG); if (debugBreakpoints) qDebug(" Parsed %s: pending=%d %s\n", qPrintable(responseId), reportedResponse.pending, diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 108cc64d160..89c2fd63ec9 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -168,6 +168,7 @@ private: unsigned parseStackTrace(const GdbMi &data, bool sourceStepInto); void mergeStartParametersSourcePathMap(); void checkQtSdkPdbFiles(const QString &module); + BreakpointParameters parseBreakPoint(const GdbMi &gdbmi); const QString m_tokenPrefix; void handleSetupFailure(const QString &errorMessage); diff --git a/src/plugins/debugger/cdb/cdbparsehelpers.cpp b/src/plugins/debugger/cdb/cdbparsehelpers.cpp index d8bf3996d8d..f9e2d371cba 100644 --- a/src/plugins/debugger/cdb/cdbparsehelpers.cpp +++ b/src/plugins/debugger/cdb/cdbparsehelpers.cpp @@ -189,64 +189,6 @@ QString cdbClearBreakpointCommand(const Breakpoint &bp) 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 cmd; diff --git a/src/plugins/debugger/cdb/cdbparsehelpers.h b/src/plugins/debugger/cdb/cdbparsehelpers.h index 75018b08714..4c6a8170c9b 100644 --- a/src/plugins/debugger/cdb/cdbparsehelpers.h +++ b/src/plugins/debugger/cdb/cdbparsehelpers.h @@ -38,10 +38,6 @@ QString cdbAddBreakpointCommand(const BreakpointParameters &d, const QList > &sourcePathMapping, const QString &responseId = QString()); 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 ...). QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data); diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp index c05d96b1db2..a0f46fa86a5 100644 --- a/src/plugins/debugger/debuggerkitinformation.cpp +++ b/src/plugins/debugger/debuggerkitinformation.cpp @@ -249,8 +249,18 @@ void DebuggerKitAspect::fix(Kit *k) setup(k); 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; k->setValue(DebuggerKitAspect::id(), QVariant()); setup(k); diff --git a/src/plugins/debugger/threadshandler.cpp b/src/plugins/debugger/threadshandler.cpp index cc0920fb121..286b58258f1 100644 --- a/src/plugins/debugger/threadshandler.cpp +++ b/src/plugins/debugger/threadshandler.cpp @@ -268,6 +268,7 @@ void ThreadsHandler::setCurrentThread(const Thread &thread) m_currentThread = thread; thread->update(); + threadSwitcher()->setCurrentIndex(thread->index().row()); } void ThreadsHandler::notifyGroupCreated(const QString &groupId, const QString &pid) diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 0850abf30eb..71b246b92d3 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -221,8 +221,14 @@ CommandLine DockerProcessImpl::fullLocalCommandLine(bool interactive) QStringList args; if (!m_setup.m_workingDirectory.isEmpty()) { - QTC_CHECK(DeviceManager::deviceForPath(m_setup.m_workingDirectory) == m_device); - args.append({"cd", m_setup.m_workingDirectory.path()}); + FilePath workingDir = m_setup.m_workingDirectory; + + if (DeviceManager::deviceForPath(workingDir) != m_device) { + QTC_CHECK(m_device->ensureReachable(workingDir)); + workingDir = workingDir.onDevice(m_device->rootPath()); + } + + args.append({"cd", workingDir.path()}); args.append("&&"); } diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index d4f5c442642..60468ff12de 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -419,7 +419,7 @@ void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *doc client->openDocument(document); else client->activateDocument(document); - } else if (Core::EditorManager::currentEditor()->document() == document) { + } else if (Core::EditorManager::currentDocument() == document) { TextEditor::IOutlineWidgetFactory::updateOutline(); } } diff --git a/src/plugins/mcusupport/test/armgcc_mimxrt1050_evk_freertos_json.h b/src/plugins/mcusupport/test/armgcc_mimxrt1050_evk_freertos_json.h index 4a7da4ccf93..8992d3f258d 100644 --- a/src/plugins/mcusupport/test/armgcc_mimxrt1050_evk_freertos_json.h +++ b/src/plugins/mcusupport/test/armgcc_mimxrt1050_evk_freertos_json.h @@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1050_evk_freertos_json = R"( "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE", "type": "file", - "defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", + "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake", "visible": false, "optional": false } diff --git a/src/plugins/mcusupport/test/armgcc_mimxrt1064_evk_freertos_json.h b/src/plugins/mcusupport/test/armgcc_mimxrt1064_evk_freertos_json.h index 592a84228d1..b4ad4c81cd9 100644 --- a/src/plugins/mcusupport/test/armgcc_mimxrt1064_evk_freertos_json.h +++ b/src/plugins/mcusupport/test/armgcc_mimxrt1064_evk_freertos_json.h @@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1064_evk_freertos_json = R"( "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE", "type": "file", - "defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", + "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake", "visible": false, "optional": false } diff --git a/src/plugins/mcusupport/test/armgcc_mimxrt1170_evk_freertos_json.h b/src/plugins/mcusupport/test/armgcc_mimxrt1170_evk_freertos_json.h index b7eb801cd60..6afb8df076f 100644 --- a/src/plugins/mcusupport/test/armgcc_mimxrt1170_evk_freertos_json.h +++ b/src/plugins/mcusupport/test/armgcc_mimxrt1170_evk_freertos_json.h @@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1170_evk_freertos_json = R"( "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE", "type": "file", - "defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", + "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake", "visible": false, "optional": false } diff --git a/src/plugins/mcusupport/test/armgcc_stm32f769i_discovery_freertos_json.h b/src/plugins/mcusupport/test/armgcc_stm32f769i_discovery_freertos_json.h index d6e28c6c429..e4bb862440f 100644 --- a/src/plugins/mcusupport/test/armgcc_stm32f769i_discovery_freertos_json.h +++ b/src/plugins/mcusupport/test/armgcc_stm32f769i_discovery_freertos_json.h @@ -62,7 +62,7 @@ constexpr auto armgcc_stm32f769i_discovery_freertos_json = R"( "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE", "type": "file", - "defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", + "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake", "visible": false, "optional": false } diff --git a/src/plugins/mcusupport/test/armgcc_stm32h750b_discovery_baremetal_json.h b/src/plugins/mcusupport/test/armgcc_stm32h750b_discovery_baremetal_json.h index a2819c8cf8a..4ef64b2a200 100644 --- a/src/plugins/mcusupport/test/armgcc_stm32h750b_discovery_baremetal_json.h +++ b/src/plugins/mcusupport/test/armgcc_stm32h750b_discovery_baremetal_json.h @@ -62,7 +62,7 @@ constexpr auto armgcc_stm32h750b_discovery_baremetal_json = R"( "id": "ARMGCC_CMAKE_TOOLCHAIN_FILE", "cmakeVar": "CMAKE_TOOLCHAIN_FILE", "type": "file", - "defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake", + "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake", "visible": false, "optional": false } diff --git a/src/plugins/perfprofiler/perfrunconfigurationaspect.h b/src/plugins/perfprofiler/perfrunconfigurationaspect.h index b0c06fa88d2..eaa4c4b7251 100644 --- a/src/plugins/perfprofiler/perfrunconfigurationaspect.h +++ b/src/plugins/perfprofiler/perfrunconfigurationaspect.h @@ -14,6 +14,7 @@ namespace PerfProfiler { class PERFPROFILER_EXPORT PerfRunConfigurationAspect : public ProjectExplorer::GlobalOrProjectAspect { + Q_OBJECT public: PerfRunConfigurationAspect(ProjectExplorer::Target *target); }; diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index b858fdb4d46..a812eb13b2d 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -46,8 +46,6 @@ using namespace Utils; const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount"; 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 PARSE_STD_OUT_KEY[] = "ProjectExplorer.BuildConfiguration.ParseStandardOutput"; @@ -378,8 +376,9 @@ QVariantMap BuildConfiguration::toMap() const { QVariantMap map = ProjectConfiguration::toMap(); - map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment); - map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), EnvironmentItem::toStringList(d->m_userEnvironmentChanges)); + map.insert(QLatin1String(Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment); + 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_PREFIX) + QString::number(0), d->m_buildSteps.toMap()); @@ -393,8 +392,10 @@ QVariantMap BuildConfiguration::toMap() const bool BuildConfiguration::fromMap(const QVariantMap &map) { - d->m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool(); - d->m_userEnvironmentChanges = EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList()); + d->m_clearSystemEnvironment = map.value(QLatin1String(Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY)) + .toBool(); + d->m_userEnvironmentChanges = EnvironmentItem::fromStringList( + map.value(QLatin1String(Constants::USER_ENVIRONMENT_CHANGES_KEY)).toStringList()); updateCacheAndEmitEnvironmentChanged(); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index dfcc80d6c59..2a471734906 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -480,7 +480,8 @@ JsonWizardFactory *JsonWizardFactory::createWizardFactory(const QVariantMap &dat if (!factory->initialize(data, baseDir, errorMessage)) { delete factory; factory = nullptr; - Core::MessageManager::writeDisrupting(*errorMessage); + if (verbose()) + Core::MessageManager::writeDisrupting(*errorMessage); } return factory; } diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 9efea4ebb0e..b3988f300ff 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -4175,6 +4175,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() auto *ag = new QActionGroup(m_sessionMenu); connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPluginPrivate::setSession); const QString activeSession = SessionManager::activeSession(); + const bool isDefaultVirgin = SessionManager::isDefaultVirgin(); QStringList sessions = SessionManager::sessions(); std::sort(std::next(sessions.begin()), sessions.end(), [](const QString &s1, const QString &s2) { @@ -4189,7 +4190,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() QAction *act = ag->addAction(actionText); act->setData(session); act->setCheckable(true); - if (session == activeSession) + if (session == activeSession && !isDefaultVirgin) act->setChecked(true); } m_sessionMenu->addActions(ag->actions()); @@ -4198,9 +4199,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu() void ProjectExplorerPluginPrivate::setSession(QAction *action) { - QString session = action->data().toString(); - if (session != SessionManager::activeSession()) - SessionManager::loadSession(session); + SessionManager::loadSession(action->data().toString()); } void ProjectExplorerPlugin::setProjectExplorerSettings(const ProjectExplorerSettings &pes) diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index ccdb0d44d3a..2ff240b4a3f 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -219,6 +219,8 @@ const char SETTINGS_MENU_HIDE_BUILD[] = "Menu/HideBuild"; const char SETTINGS_MENU_HIDE_DEBUG[] = "Menu/HideDebug"; const char SETTINGS_MENU_HIDE_ANALYZE[] = "Menu/HideAnalyze"; 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 PROJECTEXPLORER_EXPORT QString msgAutoDetected(); diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index e3e1122abc1..5daf2e72f80 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -479,10 +479,10 @@ function(get_and_add_as_subdirectory name repository git_tag build_dir source_di ) execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" "${build_dir}/${name}" WORKING_DIRECTORY "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) execute_process(COMMAND "${CMAKE_COMMAND}" --build "${build_dir}/${name}" - COMMAND_ERROR_IS_FATAL ANY + ${QTC_COMMAND_ERROR_IS_FATAL} ) add_subdirectory(${source_dir}/${name}/${source_subdir} ${name}) endfunction() diff --git a/src/plugins/squish/squishxmloutputhandler.cpp b/src/plugins/squish/squishxmloutputhandler.cpp index 4c70f6e8761..c2e06babe6e 100644 --- a/src/plugins/squish/squishxmloutputhandler.cpp +++ b/src/plugins/squish/squishxmloutputhandler.cpp @@ -92,7 +92,7 @@ void SquishXmlOutputHandler::mergeResultFiles(const Utils::FilePaths &reportFile // and finally write test tag (case name) - the prolog tag (for test case) // will be written outside the if const QXmlStreamAttributes testAttributes = reader.attributes(); - QXmlStreamReader::TokenType token; + QXmlStreamReader::TokenType token = QXmlStreamReader::NoToken; while (!reader.atEnd()) { token = reader.readNext(); if (token != QXmlStreamReader::Characters) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 346dc62bb0b..074c35a26c8 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -5887,7 +5887,7 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) { QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y())); - int markWidth; + int markWidth = 0; extraAreaWidth(&markWidth); const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0; diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index df8069db77a..1be1e21827d 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -124,14 +124,13 @@ void UpdateInfoPlugin::startCheckForUpdates() return; // do not trigger while update task is already running QFutureInterface futureIf; - FutureProgress *futureProgress - = ProgressManager::addTimedTask(futureIf, - tr("Checking for Updates"), - Id("UpdateInfo.CheckingForUpdates"), - 60); - futureProgress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction); - futureProgress->setSubtitleVisibleInStatusBar(true); - connect(futureProgress, &FutureProgress::canceled, this, [this, futureIf]() mutable { + d->m_progress = ProgressManager::addTimedTask(futureIf, + tr("Checking for Updates"), + Id("UpdateInfo.CheckingForUpdates"), + 60); + d->m_progress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction); + d->m_progress->setSubtitleVisibleInStatusBar(true); + connect(d->m_progress, &FutureProgress::canceled, this, [this, futureIf]() mutable { futureIf.reportCanceled(); futureIf.reportFinished(); stopCheckForUpdates(); diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 39ec743104c..752b22c2aa6 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4061,15 +4061,15 @@ void tst_Dumpers::dumper_data() + Check("list.0", "[0]", "1", "int") + Check("list.1", "[1]", "2", "int") + Check("list.2", "[2]", "3", "int") - + Check("v3", "", "@QVariant (@QList)") % Qt5 + + Check("v3", "", "@QVariant (@QList)") % NeedsInferiorCall % Qt5 + Check("v3.data", "<3 items>", TypePattern(".*QList")) % NeedsInferiorCall % Qt5 + Check("v3.data.0", "[0]", "1", "int") % NeedsInferiorCall % Qt5 + Check("v3.data.1", "[1]", "2", "int") % NeedsInferiorCall % Qt5 + Check("v3.data.2", "[2]", "3", "int") % NeedsInferiorCall % Qt5 + Check("v3", "<3 items>", "@QVariant (@QList)") % Qt6 - + Check("v3.0", "[0]", "1", "int") % NeedsInferiorCall % Qt6 - + Check("v3.1", "[1]", "2", "int") % NeedsInferiorCall % Qt6 - + Check("v3.2", "[2]", "3", "int") % NeedsInferiorCall % Qt6; + + Check("v3.0", "[0]", "1", "int") % Qt6 + + Check("v3.1", "[1]", "2", "int") % Qt6 + + Check("v3.2", "[2]", "3", "int") % Qt6; QTest::newRow("QVariant2") diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp index 804c7d63394..f4d5ffa6925 100644 --- a/tests/auto/debugger/tst_gdb.cpp +++ b/tests/auto/debugger/tst_gdb.cpp @@ -115,6 +115,14 @@ void tst_gdb::version_data() QTest::newRow("Debian 7.12 git") << "GNU gdb (Debian 7.12-6) 7.12.0.20161007-git" << 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) diff --git a/tests/manual/android/setup/setup_android.cmake b/tests/manual/android/setup/setup_android.cmake index c6a4f8ae298..c4dfb275b35 100644 --- a/tests/manual/android/setup/setup_android.cmake +++ b/tests/manual/android/setup/setup_android.cmake @@ -43,7 +43,7 @@ function(download_jdk) message("Downloading: ${jdk_url}") file(DOWNLOAD ${jdk_url} ./jdk.zip SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./jdk.zip COMMAND_ERROR_IS_FATAL ANY) endfunction() function(download_android_commandline) @@ -61,7 +61,7 @@ function(download_android_commandline) file(DOWNLOAD ${android_cmdtools_url} ./android_commandline_tools.zip SHOW_PROGRESS) file(MAKE_DIRECTORY android-sdk) file(MAKE_DIRECTORY android-cmdlinetools) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ../android_commandline_tools.zip WORKING_DIRECTORY android-cmdlinetools COMMAND_ERROR_IS_FATAL ANY) endfunction() function(setup_android) @@ -78,9 +78,11 @@ function(setup_android) file(WRITE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n") execute_process( INPUT_FILE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt - COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --licenses --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( - COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + COMMAND ${sdkmanager} --update --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) execute_process( COMMAND ${sdkmanager} "platforms;${ANDROID_PLATFORM}" @@ -90,13 +92,15 @@ function(setup_android) "cmdline-tools;latest" "tools" "emulator" - "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + "ndk-bundle" --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) if (WIN32) execute_process( COMMAND ${sdkmanager} "extras;google;usb_driver" - --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk) + --sdk_root=${CMAKE_CURRENT_LIST_DIR}/android-sdk + COMMAND_ERROR_IS_FATAL ANY) endif() endfunction()