forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/9.0' into qds/dev
Change-Id: I7f394c76256d1d24fbc2d40937f3f7a63fb854c1
This commit is contained in:
2
.github/workflows/build_cmake.yml
vendored
2
.github/workflows/build_cmake.yml
vendored
@@ -7,7 +7,7 @@ on:
|
|||||||
- 'doc/**'
|
- 'doc/**'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
QT_VERSION: 6.4.1
|
QT_VERSION: 6.4.0
|
||||||
CLANG_VERSION: 15.0.0
|
CLANG_VERSION: 15.0.0
|
||||||
ELFUTILS_VERSION: 0.175
|
ELFUTILS_VERSION: 0.175
|
||||||
CMAKE_VERSION: 3.21.1
|
CMAKE_VERSION: 3.21.1
|
||||||
|
@@ -64,6 +64,7 @@ function(create_python_xy PythonExe PythonZipFilePath)
|
|||||||
set(ENV{PYTHONOPTIMIZE} "2")
|
set(ENV{PYTHONOPTIMIZE} "2")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b
|
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")
|
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(
|
execute_process(
|
||||||
COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip
|
COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip
|
||||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/"
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/"
|
||||||
|
${QTC_COMMAND_ERROR_IS_FATAL}
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -778,14 +778,14 @@ function(add_qtc_executable name)
|
|||||||
set(_code "${_code}
|
set(_code "${_code}
|
||||||
execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\"
|
execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\"
|
||||||
-delete_rpath \"${_rpath}\"
|
-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()
|
endforeach()
|
||||||
foreach(_rpath ${install_rpath})
|
foreach(_rpath ${install_rpath})
|
||||||
set(_code "${_code}
|
set(_code "${_code}
|
||||||
execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\"
|
execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\"
|
||||||
-add_rpath \"${_rpath}\"
|
-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()
|
endforeach()
|
||||||
install(CODE "${_code}")
|
install(CODE "${_code}")
|
||||||
|
@@ -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_VERSION VERSION_LESS 3.18)
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU)
|
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU)
|
||||||
set(BUILD_WITH_PCH OFF CACHE BOOL "" FORCE)
|
set(BUILD_WITH_PCH OFF CACHE BOOL "" FORCE)
|
||||||
|
@@ -22,7 +22,8 @@ function(qt5_query_qmake)
|
|||||||
TIMEOUT 10
|
TIMEOUT 10
|
||||||
RESULT_VARIABLE _qmake_result
|
RESULT_VARIABLE _qmake_result
|
||||||
OUTPUT_VARIABLE _qmake_stdout
|
OUTPUT_VARIABLE _qmake_stdout
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
${QTC_COMMAND_ERROR_IS_FATAL})
|
||||||
|
|
||||||
if (NOT "${_qmake_result}" STREQUAL "0")
|
if (NOT "${_qmake_result}" STREQUAL "0")
|
||||||
message(FATAL_ERROR "Qmake did not execute successfully: ${_qmake_result}.")
|
message(FATAL_ERROR "Qmake did not execute successfully: ${_qmake_result}.")
|
||||||
|
@@ -47,6 +47,7 @@ function(setup_dependencies_component)
|
|||||||
\"\${_ide_app_target}\"
|
\"\${_ide_app_target}\"
|
||||||
\"${_qmake_binary}\"
|
\"${_qmake_binary}\"
|
||||||
COMMAND_ECHO STDOUT
|
COMMAND_ECHO STDOUT
|
||||||
|
\${QTC_COMMAND_ERROR_IS_FATAL}
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
COMPONENT Dependencies
|
COMPONENT Dependencies
|
||||||
|
@@ -10,7 +10,7 @@ instructions:
|
|||||||
variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_15.0.0-based
|
variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_15.0.0-based
|
||||||
- type: EnvironmentVariable
|
- type: EnvironmentVariable
|
||||||
variableName: QTC_QT_BASE_URL
|
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
|
- type: EnvironmentVariable
|
||||||
variableName: QTC_QT_MODULES
|
variableName: QTC_QT_MODULES
|
||||||
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
|
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
|
||||||
|
@@ -65,7 +65,9 @@
|
|||||||
To visualize whitespace in the editor, select \uicontrol Edit >
|
To visualize whitespace in the editor, select \uicontrol Edit >
|
||||||
\uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Display >
|
\uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Display >
|
||||||
\uicontrol {Visualize whitespace}. To visualize indentation, select
|
\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"
|
\image qtcreator-options-text-editor-display.png "Text Editor Display preferences"
|
||||||
|
|
||||||
|
@@ -682,6 +682,20 @@
|
|||||||
\li An import statement has been added twice. For more information,
|
\li An import statement has been added twice. For more information,
|
||||||
see \l{Import Statements}.
|
see \l{Import Statements}.
|
||||||
|
|
||||||
|
\row
|
||||||
|
\li M401
|
||||||
|
\li Error
|
||||||
|
\li Do not reference the root item as alias
|
||||||
|
\li The alias property cannot reference the root component directly.
|
||||||
|
Create an instance of the component instead.
|
||||||
|
|
||||||
|
\row
|
||||||
|
\li M402
|
||||||
|
\li Warning
|
||||||
|
\li Avoid referencing the root item in a hierarchy
|
||||||
|
\li The alias property cannot reference the root component in a
|
||||||
|
hierarchy. Create an instance of the component instead.
|
||||||
|
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
\section1 Resetting the Code Model
|
\section1 Resetting the Code Model
|
||||||
|
@@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
\title Using Squish
|
\title Using Squish
|
||||||
|
|
||||||
\l{https://doc.froglogic.com/squish/latest/}{Squish} is an automated GUI
|
\l{https://www.qt.io/product/quality-assurance/squish}{Squish} is an automated GUI
|
||||||
testing framework for testing Android, iOS, Java, Qt, Tk, Windows, and
|
testing framework for testing Android, iOS, Java, \macos, Qt, Tk, Windows, and
|
||||||
XView applications, as well as HTML-based web applications running in
|
XView applications, as well as HTML-based web applications running in
|
||||||
browsers, such as Apple Safari, Mozilla Firefox, Google Chrome, and
|
browsers, such as Apple Safari, Mozilla Firefox, Google Chrome, and
|
||||||
Microsoft Internet Explorer and Edge.
|
Microsoft Internet Explorer and Edge.
|
||||||
|
@@ -175,19 +175,24 @@
|
|||||||
|
|
||||||
\section1 Supported Qt for MCUs SDKs
|
\section1 Supported Qt for MCUs SDKs
|
||||||
|
|
||||||
Since version 7.0.0, \QC supports version 2.0 and later of the Qt for MCUs SDK.
|
\note The Qt for MCUs SDK 2.3 requires \QC 9.0.0, or later.
|
||||||
For older versions, refer to the following table.
|
|
||||||
|
The following table lists the \QC versions you can use to develop
|
||||||
|
applications with particular Qt for MCUs SDK versions.
|
||||||
|
|
||||||
\table
|
\table
|
||||||
\header
|
\header
|
||||||
\li \QC version
|
\li \QC version
|
||||||
\li Qt for MCUs SDK version
|
\li Qt for MCUs SDK version
|
||||||
\row
|
\row
|
||||||
\li 7.0.0 or later
|
\li 9.0.0 or later
|
||||||
\li 2.0 or later
|
\li 2.0 or later
|
||||||
|
\row
|
||||||
|
\li 7.0.0 up to 8.0.2
|
||||||
|
\li 2.0 up to 2.2
|
||||||
\row
|
\row
|
||||||
\li 6.0.x
|
\li 6.0.x
|
||||||
\li 1.3 or later, including 2.0 or later
|
\li 1.3 up to 2.2
|
||||||
\row
|
\row
|
||||||
\li 4.12.4 up to 5.0.3
|
\li 4.12.4 up to 5.0.3
|
||||||
\li 1.3 up to 1.9
|
\li 1.3 up to 1.9
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
\li {3,1} Development Platform
|
\li {3,1} Development Platform
|
||||||
\header
|
\header
|
||||||
\li \l Linux
|
\li \l Linux
|
||||||
\li \l macOS
|
\li \l \macos
|
||||||
\li \l Windows
|
\li \l Windows
|
||||||
\row
|
\row
|
||||||
\li \l Android
|
\li \l Android
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
\li
|
\li
|
||||||
\row
|
\row
|
||||||
\li \l{Microcontroller Units (MCU)}{MCUs}
|
\li \l{Microcontroller Units (MCU)}{MCUs}
|
||||||
\li
|
\li \image ok.png
|
||||||
\li
|
\li
|
||||||
\li \image ok.png
|
\li \image ok.png
|
||||||
\row
|
\row
|
||||||
|
@@ -90,7 +90,8 @@
|
|||||||
|
|
||||||
\image webinardemo-qb-fastblur.png "Settings for exporting blurEffect layer"
|
\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
|
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 component. In the \uicontrol Component field, we enter
|
||||||
\e FastBlurItem.
|
\e FastBlurItem.
|
||||||
|
@@ -78,7 +78,7 @@
|
|||||||
\li Description
|
\li Description
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/blend-mode-16px.png
|
\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
|
||||||
\li Merges two source components by using a blend mode.
|
\li Merges two source components by using a blend mode.
|
||||||
|
|
||||||
@@ -88,28 +88,34 @@
|
|||||||
is subtracted from the source and written over it.
|
is subtracted from the source and written over it.
|
||||||
|
|
||||||
For a list of possible \uicontrol Mode values and examples of their
|
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
|
\row
|
||||||
\li \inlineimage icons/brightness-contrast-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Adjusts \uicontrol Brightness and \uicontrol Contrast.
|
\li Adjusts \uicontrol Brightness and \uicontrol Contrast.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/colourize-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Alters the colors of the source component by applying an
|
\li Alters the colors of the source component by applying an
|
||||||
\uicontrol {Overlay color}. You can use the color picker
|
\uicontrol {Overlay color}. You can use the color picker
|
||||||
to \l{Picking Colors}{select the color}.
|
to \l{Picking Colors}{select the color}.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/colourize-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Sets the color in the HSL color space by specifying \uicontrol Hue,
|
\li Sets the color in the HSL color space by specifying \uicontrol Hue,
|
||||||
\uicontrol Lightness, and \uicontrol Saturation values.
|
\uicontrol Lightness, and \uicontrol Saturation values.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/desaturation-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Reduces the saturation of the colors by the value set in the
|
\li Reduces the saturation of the colors by the value set in the
|
||||||
\uicontrol Desaturation field. The value ranges from \c 0.0
|
\uicontrol Desaturation field. The value ranges from \c 0.0
|
||||||
@@ -118,7 +124,8 @@
|
|||||||
of the source component.
|
of the source component.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/directional-blur-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Applies a blur effect to the specified direction. The value of the
|
\li Applies a blur effect to the specified direction. The value of the
|
||||||
\uicontrol Angle field defines the direction of the blur. This
|
\uicontrol Angle field defines the direction of the blur. This
|
||||||
@@ -135,7 +142,8 @@
|
|||||||
more samples are needed to preserve high visual quality.
|
more samples are needed to preserve high visual quality.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/displace-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Moves the pixels of the source component according to the displacement
|
\li Moves the pixels of the source component according to the displacement
|
||||||
map specified in the \uicontrol {Displacement source} field.
|
map specified in the \uicontrol {Displacement source} field.
|
||||||
@@ -148,7 +156,8 @@
|
|||||||
maximum shift.
|
maximum shift.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/drop-shadow-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Generates a soft shadow behind the source component using a
|
\li Generates a soft shadow behind the source component using a
|
||||||
gaussian blur. This effect blurs the alpha channel of the input and
|
gaussian blur. This effect blurs the alpha channel of the input and
|
||||||
@@ -170,7 +179,8 @@
|
|||||||
FPS on high-end graphics hardware.
|
FPS on high-end graphics hardware.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/fast-blur-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Applies a fast blur effect to one or more source components.
|
\li Applies a fast blur effect to one or more source components.
|
||||||
\uicontrol {Fast Blur} offers lower blur quality than
|
\uicontrol {Fast Blur} offers lower blur quality than
|
||||||
@@ -188,7 +198,8 @@
|
|||||||
to provide good rendering performance.
|
to provide good rendering performance.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/gamma-adjust-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Alters the luminance of the source component. This effect is applied
|
\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
|
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.
|
field is used as the reciprocal scaling exponent.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/gaussian-blur-16px.png
|
\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
|
||||||
\li Applies a gaussian blur effect to one or more source components.
|
\li Applies a gaussian blur effect to one or more source components.
|
||||||
The effect softens the image by blurring it with an algorithm that
|
The effect softens the image by blurring it with an algorithm that
|
||||||
@@ -218,7 +230,7 @@
|
|||||||
the radius.
|
the radius.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/glow-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Generates a halo-like glow around the source component. This effect
|
\li Generates a halo-like glow around the source component. This effect
|
||||||
blurs the alpha channel of the source and colorizes it with
|
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.
|
glow can be changed using the value of the \uicontrol Spread field.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/hue-saturation-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Alters the source component colors in the HSL color space.
|
\li Alters the source component colors in the HSL color space.
|
||||||
This effect is similar to the \uicontrol Colorize effect, but
|
This effect is similar to the \uicontrol Colorize effect, but
|
||||||
@@ -239,7 +252,8 @@
|
|||||||
setting them.
|
setting them.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/inner-shadow-16px.png
|
\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
|
||||||
\li Generates a colorized and blurred shadow inside the source using
|
\li Generates a colorized and blurred shadow inside the source using
|
||||||
the color that you specify in the \uicontrol {Inner shadow color}
|
the color that you specify in the \uicontrol {Inner shadow color}
|
||||||
@@ -261,7 +275,8 @@
|
|||||||
check box.
|
check box.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/levels-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Adjusts color levels in the RGBA color space. This effect adjusts
|
\li Adjusts color levels in the RGBA color space. This effect adjusts
|
||||||
the source component colors separately for each color channel. Source
|
the source component colors separately for each color channel. Source
|
||||||
@@ -291,7 +306,8 @@
|
|||||||
value of the \uicontrol Minimum output field.
|
value of the \uicontrol Minimum output field.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/mask-blur-16px.png
|
\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
|
||||||
\li Softens the image by blurring it. The intensity of the blur can be
|
\li Softens the image by blurring it. The intensity of the blur can be
|
||||||
controlled for each pixel by specifying a \uicontrol {Mask source},
|
controlled for each pixel by specifying a \uicontrol {Mask source},
|
||||||
@@ -306,7 +322,8 @@
|
|||||||
samples produce better quality, but are slower to render.
|
samples produce better quality, but are slower to render.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/opacity-mask-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Masks the source component with another component specified in the
|
\li Masks the source component with another component specified in the
|
||||||
\uicontrol {Mask source} field. The mask component gets rendered into an
|
\uicontrol {Mask source} field. The mask component gets rendered into an
|
||||||
@@ -321,7 +338,8 @@
|
|||||||
with the mask alpha: \c {As * Am}.
|
with the mask alpha: \c {As * Am}.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/radial-blur-16px.png
|
\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
|
||||||
\li Applies a directional blur effect in a circular direction around the
|
\li Applies a directional blur effect in a circular direction around the
|
||||||
component's center point. This effect makes the source component appear
|
component's center point. This effect makes the source component appear
|
||||||
@@ -336,7 +354,8 @@
|
|||||||
samples are needed to preserve high visual quality.
|
samples are needed to preserve high visual quality.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/recursive-blur-16px.png
|
\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
|
||||||
\li Blurs repeatedly, providing a strong blur effect. This effect
|
\li Blurs repeatedly, providing a strong blur effect. This effect
|
||||||
softens the image by blurring it with an algorithm that uses a
|
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.
|
but the result is produced asynchronously and takes more time.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/threshold-16px.png
|
\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 \inlineimage ok.png
|
||||||
\li Masks the source component with another component specified by
|
\li Masks the source component with another component specified by
|
||||||
\uicontrol {Mask source}. The value of the \uicontrol Spread
|
\uicontrol {Mask source}. The value of the \uicontrol Spread
|
||||||
@@ -363,7 +383,8 @@
|
|||||||
opaque mask pixels by adding interpolated values between them.
|
opaque mask pixels by adding interpolated values between them.
|
||||||
\row
|
\row
|
||||||
\li \inlineimage icons/zoom-blur-16px.png
|
\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
|
||||||
\li Applies a directional blur effect towards source component's
|
\li Applies a directional blur effect towards source component's
|
||||||
center point. This effect makes the source component appear to be
|
center point. This effect makes the source component appear to be
|
||||||
|
@@ -392,7 +392,8 @@
|
|||||||
Typically, this component should be a shader effect with a source texture
|
Typically, this component should be a shader effect with a source texture
|
||||||
specified. You can use the effects in \uicontrol Components >
|
specified. You can use the effects in \uicontrol Components >
|
||||||
\uicontrol {Qt Quick Studio Effects} that are based on the components in the
|
\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
|
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
|
correctly, the \uicontrol {Sampler name} field is set to the source
|
||||||
|
@@ -165,8 +165,15 @@ def qdump__std____1__stack(d, value):
|
|||||||
|
|
||||||
def std_1_string_dumper(d, value):
|
def std_1_string_dumper(d, value):
|
||||||
charType = value['__l']['__data_'].dereference().type
|
charType = value['__l']['__data_'].dereference().type
|
||||||
|
D = None
|
||||||
|
|
||||||
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]
|
layoutDecider = D[0][0]
|
||||||
if not layoutDecider:
|
if not layoutDecider:
|
||||||
@@ -218,13 +225,14 @@ def std_1_string_dumper(d, value):
|
|||||||
|
|
||||||
if short_mode and location_sp:
|
if short_mode and location_sp:
|
||||||
d.putCharArrayHelper(d.extractPointer(location_sp), size,
|
d.putCharArrayHelper(d.extractPointer(location_sp), size,
|
||||||
charType, d.currentItemFormat())
|
charType, d.currentItemFormat())
|
||||||
else:
|
else:
|
||||||
d.putCharArrayHelper(location_sp.integer(),
|
d.putCharArrayHelper(location_sp.integer(),
|
||||||
size, charType, d.currentItemFormat())
|
size, charType, d.currentItemFormat())
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def qdump__std____1__string(d, value):
|
def qdump__std____1__string(d, value):
|
||||||
std_1_string_dumper(d, value)
|
std_1_string_dumper(d, value)
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -494,6 +494,11 @@ int main(int argc, char **argv)
|
|||||||
qputenv("QT_ENABLE_REGEXP_JIT", "0");
|
qputenv("QT_ENABLE_REGEXP_JIT", "0");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("GTK_THEME"))
|
||||||
|
// Work around QTCREATORBUG-28497:
|
||||||
|
// Prevent Qt's GTK3 platform theme plugin from enforcing a dark palette
|
||||||
|
qputenv("GTK_THEME", ":light");
|
||||||
|
|
||||||
#if defined(QTC_FORCE_XCB)
|
#if defined(QTC_FORCE_XCB)
|
||||||
if (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("QT_QPA_PLATFORM")) {
|
if (Utils::HostOsInfo::isLinuxHost() && !qEnvironmentVariableIsSet("QT_QPA_PLATFORM")) {
|
||||||
// Enforce XCB on Linux/Gnome, if the user didn't override via QT_QPA_PLATFORM
|
// Enforce XCB on Linux/Gnome, if the user didn't override via QT_QPA_PLATFORM
|
||||||
|
@@ -1529,7 +1529,7 @@ static QString normalizePathSegmentHelper(const QString &name)
|
|||||||
{
|
{
|
||||||
const int len = name.length();
|
const int len = name.length();
|
||||||
|
|
||||||
if (len == 0)
|
if (len == 0 || name.contains("%{"))
|
||||||
return name;
|
return name;
|
||||||
|
|
||||||
int i = len - 1;
|
int i = len - 1;
|
||||||
|
@@ -374,8 +374,10 @@ void InfoBarDisplay::update()
|
|||||||
if (infoWidgetCloseButton)
|
if (infoWidgetCloseButton)
|
||||||
hbox->addWidget(infoWidgetCloseButton);
|
hbox->addWidget(infoWidgetCloseButton);
|
||||||
} else {
|
} else {
|
||||||
infoWidgetCloseButton->setText(info.m_cancelButtonText);
|
if (infoWidgetCloseButton) {
|
||||||
hbox->addWidget(infoWidgetCloseButton);
|
infoWidgetCloseButton->setText(info.m_cancelButtonText);
|
||||||
|
hbox->addWidget(infoWidgetCloseButton);
|
||||||
|
}
|
||||||
if (infoWidgetSuppressButton)
|
if (infoWidgetSuppressButton)
|
||||||
hbox->addWidget(infoWidgetSuppressButton);
|
hbox->addWidget(infoWidgetSuppressButton);
|
||||||
}
|
}
|
||||||
|
@@ -60,8 +60,12 @@ QStringList GTestConfiguration::argumentsForTestRunner(QStringList *omitted) con
|
|||||||
}
|
}
|
||||||
|
|
||||||
const QStringList &testSets = testCases();
|
const QStringList &testSets = testCases();
|
||||||
if (!testSets.isEmpty())
|
if (!testSets.isEmpty()) {
|
||||||
arguments << "--gtest_filter=\"" + testSets.join(':') + '"';
|
if (isDebugRunMode()) // debugger does its own special quoting
|
||||||
|
arguments << "--gtest_filter=" + testSets.join(':');
|
||||||
|
else
|
||||||
|
arguments << "--gtest_filter=\"" + testSets.join(':') + '"';
|
||||||
|
}
|
||||||
|
|
||||||
auto gSettings = static_cast<GTestSettings *>(framework()->testSettings());
|
auto gSettings = static_cast<GTestSettings *>(framework()->testSettings());
|
||||||
if (!gSettings)
|
if (!gSettings)
|
||||||
|
@@ -127,7 +127,7 @@ static void checkSystemForClangdSuitability()
|
|||||||
if (ClangdSettings::hardwareFulfillsRequirements())
|
if (ClangdSettings::hardwareFulfillsRequirements())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ClangdSettings::setUseClangd(false);
|
ClangdSettings::setUseClangdAndSave(false);
|
||||||
const QString warnStr = ClangModelManagerSupport::tr("The use of clangd for the C/C++ "
|
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 "
|
"code model was disabled, because it is likely that its memory requirements "
|
||||||
"would be higher than what your system can handle.");
|
"would be higher than what your system can handle.");
|
||||||
@@ -148,7 +148,7 @@ static void checkSystemForClangdSuitability()
|
|||||||
return label;
|
return label;
|
||||||
});
|
});
|
||||||
info.addCustomButton(ClangModelManagerSupport::tr("Enable Anyway"), [clangdWarningSetting] {
|
info.addCustomButton(ClangModelManagerSupport::tr("Enable Anyway"), [clangdWarningSetting] {
|
||||||
ClangdSettings::setUseClangd(true);
|
ClangdSettings::setUseClangdAndSave(true);
|
||||||
Core::ICore::infoBar()->removeInfo(clangdWarningSetting);
|
Core::ICore::infoBar()->removeInfo(clangdWarningSetting);
|
||||||
});
|
});
|
||||||
Core::ICore::infoBar()->addInfo(info);
|
Core::ICore::infoBar()->addInfo(info);
|
||||||
@@ -517,12 +517,14 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
|
|||||||
&& currentClient->project() == docProject) {
|
&& currentClient->project() == docProject) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!docProject || docProject == project) {
|
if (docProject != project
|
||||||
if (currentClient)
|
&& (docProject || !ProjectFile::isHeader(doc->filePath()))) {
|
||||||
currentClient->closeDocument(doc);
|
continue;
|
||||||
LanguageClientManager::openDocumentWithClient(doc, client);
|
|
||||||
hasDocuments = true;
|
|
||||||
}
|
}
|
||||||
|
if (currentClient)
|
||||||
|
currentClient->closeDocument(doc);
|
||||||
|
LanguageClientManager::openDocumentWithClient(doc, client);
|
||||||
|
hasDocuments = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto it = m_queuedShadowDocuments.begin(); it != m_queuedShadowDocuments.end();) {
|
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()))
|
if (!ClangdSettings::instance().sizeIsOkay(doc->filePath()))
|
||||||
continue;
|
continue;
|
||||||
if (!ProjectExplorer::SessionManager::projectForFile(doc->filePath())) {
|
if (ProjectExplorer::SessionManager::projectForFile(doc->filePath()))
|
||||||
if (currentClient)
|
continue;
|
||||||
currentClient->closeDocument(doc);
|
if (client->project() && !ProjectFile::isHeader(doc->filePath()))
|
||||||
LanguageClientManager::openDocumentWithClient(doc, client);
|
continue;
|
||||||
}
|
if (currentClient)
|
||||||
|
currentClient->closeDocument(doc);
|
||||||
|
LanguageClientManager::openDocumentWithClient(doc, client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,7 +721,7 @@ void ClangModelManagerSupport::onEditorOpened(Core::IEditor *editor)
|
|||||||
return;
|
return;
|
||||||
if (sessionModeEnabled())
|
if (sessionModeEnabled())
|
||||||
project = nullptr;
|
project = nullptr;
|
||||||
else if (!project)
|
else if (!project && ProjectFile::isHeader(document->filePath()))
|
||||||
project = fallbackProject();
|
project = fallbackProject();
|
||||||
if (ClangdClient * const client = clientForProject(project))
|
if (ClangdClient * const client = clientForProject(project))
|
||||||
LanguageClientManager::openDocumentWithClient(textDocument, client);
|
LanguageClientManager::openDocumentWithClient(textDocument, client);
|
||||||
|
@@ -93,7 +93,7 @@ FilterDialog::FilterDialog(const Checks &checks, QWidget *parent)
|
|||||||
buttonBox,
|
buttonBox,
|
||||||
}.attachTo(this);
|
}.attachTo(this);
|
||||||
|
|
||||||
connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [&] {
|
connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, [=] {
|
||||||
const bool hasSelection = !m_view->selectionModel()->selectedRows().isEmpty();
|
const bool hasSelection = !m_view->selectionModel()->selectedRows().isEmpty();
|
||||||
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection);
|
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(hasSelection);
|
||||||
});
|
});
|
||||||
|
@@ -1621,10 +1621,24 @@ bool CMakeBuildConfiguration::fromMap(const QVariantMap &map)
|
|||||||
m_buildSystem->setInitialCMakeArguments(cmd.splitArguments());
|
m_buildSystem->setInitialCMakeArguments(cmd.splitArguments());
|
||||||
}
|
}
|
||||||
|
|
||||||
d->m_clearSystemConfigureEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY))
|
// Upgrading from Qt Creator version <9 to 9, if the build environment is set
|
||||||
.toBool();
|
// apply the specific values to the configure environment
|
||||||
|
auto settingsKey = [map](const QLatin1String &configureKey, const QLatin1String &buildKey) {
|
||||||
|
if (!map.contains(configureKey) && map.contains(buildKey))
|
||||||
|
return buildKey;
|
||||||
|
return configureKey;
|
||||||
|
};
|
||||||
|
|
||||||
|
const QLatin1String clearSystemEnvironmentKey
|
||||||
|
= settingsKey(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY),
|
||||||
|
QLatin1String(ProjectExplorer::Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY));
|
||||||
|
const QLatin1String userEnvironmentChangesKey
|
||||||
|
= settingsKey(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY),
|
||||||
|
QLatin1String(ProjectExplorer::Constants::USER_ENVIRONMENT_CHANGES_KEY));
|
||||||
|
|
||||||
|
d->m_clearSystemConfigureEnvironment = map.value(clearSystemEnvironmentKey).toBool();
|
||||||
d->m_userConfigureEnvironmentChanges = EnvironmentItem::fromStringList(
|
d->m_userConfigureEnvironmentChanges = EnvironmentItem::fromStringList(
|
||||||
map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
|
map.value(userEnvironmentChangesKey).toStringList());
|
||||||
|
|
||||||
updateAndEmitConfigureEnvironmentChanged();
|
updateAndEmitConfigureEnvironmentChanged();
|
||||||
|
|
||||||
|
@@ -96,14 +96,24 @@ Internal::PresetsData CMakeProject::combinePresets(Internal::PresetsData &cmakeP
|
|||||||
for (const auto &p : presets)
|
for (const auto &p : presets)
|
||||||
presetsHash.insert(p.name, p);
|
presetsHash.insert(p.name, p);
|
||||||
|
|
||||||
auto resolveInherits = [](const auto &presetsHash, auto &presetsList) {
|
auto resolveInherits = [](auto &presetsHash, auto &presetsList) {
|
||||||
|
Utils::sort(presetsList, [](const auto &left, const auto &right) {
|
||||||
|
if (left.inherits) {
|
||||||
|
if (left.inherits.value().contains(right.name))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
for (auto &p : presetsList) {
|
for (auto &p : presetsList) {
|
||||||
if (!p.inherits)
|
if (!p.inherits)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (const QString &inheritFromName : p.inherits.value())
|
for (const QString &inheritFromName : p.inherits.value()) {
|
||||||
if (presetsHash.contains(inheritFromName))
|
if (presetsHash.contains(inheritFromName)) {
|
||||||
p.inheritFrom(presetsHash[inheritFromName]);
|
p.inheritFrom(presetsHash[inheritFromName]);
|
||||||
|
presetsHash[p.name] = p;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -164,8 +164,8 @@ void CompilationDatabaseTests::testFilterArguments()
|
|||||||
{"RELATIVE_PLUGIN_PATH", "\"../lib/qtcreator/plugins\""},
|
{"RELATIVE_PLUGIN_PATH", "\"../lib/qtcreator/plugins\""},
|
||||||
{"QT_CREATOR", "1"}}));
|
{"QT_CREATOR", "1"}}));
|
||||||
QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource);
|
QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource);
|
||||||
QCOMPARE(testData.sysRoot.toString(), HostOsInfo::isWindowsHost() ? QString("C:\\sysroot\\embedded")
|
QCOMPARE(testData.sysRoot.toUserOutput(), HostOsInfo::isWindowsHost()
|
||||||
: QString("/opt/sysroot/embedded"));
|
? QString("C:\\sysroot\\embedded") : QString("/opt/sysroot/embedded"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString kCmakeCommand
|
static QString kCmakeCommand
|
||||||
|
@@ -752,7 +752,7 @@ void ExternalToolConfig::showInfoForItem(const QModelIndex &index)
|
|||||||
static FilePath getUserFilePath(const QString &proposalFileName)
|
static FilePath getUserFilePath(const QString &proposalFileName)
|
||||||
{
|
{
|
||||||
const FilePath resourceDir(ICore::userResourcePath());
|
const FilePath resourceDir(ICore::userResourcePath());
|
||||||
const FilePath externalToolsDir = resourceDir / "externalTools";
|
const FilePath externalToolsDir = resourceDir / "externaltools";
|
||||||
if (!externalToolsDir.isDir())
|
if (!externalToolsDir.isDir())
|
||||||
externalToolsDir.createDir();
|
externalToolsDir.createDir();
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@ int DocumentModelPrivate::rowCount(const QModelIndex &parent) const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
|
DocumentModel::Entry *DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
|
||||||
{
|
{
|
||||||
const Utils::FilePath filePath = entry->fileName();
|
const Utils::FilePath filePath = entry->fileName();
|
||||||
|
|
||||||
@@ -95,9 +95,8 @@ void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
|
|||||||
this, [this, document = previousEntry->document] { itemChanged(document); });
|
this, [this, document = previousEntry->document] { itemChanged(document); });
|
||||||
}
|
}
|
||||||
delete entry;
|
delete entry;
|
||||||
entry = nullptr;
|
|
||||||
disambiguateDisplayNames(previousEntry);
|
disambiguateDisplayNames(previousEntry);
|
||||||
return;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto positions = positionEntry(m_entries, entry);
|
auto positions = positionEntry(m_entries, entry);
|
||||||
@@ -115,6 +114,7 @@ void DocumentModelPrivate::addEntry(DocumentModel::Entry *entry)
|
|||||||
itemChanged(document);
|
itemChanged(document);
|
||||||
});
|
});
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DocumentModelPrivate::disambiguateDisplayNames(DocumentModel::Entry *entry)
|
bool DocumentModelPrivate::disambiguateDisplayNames(DocumentModel::Entry *entry)
|
||||||
@@ -411,8 +411,7 @@ DocumentModel::Entry *DocumentModelPrivate::addSuspendedDocument(const FilePath
|
|||||||
entry->document->setPreferredDisplayName(displayName);
|
entry->document->setPreferredDisplayName(displayName);
|
||||||
entry->document->setId(id);
|
entry->document->setId(id);
|
||||||
entry->isSuspended = true;
|
entry->isSuspended = true;
|
||||||
d->addEntry(entry);
|
return d->addEntry(entry);
|
||||||
return entry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DocumentModel::Entry *DocumentModelPrivate::firstSuspendedEntry()
|
DocumentModel::Entry *DocumentModelPrivate::firstSuspendedEntry()
|
||||||
|
@@ -33,7 +33,7 @@ public:
|
|||||||
Qt::DropActions supportedDragActions() const override;
|
Qt::DropActions supportedDragActions() const override;
|
||||||
QStringList mimeTypes() const override;
|
QStringList mimeTypes() const override;
|
||||||
|
|
||||||
void addEntry(DocumentModel::Entry *entry);
|
DocumentModel::Entry *addEntry(DocumentModel::Entry *entry);
|
||||||
void removeDocument(int idx);
|
void removeDocument(int idx);
|
||||||
|
|
||||||
std::optional<int> indexOfFilePath(const Utils::FilePath &filePath) const;
|
std::optional<int> indexOfFilePath(const Utils::FilePath &filePath) const;
|
||||||
|
@@ -720,7 +720,9 @@ void ICore::raiseWindow(QWidget *widget)
|
|||||||
if (!widget)
|
if (!widget)
|
||||||
return;
|
return;
|
||||||
QWidget *window = widget->window();
|
QWidget *window = widget->window();
|
||||||
if (window && window == m_mainwindow) {
|
if (!window)
|
||||||
|
return;
|
||||||
|
if (window == m_mainwindow) {
|
||||||
m_mainwindow->raiseWindow();
|
m_mainwindow->raiseWindow();
|
||||||
} else {
|
} else {
|
||||||
window->raise();
|
window->raise();
|
||||||
|
@@ -253,6 +253,12 @@ bool ClangdSettings::useClangd() const
|
|||||||
|
|
||||||
void ClangdSettings::setUseClangd(bool use) { instance().m_data.useClangd = use; }
|
void ClangdSettings::setUseClangd(bool use) { instance().m_data.useClangd = use; }
|
||||||
|
|
||||||
|
void ClangdSettings::setUseClangdAndSave(bool use)
|
||||||
|
{
|
||||||
|
setUseClangd(use);
|
||||||
|
instance().saveSettings();
|
||||||
|
}
|
||||||
|
|
||||||
bool ClangdSettings::hardwareFulfillsRequirements()
|
bool ClangdSettings::hardwareFulfillsRequirements()
|
||||||
{
|
{
|
||||||
instance().m_data.haveCheckedHardwareReqirements = true;
|
instance().m_data.haveCheckedHardwareReqirements = true;
|
||||||
|
@@ -133,6 +133,7 @@ public:
|
|||||||
static ClangdSettings &instance();
|
static ClangdSettings &instance();
|
||||||
bool useClangd() const;
|
bool useClangd() const;
|
||||||
static void setUseClangd(bool use);
|
static void setUseClangd(bool use);
|
||||||
|
static void setUseClangdAndSave(bool use);
|
||||||
|
|
||||||
static bool hardwareFulfillsRequirements();
|
static bool hardwareFulfillsRequirements();
|
||||||
static bool haveCheckedHardwareRequirements();
|
static bool haveCheckedHardwareRequirements();
|
||||||
|
@@ -161,8 +161,8 @@ void CppCodeStylePreferencesWidget::setCodeStyle(CppCodeStylePreferences *codeSt
|
|||||||
slotCurrentPreferencesChanged(currentPreferences);
|
slotCurrentPreferencesChanged(currentPreferences);
|
||||||
});
|
});
|
||||||
|
|
||||||
setTabSettings(m_preferences->tabSettings());
|
setTabSettings(m_preferences->currentTabSettings());
|
||||||
setCodeStyleSettings(m_preferences->codeStyleSettings(), false);
|
setCodeStyleSettings(m_preferences->currentCodeStyleSettings(), false);
|
||||||
slotCurrentPreferencesChanged(m_preferences->currentPreferences(), false);
|
slotCurrentPreferencesChanged(m_preferences->currentPreferences(), false);
|
||||||
|
|
||||||
updatePreview();
|
updatePreview();
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
#include "cppeditordocument.h"
|
#include "cppeditordocument.h"
|
||||||
#include "cppeditorwidget.h"
|
#include "cppeditorwidget.h"
|
||||||
#include "cppfilesettingspage.h"
|
#include "cppfilesettingspage.h"
|
||||||
#include "cpphighlighter.h"
|
|
||||||
#include "cppincludehierarchy.h"
|
#include "cppincludehierarchy.h"
|
||||||
#include "cppmodelmanager.h"
|
#include "cppmodelmanager.h"
|
||||||
#include "cppoutline.h"
|
#include "cppoutline.h"
|
||||||
@@ -261,21 +260,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
|
|||||||
connect(openInNextSplitAction, &QAction::triggered,
|
connect(openInNextSplitAction, &QAction::triggered,
|
||||||
this, [] { CppModelManager::switchHeaderSource(true); });
|
this, [] { CppModelManager::switchHeaderSource(true); });
|
||||||
|
|
||||||
QAction * const showPreprocessedAction = new QAction(tr("Show Preprocessed Source"), this);
|
|
||||||
command = ActionManager::registerAction(showPreprocessedAction,
|
|
||||||
Constants::SHOW_PREPROCESSED_FILE, context);
|
|
||||||
mcpptools->addAction(command);
|
|
||||||
connect(showPreprocessedAction, &QAction::triggered,
|
|
||||||
this, [] { CppModelManager::showPreprocessedFile(false); });
|
|
||||||
|
|
||||||
QAction * const showPreprocessedInSplitAction = new QAction
|
|
||||||
(tr("Show Preprocessed Source in Next Split"), this);
|
|
||||||
command = ActionManager::registerAction(showPreprocessedInSplitAction,
|
|
||||||
Constants::SHOW_PREPROCESSED_FILE_SPLIT, context);
|
|
||||||
mcpptools->addAction(command);
|
|
||||||
connect(showPreprocessedInSplitAction, &QAction::triggered,
|
|
||||||
this, [] { CppModelManager::showPreprocessedFile(true); });
|
|
||||||
|
|
||||||
MacroExpander *expander = globalMacroExpander();
|
MacroExpander *expander = globalMacroExpander();
|
||||||
expander->registerVariable("Cpp:LicenseTemplate",
|
expander->registerVariable("Cpp:LicenseTemplate",
|
||||||
tr("The license template."),
|
tr("The license template."),
|
||||||
@@ -316,9 +300,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
|
|||||||
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
||||||
touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION);
|
touchBar->addAction(cmd, Core::Constants::G_TOUCHBAR_NAVIGATION);
|
||||||
|
|
||||||
cmd = ActionManager::command(Constants::SHOW_PREPROCESSED_FILE);
|
|
||||||
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
|
||||||
|
|
||||||
cmd = ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR);
|
cmd = ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR);
|
||||||
cmd->setTouchBarText(tr("Follow", "text on macOS touch bar"));
|
cmd->setTouchBarText(tr("Follow", "text on macOS touch bar"));
|
||||||
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
||||||
@@ -398,6 +379,22 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
|
|||||||
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
contextMenu->addAction(cmd, Constants::G_CONTEXT_FIRST);
|
||||||
cppToolsMenu->addAction(cmd);
|
cppToolsMenu->addAction(cmd);
|
||||||
|
|
||||||
|
QAction * const showPreprocessedAction = new QAction(tr("Show Preprocessed Source"), this);
|
||||||
|
command = ActionManager::registerAction(showPreprocessedAction,
|
||||||
|
Constants::SHOW_PREPROCESSED_FILE, context);
|
||||||
|
mcpptools->addAction(command);
|
||||||
|
contextMenu->addAction(command, Constants::G_CONTEXT_FIRST);
|
||||||
|
connect(showPreprocessedAction, &QAction::triggered,
|
||||||
|
this, [] { CppModelManager::showPreprocessedFile(false); });
|
||||||
|
|
||||||
|
QAction * const showPreprocessedInSplitAction = new QAction
|
||||||
|
(tr("Show Preprocessed Source in Next Split"), this);
|
||||||
|
command = ActionManager::registerAction(showPreprocessedInSplitAction,
|
||||||
|
Constants::SHOW_PREPROCESSED_FILE_SPLIT, context);
|
||||||
|
mcpptools->addAction(command);
|
||||||
|
connect(showPreprocessedInSplitAction, &QAction::triggered,
|
||||||
|
this, [] { CppModelManager::showPreprocessedFile(true); });
|
||||||
|
|
||||||
d->m_openTypeHierarchyAction = new QAction(tr("Open Type Hierarchy"), this);
|
d->m_openTypeHierarchyAction = new QAction(tr("Open Type Hierarchy"), this);
|
||||||
cmd = ActionManager::registerAction(d->m_openTypeHierarchyAction, Constants::OPEN_TYPE_HIERARCHY, context);
|
cmd = ActionManager::registerAction(d->m_openTypeHierarchyAction, Constants::OPEN_TYPE_HIERARCHY, context);
|
||||||
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+T") : tr("Ctrl+Shift+T")));
|
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? tr("Meta+Shift+T") : tr("Ctrl+Shift+T")));
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
#include "cppeditorconstants.h"
|
#include "cppeditorconstants.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
#include <utils/filepath.h>
|
||||||
#include <utils/mimeutils.h>
|
#include <utils/mimeutils.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
@@ -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)
|
bool ProjectFile::isSource(ProjectFile::Kind kind)
|
||||||
{
|
{
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
|
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
|
namespace Utils { class FilePath; }
|
||||||
|
|
||||||
namespace CppEditor {
|
namespace CppEditor {
|
||||||
|
|
||||||
class CPPEDITOR_EXPORT ProjectFile
|
class CPPEDITOR_EXPORT ProjectFile
|
||||||
@@ -39,6 +41,7 @@ public:
|
|||||||
|
|
||||||
static bool isSource(Kind kind);
|
static bool isSource(Kind kind);
|
||||||
static bool isHeader(Kind kind);
|
static bool isHeader(Kind kind);
|
||||||
|
static bool isHeader(const Utils::FilePath &fp);
|
||||||
static bool isC(Kind kind);
|
static bool isC(Kind kind);
|
||||||
static bool isCxx(Kind kind);
|
static bool isCxx(Kind kind);
|
||||||
static bool isAmbiguousHeader(const QString &filePath);
|
static bool isAmbiguousHeader(const QString &filePath);
|
||||||
|
@@ -2871,6 +2871,56 @@ static void formatCdbBreakPointResponse(int modelId, const QString &responseId,
|
|||||||
str << '\n';
|
str << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Helper to retrieve an int child from GDBMI
|
||||||
|
static inline std::optional<int> gdbmiChildToInt(const GdbMi &parent, const char *childName)
|
||||||
|
{
|
||||||
|
const GdbMi childBA = parent[childName];
|
||||||
|
if (childBA.isValid()) {
|
||||||
|
bool ok;
|
||||||
|
const int v = childBA.data().toInt(&ok);
|
||||||
|
if (ok)
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper to retrieve an bool child from GDBMI
|
||||||
|
static inline std::optional<bool> gdbmiChildToBool(const GdbMi &parent, const char *childName)
|
||||||
|
{
|
||||||
|
const GdbMi childBA = parent[childName];
|
||||||
|
return childBA.isValid() ? std::make_optional(childBA.data() == "true") : std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse extension command listing breakpoints.
|
||||||
|
// Note that not all fields are returned, since file, line, function are encoded
|
||||||
|
// in the expression (that is in addition deleted on resolving for a bp-type breakpoint).
|
||||||
|
BreakpointParameters CdbEngine::parseBreakPoint(const GdbMi &gdbmi)
|
||||||
|
{
|
||||||
|
BreakpointParameters result;
|
||||||
|
result.enabled = gdbmiChildToBool(gdbmi, "enabled").value_or(result.enabled);
|
||||||
|
result.pending = gdbmiChildToBool(gdbmi, "deferred").value_or(result.pending);
|
||||||
|
const GdbMi moduleG = gdbmi["module"];
|
||||||
|
if (moduleG.isValid())
|
||||||
|
result.module = moduleG.data();
|
||||||
|
const GdbMi sourceFileName = gdbmi["srcfile"];
|
||||||
|
if (sourceFileName.isValid()) {
|
||||||
|
NormalizedSourceFileName mappedFile = sourceMapNormalizeFileNameFromDebugger(
|
||||||
|
sourceFileName.data());
|
||||||
|
result.fileName = Utils::FilePath::fromUserInput(mappedFile.fileName);
|
||||||
|
const GdbMi lineNumber = gdbmi["srcline"];
|
||||||
|
if (lineNumber.isValid())
|
||||||
|
result.lineNumber = lineNumber.data().toULongLong(nullptr, 0);
|
||||||
|
}
|
||||||
|
const GdbMi addressG = gdbmi["address"];
|
||||||
|
if (addressG.isValid())
|
||||||
|
result.address = addressG.data().toULongLong(nullptr, 0);
|
||||||
|
if (const std::optional<int> ignoreCount = gdbmiChildToInt(gdbmi, "passcount"))
|
||||||
|
result.ignoreCount = *ignoreCount - 1;
|
||||||
|
result.threadSpec = gdbmiChildToInt(gdbmi, "thread").value_or(result.threadSpec);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
void CdbEngine::handleBreakPoints(const DebuggerResponse &response)
|
void CdbEngine::handleBreakPoints(const DebuggerResponse &response)
|
||||||
{
|
{
|
||||||
if (debugBreakpoints) {
|
if (debugBreakpoints) {
|
||||||
@@ -2896,8 +2946,7 @@ void CdbEngine::handleBreakPoints(const DebuggerResponse &response)
|
|||||||
for (const GdbMi &breakPointG : response.data) {
|
for (const GdbMi &breakPointG : response.data) {
|
||||||
// Might not be valid if there is not id
|
// Might not be valid if there is not id
|
||||||
const QString responseId = breakPointG["id"].data();
|
const QString responseId = breakPointG["id"].data();
|
||||||
BreakpointParameters reportedResponse;
|
BreakpointParameters reportedResponse = parseBreakPoint(breakPointG);
|
||||||
parseBreakPoint(breakPointG, &reportedResponse);
|
|
||||||
if (debugBreakpoints)
|
if (debugBreakpoints)
|
||||||
qDebug(" Parsed %s: pending=%d %s\n", qPrintable(responseId),
|
qDebug(" Parsed %s: pending=%d %s\n", qPrintable(responseId),
|
||||||
reportedResponse.pending,
|
reportedResponse.pending,
|
||||||
|
@@ -168,6 +168,7 @@ private:
|
|||||||
unsigned parseStackTrace(const GdbMi &data, bool sourceStepInto);
|
unsigned parseStackTrace(const GdbMi &data, bool sourceStepInto);
|
||||||
void mergeStartParametersSourcePathMap();
|
void mergeStartParametersSourcePathMap();
|
||||||
void checkQtSdkPdbFiles(const QString &module);
|
void checkQtSdkPdbFiles(const QString &module);
|
||||||
|
BreakpointParameters parseBreakPoint(const GdbMi &gdbmi);
|
||||||
|
|
||||||
const QString m_tokenPrefix;
|
const QString m_tokenPrefix;
|
||||||
void handleSetupFailure(const QString &errorMessage);
|
void handleSetupFailure(const QString &errorMessage);
|
||||||
|
@@ -189,64 +189,6 @@ QString cdbClearBreakpointCommand(const Breakpoint &bp)
|
|||||||
return "bc " + QString::number(firstBreakPoint) + '-' + QString::number(lastBreakPoint);
|
return "bc " + QString::number(firstBreakPoint) + '-' + QString::number(lastBreakPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to retrieve an int child from GDBMI
|
|
||||||
static inline bool gdbmiChildToInt(const GdbMi &parent, const char *childName, int *target)
|
|
||||||
{
|
|
||||||
const GdbMi childBA = parent[childName];
|
|
||||||
if (childBA.isValid()) {
|
|
||||||
bool ok;
|
|
||||||
const int v = childBA.data().toInt(&ok);
|
|
||||||
if (ok) {
|
|
||||||
*target = v;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper to retrieve an bool child from GDBMI
|
|
||||||
static inline bool gdbmiChildToBool(const GdbMi &parent, const char *childName, bool *target)
|
|
||||||
{
|
|
||||||
const GdbMi childBA = parent[childName];
|
|
||||||
if (childBA.isValid()) {
|
|
||||||
*target = childBA.data() == "true";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Parse extension command listing breakpoints.
|
|
||||||
// Note that not all fields are returned, since file, line, function are encoded
|
|
||||||
// in the expression (that is in addition deleted on resolving for a bp-type breakpoint).
|
|
||||||
void parseBreakPoint(const GdbMi &gdbmi, BreakpointParameters *r,
|
|
||||||
QString *expression /* = 0 */)
|
|
||||||
{
|
|
||||||
gdbmiChildToBool(gdbmi, "enabled", &(r->enabled));
|
|
||||||
gdbmiChildToBool(gdbmi, "deferred", &(r->pending));
|
|
||||||
const GdbMi moduleG = gdbmi["module"];
|
|
||||||
if (moduleG.isValid())
|
|
||||||
r->module = moduleG.data();
|
|
||||||
const GdbMi sourceFileName = gdbmi["srcfile"];
|
|
||||||
if (sourceFileName.isValid()) {
|
|
||||||
r->fileName = Utils::FilePath::fromUserInput(
|
|
||||||
Utils::FileUtils::normalizedPathName(sourceFileName.data()));
|
|
||||||
const GdbMi lineNumber = gdbmi["srcline"];
|
|
||||||
if (lineNumber.isValid())
|
|
||||||
r->lineNumber = lineNumber.data().toULongLong(nullptr, 0);
|
|
||||||
}
|
|
||||||
if (expression) {
|
|
||||||
const GdbMi expressionG = gdbmi["expression"];
|
|
||||||
if (expressionG.isValid())
|
|
||||||
*expression = expressionG.data();
|
|
||||||
}
|
|
||||||
const GdbMi addressG = gdbmi["address"];
|
|
||||||
if (addressG.isValid())
|
|
||||||
r->address = addressG.data().toULongLong(nullptr, 0);
|
|
||||||
if (gdbmiChildToInt(gdbmi, "passcount", &(r->ignoreCount)))
|
|
||||||
r->ignoreCount--;
|
|
||||||
gdbmiChildToInt(gdbmi, "thread", &(r->threadSpec));
|
|
||||||
}
|
|
||||||
|
|
||||||
QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data)
|
QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data)
|
||||||
{
|
{
|
||||||
QString cmd;
|
QString cmd;
|
||||||
|
@@ -38,10 +38,6 @@ QString cdbAddBreakpointCommand(const BreakpointParameters &d,
|
|||||||
const QList<QPair<QString, QString> > &sourcePathMapping,
|
const QList<QPair<QString, QString> > &sourcePathMapping,
|
||||||
const QString &responseId = QString());
|
const QString &responseId = QString());
|
||||||
QString cdbClearBreakpointCommand(const Breakpoint &bp);
|
QString cdbClearBreakpointCommand(const Breakpoint &bp);
|
||||||
// Parse extension command listing breakpoints.
|
|
||||||
// Note that not all fields are returned, since file, line, function are encoded
|
|
||||||
// in the expression (that is in addition deleted on resolving for a bp-type breakpoint).
|
|
||||||
void parseBreakPoint(const GdbMi &gdbmi, BreakpointParameters *r, QString *expression = nullptr);
|
|
||||||
|
|
||||||
// Write memory (f ...).
|
// Write memory (f ...).
|
||||||
QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data);
|
QString cdbWriteMemoryCommand(quint64 addr, const QByteArray &data);
|
||||||
|
@@ -249,8 +249,18 @@ void DebuggerKitAspect::fix(Kit *k)
|
|||||||
setup(k);
|
setup(k);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const Abi tcAbi = ToolChainKitAspect::targetAbi(k);
|
|
||||||
if (item->matchTarget(tcAbi) != DebuggerItem::DoesNotMatch)
|
Abi kitAbi;
|
||||||
|
if (ToolChainKitAspect::toolChains(k).isEmpty()) {
|
||||||
|
if (DeviceTypeKitAspect::deviceTypeId(k)
|
||||||
|
!= ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
kitAbi = Abi(Abi::UnknownArchitecture, Abi::hostAbi().os());
|
||||||
|
} else {
|
||||||
|
kitAbi = ToolChainKitAspect::targetAbi(k);
|
||||||
|
}
|
||||||
|
if (item->matchTarget(kitAbi) != DebuggerItem::DoesNotMatch)
|
||||||
return;
|
return;
|
||||||
k->setValue(DebuggerKitAspect::id(), QVariant());
|
k->setValue(DebuggerKitAspect::id(), QVariant());
|
||||||
setup(k);
|
setup(k);
|
||||||
|
@@ -268,6 +268,7 @@ void ThreadsHandler::setCurrentThread(const Thread &thread)
|
|||||||
|
|
||||||
m_currentThread = thread;
|
m_currentThread = thread;
|
||||||
thread->update();
|
thread->update();
|
||||||
|
threadSwitcher()->setCurrentIndex(thread->index().row());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThreadsHandler::notifyGroupCreated(const QString &groupId, const QString &pid)
|
void ThreadsHandler::notifyGroupCreated(const QString &groupId, const QString &pid)
|
||||||
|
@@ -221,8 +221,14 @@ CommandLine DockerProcessImpl::fullLocalCommandLine(bool interactive)
|
|||||||
QStringList args;
|
QStringList args;
|
||||||
|
|
||||||
if (!m_setup.m_workingDirectory.isEmpty()) {
|
if (!m_setup.m_workingDirectory.isEmpty()) {
|
||||||
QTC_CHECK(DeviceManager::deviceForPath(m_setup.m_workingDirectory) == m_device);
|
FilePath workingDir = m_setup.m_workingDirectory;
|
||||||
args.append({"cd", m_setup.m_workingDirectory.path()});
|
|
||||||
|
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("&&");
|
args.append("&&");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -419,7 +419,7 @@ void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *doc
|
|||||||
client->openDocument(document);
|
client->openDocument(document);
|
||||||
else
|
else
|
||||||
client->activateDocument(document);
|
client->activateDocument(document);
|
||||||
} else if (Core::EditorManager::currentEditor()->document() == document) {
|
} else if (Core::EditorManager::currentDocument() == document) {
|
||||||
TextEditor::IOutlineWidgetFactory::updateOutline();
|
TextEditor::IOutlineWidgetFactory::updateOutline();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1050_evk_freertos_json = R"(
|
|||||||
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
||||||
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake",
|
"defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
|
@@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1064_evk_freertos_json = R"(
|
|||||||
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
||||||
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake",
|
"defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
|
@@ -63,7 +63,7 @@ constexpr auto armgcc_mimxrt1170_evk_freertos_json = R"(
|
|||||||
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
||||||
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake",
|
"defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
|
@@ -62,7 +62,7 @@ constexpr auto armgcc_stm32f769i_discovery_freertos_json = R"(
|
|||||||
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
||||||
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake",
|
"defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
|
@@ -62,7 +62,7 @@ constexpr auto armgcc_stm32h750b_discovery_baremetal_json = R"(
|
|||||||
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
"id": "ARMGCC_CMAKE_TOOLCHAIN_FILE",
|
||||||
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
"cmakeVar": "CMAKE_TOOLCHAIN_FILE",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"defaultValue": "%{Qul_ROOT}//lib/cmake/Qul/toolchain/armgcc.cmake",
|
"defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/armgcc.cmake",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"optional": false
|
"optional": false
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,7 @@ namespace PerfProfiler {
|
|||||||
class PERFPROFILER_EXPORT PerfRunConfigurationAspect :
|
class PERFPROFILER_EXPORT PerfRunConfigurationAspect :
|
||||||
public ProjectExplorer::GlobalOrProjectAspect
|
public ProjectExplorer::GlobalOrProjectAspect
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
PerfRunConfigurationAspect(ProjectExplorer::Target *target);
|
PerfRunConfigurationAspect(ProjectExplorer::Target *target);
|
||||||
};
|
};
|
||||||
|
@@ -46,8 +46,6 @@ using namespace Utils;
|
|||||||
|
|
||||||
const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount";
|
const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration.BuildStepListCount";
|
||||||
const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList.";
|
const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList.";
|
||||||
const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment";
|
|
||||||
const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges";
|
|
||||||
const char CUSTOM_PARSERS_KEY[] = "ProjectExplorer.BuildConfiguration.CustomParsers";
|
const char CUSTOM_PARSERS_KEY[] = "ProjectExplorer.BuildConfiguration.CustomParsers";
|
||||||
const char PARSE_STD_OUT_KEY[] = "ProjectExplorer.BuildConfiguration.ParseStandardOutput";
|
const char PARSE_STD_OUT_KEY[] = "ProjectExplorer.BuildConfiguration.ParseStandardOutput";
|
||||||
|
|
||||||
@@ -378,8 +376,9 @@ QVariantMap BuildConfiguration::toMap() const
|
|||||||
{
|
{
|
||||||
QVariantMap map = ProjectConfiguration::toMap();
|
QVariantMap map = ProjectConfiguration::toMap();
|
||||||
|
|
||||||
map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment);
|
map.insert(QLatin1String(Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment);
|
||||||
map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), EnvironmentItem::toStringList(d->m_userEnvironmentChanges));
|
map.insert(QLatin1String(Constants::USER_ENVIRONMENT_CHANGES_KEY),
|
||||||
|
EnvironmentItem::toStringList(d->m_userEnvironmentChanges));
|
||||||
|
|
||||||
map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), 2);
|
map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), 2);
|
||||||
map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(0), d->m_buildSteps.toMap());
|
map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(0), d->m_buildSteps.toMap());
|
||||||
@@ -393,8 +392,10 @@ QVariantMap BuildConfiguration::toMap() const
|
|||||||
|
|
||||||
bool BuildConfiguration::fromMap(const QVariantMap &map)
|
bool BuildConfiguration::fromMap(const QVariantMap &map)
|
||||||
{
|
{
|
||||||
d->m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool();
|
d->m_clearSystemEnvironment = map.value(QLatin1String(Constants::CLEAR_SYSTEM_ENVIRONMENT_KEY))
|
||||||
d->m_userEnvironmentChanges = EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
|
.toBool();
|
||||||
|
d->m_userEnvironmentChanges = EnvironmentItem::fromStringList(
|
||||||
|
map.value(QLatin1String(Constants::USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
|
||||||
|
|
||||||
updateCacheAndEmitEnvironmentChanged();
|
updateCacheAndEmitEnvironmentChanged();
|
||||||
|
|
||||||
|
@@ -480,7 +480,8 @@ JsonWizardFactory *JsonWizardFactory::createWizardFactory(const QVariantMap &dat
|
|||||||
if (!factory->initialize(data, baseDir, errorMessage)) {
|
if (!factory->initialize(data, baseDir, errorMessage)) {
|
||||||
delete factory;
|
delete factory;
|
||||||
factory = nullptr;
|
factory = nullptr;
|
||||||
Core::MessageManager::writeDisrupting(*errorMessage);
|
if (verbose())
|
||||||
|
Core::MessageManager::writeDisrupting(*errorMessage);
|
||||||
}
|
}
|
||||||
return factory;
|
return factory;
|
||||||
}
|
}
|
||||||
|
@@ -4175,6 +4175,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu()
|
|||||||
auto *ag = new QActionGroup(m_sessionMenu);
|
auto *ag = new QActionGroup(m_sessionMenu);
|
||||||
connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPluginPrivate::setSession);
|
connect(ag, &QActionGroup::triggered, this, &ProjectExplorerPluginPrivate::setSession);
|
||||||
const QString activeSession = SessionManager::activeSession();
|
const QString activeSession = SessionManager::activeSession();
|
||||||
|
const bool isDefaultVirgin = SessionManager::isDefaultVirgin();
|
||||||
|
|
||||||
QStringList sessions = SessionManager::sessions();
|
QStringList sessions = SessionManager::sessions();
|
||||||
std::sort(std::next(sessions.begin()), sessions.end(), [](const QString &s1, const QString &s2) {
|
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);
|
QAction *act = ag->addAction(actionText);
|
||||||
act->setData(session);
|
act->setData(session);
|
||||||
act->setCheckable(true);
|
act->setCheckable(true);
|
||||||
if (session == activeSession)
|
if (session == activeSession && !isDefaultVirgin)
|
||||||
act->setChecked(true);
|
act->setChecked(true);
|
||||||
}
|
}
|
||||||
m_sessionMenu->addActions(ag->actions());
|
m_sessionMenu->addActions(ag->actions());
|
||||||
@@ -4198,9 +4199,7 @@ void ProjectExplorerPluginPrivate::updateSessionMenu()
|
|||||||
|
|
||||||
void ProjectExplorerPluginPrivate::setSession(QAction *action)
|
void ProjectExplorerPluginPrivate::setSession(QAction *action)
|
||||||
{
|
{
|
||||||
QString session = action->data().toString();
|
SessionManager::loadSession(action->data().toString());
|
||||||
if (session != SessionManager::activeSession())
|
|
||||||
SessionManager::loadSession(session);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::setProjectExplorerSettings(const ProjectExplorerSettings &pes)
|
void ProjectExplorerPlugin::setProjectExplorerSettings(const ProjectExplorerSettings &pes)
|
||||||
|
@@ -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_DEBUG[] = "Menu/HideDebug";
|
||||||
const char SETTINGS_MENU_HIDE_ANALYZE[] = "Menu/HideAnalyze";
|
const char SETTINGS_MENU_HIDE_ANALYZE[] = "Menu/HideAnalyze";
|
||||||
const char SESSION_TASKFILE_KEY[] = "TaskList.File";
|
const char SESSION_TASKFILE_KEY[] = "TaskList.File";
|
||||||
|
const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment";
|
||||||
|
const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges";
|
||||||
|
|
||||||
// UI texts
|
// UI texts
|
||||||
PROJECTEXPLORER_EXPORT QString msgAutoDetected();
|
PROJECTEXPLORER_EXPORT QString msgAutoDetected();
|
||||||
|
@@ -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}"
|
execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" "${build_dir}/${name}"
|
||||||
WORKING_DIRECTORY "${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}"
|
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})
|
add_subdirectory(${source_dir}/${name}/${source_subdir} ${name})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -92,7 +92,7 @@ void SquishXmlOutputHandler::mergeResultFiles(const Utils::FilePaths &reportFile
|
|||||||
// and finally write test tag (case name) - the prolog tag (for test case)
|
// and finally write test tag (case name) - the prolog tag (for test case)
|
||||||
// will be written outside the if
|
// will be written outside the if
|
||||||
const QXmlStreamAttributes testAttributes = reader.attributes();
|
const QXmlStreamAttributes testAttributes = reader.attributes();
|
||||||
QXmlStreamReader::TokenType token;
|
QXmlStreamReader::TokenType token = QXmlStreamReader::NoToken;
|
||||||
while (!reader.atEnd()) {
|
while (!reader.atEnd()) {
|
||||||
token = reader.readNext();
|
token = reader.readNext();
|
||||||
if (token != QXmlStreamReader::Characters)
|
if (token != QXmlStreamReader::Characters)
|
||||||
|
@@ -5887,7 +5887,7 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
|
|||||||
{
|
{
|
||||||
QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y()));
|
QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y()));
|
||||||
|
|
||||||
int markWidth;
|
int markWidth = 0;
|
||||||
extraAreaWidth(&markWidth);
|
extraAreaWidth(&markWidth);
|
||||||
const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0;
|
const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0;
|
||||||
|
|
||||||
|
@@ -124,14 +124,13 @@ void UpdateInfoPlugin::startCheckForUpdates()
|
|||||||
return; // do not trigger while update task is already running
|
return; // do not trigger while update task is already running
|
||||||
|
|
||||||
QFutureInterface<void> futureIf;
|
QFutureInterface<void> futureIf;
|
||||||
FutureProgress *futureProgress
|
d->m_progress = ProgressManager::addTimedTask(futureIf,
|
||||||
= ProgressManager::addTimedTask(futureIf,
|
tr("Checking for Updates"),
|
||||||
tr("Checking for Updates"),
|
Id("UpdateInfo.CheckingForUpdates"),
|
||||||
Id("UpdateInfo.CheckingForUpdates"),
|
60);
|
||||||
60);
|
d->m_progress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction);
|
||||||
futureProgress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction);
|
d->m_progress->setSubtitleVisibleInStatusBar(true);
|
||||||
futureProgress->setSubtitleVisibleInStatusBar(true);
|
connect(d->m_progress, &FutureProgress::canceled, this, [this, futureIf]() mutable {
|
||||||
connect(futureProgress, &FutureProgress::canceled, this, [this, futureIf]() mutable {
|
|
||||||
futureIf.reportCanceled();
|
futureIf.reportCanceled();
|
||||||
futureIf.reportFinished();
|
futureIf.reportFinished();
|
||||||
stopCheckForUpdates();
|
stopCheckForUpdates();
|
||||||
|
@@ -4061,15 +4061,15 @@ void tst_Dumpers::dumper_data()
|
|||||||
+ Check("list.0", "[0]", "1", "int")
|
+ Check("list.0", "[0]", "1", "int")
|
||||||
+ Check("list.1", "[1]", "2", "int")
|
+ Check("list.1", "[1]", "2", "int")
|
||||||
+ Check("list.2", "[2]", "3", "int")
|
+ Check("list.2", "[2]", "3", "int")
|
||||||
+ Check("v3", "", "@QVariant (@QList<int>)") % Qt5
|
+ Check("v3", "", "@QVariant (@QList<int>)") % NeedsInferiorCall % Qt5
|
||||||
+ Check("v3.data", "<3 items>", TypePattern(".*QList<int>")) % NeedsInferiorCall % Qt5
|
+ Check("v3.data", "<3 items>", TypePattern(".*QList<int>")) % NeedsInferiorCall % Qt5
|
||||||
+ Check("v3.data.0", "[0]", "1", "int") % NeedsInferiorCall % Qt5
|
+ Check("v3.data.0", "[0]", "1", "int") % NeedsInferiorCall % Qt5
|
||||||
+ Check("v3.data.1", "[1]", "2", "int") % NeedsInferiorCall % Qt5
|
+ Check("v3.data.1", "[1]", "2", "int") % NeedsInferiorCall % Qt5
|
||||||
+ Check("v3.data.2", "[2]", "3", "int") % NeedsInferiorCall % Qt5
|
+ Check("v3.data.2", "[2]", "3", "int") % NeedsInferiorCall % Qt5
|
||||||
+ Check("v3", "<3 items>", "@QVariant (@QList<int>)") % Qt6
|
+ Check("v3", "<3 items>", "@QVariant (@QList<int>)") % Qt6
|
||||||
+ Check("v3.0", "[0]", "1", "int") % NeedsInferiorCall % Qt6
|
+ Check("v3.0", "[0]", "1", "int") % Qt6
|
||||||
+ Check("v3.1", "[1]", "2", "int") % NeedsInferiorCall % Qt6
|
+ Check("v3.1", "[1]", "2", "int") % Qt6
|
||||||
+ Check("v3.2", "[2]", "3", "int") % NeedsInferiorCall % Qt6;
|
+ Check("v3.2", "[2]", "3", "int") % Qt6;
|
||||||
|
|
||||||
|
|
||||||
QTest::newRow("QVariant2")
|
QTest::newRow("QVariant2")
|
||||||
|
@@ -115,6 +115,14 @@ void tst_gdb::version_data()
|
|||||||
QTest::newRow("Debian 7.12 git")
|
QTest::newRow("Debian 7.12 git")
|
||||||
<< "GNU gdb (Debian 7.12-6) 7.12.0.20161007-git"
|
<< "GNU gdb (Debian 7.12-6) 7.12.0.20161007-git"
|
||||||
<< 71200 << 6 << false << false;
|
<< 71200 << 6 << false << false;
|
||||||
|
|
||||||
|
QTest::newRow("Debian 10.1 git")
|
||||||
|
<< "GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git"
|
||||||
|
<< 100100 << 1 << false << false;
|
||||||
|
|
||||||
|
QTest::newRow("Ubuntu 22.04")
|
||||||
|
<< "GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1"
|
||||||
|
<< 120100 << 0 << false << false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString chopConst(QString type)
|
static QString chopConst(QString type)
|
||||||
|
@@ -43,7 +43,7 @@ function(download_jdk)
|
|||||||
|
|
||||||
message("Downloading: ${jdk_url}")
|
message("Downloading: ${jdk_url}")
|
||||||
file(DOWNLOAD ${jdk_url} ./jdk.zip SHOW_PROGRESS)
|
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()
|
endfunction()
|
||||||
|
|
||||||
function(download_android_commandline)
|
function(download_android_commandline)
|
||||||
@@ -61,7 +61,7 @@ function(download_android_commandline)
|
|||||||
file(DOWNLOAD ${android_cmdtools_url} ./android_commandline_tools.zip SHOW_PROGRESS)
|
file(DOWNLOAD ${android_cmdtools_url} ./android_commandline_tools.zip SHOW_PROGRESS)
|
||||||
file(MAKE_DIRECTORY android-sdk)
|
file(MAKE_DIRECTORY android-sdk)
|
||||||
file(MAKE_DIRECTORY android-cmdlinetools)
|
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()
|
endfunction()
|
||||||
|
|
||||||
function(setup_android)
|
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")
|
file(WRITE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt "y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n")
|
||||||
execute_process(
|
execute_process(
|
||||||
INPUT_FILE ${CMAKE_CURRENT_LIST_DIR}/accept_license.txt
|
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(
|
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(
|
execute_process(
|
||||||
COMMAND ${sdkmanager}
|
COMMAND ${sdkmanager}
|
||||||
"platforms;${ANDROID_PLATFORM}"
|
"platforms;${ANDROID_PLATFORM}"
|
||||||
@@ -90,13 +92,15 @@ function(setup_android)
|
|||||||
"cmdline-tools;latest"
|
"cmdline-tools;latest"
|
||||||
"tools"
|
"tools"
|
||||||
"emulator"
|
"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)
|
if (WIN32)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${sdkmanager}
|
COMMAND ${sdkmanager}
|
||||||
"extras;google;usb_driver"
|
"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()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user