diff options
135 files changed, 675 insertions, 356 deletions
@@ -149,6 +149,16 @@ like Qt and LLVM, additionally run cmake --install . --prefix /path/to/qtcreator_install --component Dependencies +### Performance Analyzer + +If you have not installed Qt with the Maintenance Tool, you must +either set the path to the `perfparser` executable as a value of +the `PERFPROFILER_PARSER_FILEPATH` environment variable or copy +the executable to from the Qt Creator installation directory to +the build directory. That is, copy it from +`/path/to/qtcreator_install/Tools/QtCreator/libexec/qtcreator/` to +/path/to/qtcreator_buid/libexec/qtcreator/`. + ## Getting LLVM/Clang for the Clang Code Model The Clang code model uses `Clangd` and the ClangFormat plugin depends on the diff --git a/coin/instructions/build.yaml b/coin/instructions/build.yaml index f9219f1dd3..a4bd50a059 100644 --- a/coin/instructions/build.yaml +++ b/coin/instructions/build.yaml @@ -148,7 +148,7 @@ instructions: equals_value: Windows - type: UploadArtifact - archiveDirectory: "{{.AgentWorkingDir}}" + archiveDirectory: "{{.AgentWorkingDir}}/qt-creator/qt-creator_build/build" transferType: UploadModuleBuildArtifact maxTimeInSeconds: 1800 maxTimeBetweenOutput: 1800 diff --git a/coin/instructions/test.yaml b/coin/instructions/test.yaml index 1cbd4fd16d..26b211d1ef 100644 --- a/coin/instructions/test.yaml +++ b/coin/instructions/test.yaml @@ -1,5 +1,11 @@ type: Group instructions: + - type: InstallBinaryArchive + relativeStoragePath: "{{.Env.MODULE_ARTIFACTS_RELATIVE_STORAGE_PATH}}/artifacts.tar.gz" + directory: "qt-creator/qt-creator_build/build" + maxTimeInSeconds: 1800 + maxTimeBetweenOutput: 1800 + userMessageOnFailure: "Failed to unarchive build artifacts, check logs" - type: ChangeDirectory directory: "{{.AgentWorkingDir}}/qt-creator/qt-creator_build/build" - type: ExecuteCommand diff --git a/coin/module_config.yaml b/coin/module_config.yaml index 3bd2ef9113..96428853f2 100644 --- a/coin/module_config.yaml +++ b/coin/module_config.yaml @@ -66,6 +66,7 @@ make_instructions: &make_instructions test_instructions: &test_instructions type: Group instructions: + - !include "{{qt-creator/qt-creator}}/provision.yaml" - !include "{{qt-creator/qt-creator}}/test.yaml" instructions: @@ -74,6 +75,7 @@ instructions: - *make_instructions Test: + - *common_environment - *test_instructions LicenseCheck: diff --git a/doc/qtcreator/images/qml-toolbar-image.png b/doc/qtcreator/images/qml-toolbar-image.png Binary files differindex 75cb2b4417..21fafda65b 100644 --- a/doc/qtcreator/images/qml-toolbar-image.png +++ b/doc/qtcreator/images/qml-toolbar-image.png diff --git a/doc/qtcreator/images/qtcreator-android-create-template.png b/doc/qtcreator/images/qtcreator-android-create-template.png Binary files differnew file mode 100644 index 0000000000..75436a093f --- /dev/null +++ b/doc/qtcreator/images/qtcreator-android-create-template.png diff --git a/doc/qtcreator/images/qtcreator-custom-parser.png b/doc/qtcreator/images/qtcreator-custom-parser.png Binary files differindex 0b25f92972..2ef7813630 100644 --- a/doc/qtcreator/images/qtcreator-custom-parser.png +++ b/doc/qtcreator/images/qtcreator-custom-parser.png diff --git a/doc/qtcreator/images/qtcreator-docker-image-selection.png b/doc/qtcreator/images/qtcreator-docker-image-selection.png Binary files differnew file mode 100644 index 0000000000..72401c2f32 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-docker-image-selection.png diff --git a/doc/qtcreator/images/qtcreator-docker-preferences.png b/doc/qtcreator/images/qtcreator-docker-preferences.png Binary files differnew file mode 100644 index 0000000000..0b08720177 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-docker-preferences.png diff --git a/doc/qtcreator/images/qtcreator-editor-settings.png b/doc/qtcreator/images/qtcreator-editor-settings.png Binary files differindex 2ad6d12e21..7b2c3ecb69 100644 --- a/doc/qtcreator/images/qtcreator-editor-settings.png +++ b/doc/qtcreator/images/qtcreator-editor-settings.png diff --git a/doc/qtcreator/images/qtcreator-formedit.png b/doc/qtcreator/images/qtcreator-formedit.png Binary files differindex 4ac5720b64..af25d8b5e8 100644 --- a/doc/qtcreator/images/qtcreator-formedit.png +++ b/doc/qtcreator/images/qtcreator-formedit.png diff --git a/doc/qtcreator/images/qtcreator-options-text-editor-display.png b/doc/qtcreator/images/qtcreator-options-text-editor-display.png Binary files differindex d49884ae62..c00104e3b6 100644 --- a/doc/qtcreator/images/qtcreator-options-text-editor-display.png +++ b/doc/qtcreator/images/qtcreator-options-text-editor-display.png diff --git a/doc/qtcreator/images/qtcreator-qml-js-editing.png b/doc/qtcreator/images/qtcreator-qml-js-editing.png Binary files differnew file mode 100644 index 0000000000..731c97f1c2 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-qml-js-editing.png diff --git a/doc/qtcreator/images/qtcreator-refactoring-options-locations.png b/doc/qtcreator/images/qtcreator-refactoring-options-locations.png Binary files differindex 9e0dc13066..0d3b2c54f4 100644 --- a/doc/qtcreator/images/qtcreator-refactoring-options-locations.png +++ b/doc/qtcreator/images/qtcreator-refactoring-options-locations.png diff --git a/doc/qtcreator/images/qtcreator-semanticerror-clang.png b/doc/qtcreator/images/qtcreator-semanticerror-clang.png Binary files differdeleted file mode 100644 index 9980485832..0000000000 --- a/doc/qtcreator/images/qtcreator-semanticerror-clang.png +++ /dev/null diff --git a/doc/qtcreator/images/qtcreator-semanticerror.png b/doc/qtcreator/images/qtcreator-semanticerror.png Binary files differindex e6920b98ca..72edb4744c 100644 --- a/doc/qtcreator/images/qtcreator-semanticerror.png +++ b/doc/qtcreator/images/qtcreator-semanticerror.png diff --git a/doc/qtcreator/images/qtcreator-syntaxerror-clang.png b/doc/qtcreator/images/qtcreator-syntaxerror-clang.png Binary files differdeleted file mode 100644 index 8beee1832f..0000000000 --- a/doc/qtcreator/images/qtcreator-syntaxerror-clang.png +++ /dev/null diff --git a/doc/qtcreator/images/qtcreator-syntaxerror.png b/doc/qtcreator/images/qtcreator-syntaxerror.png Binary files differindex 2f8916ce3b..1561ef7ac2 100644 --- a/doc/qtcreator/images/qtcreator-syntaxerror.png +++ b/doc/qtcreator/images/qtcreator-syntaxerror.png diff --git a/doc/qtcreator/images/qtcreator-typo-clang.png b/doc/qtcreator/images/qtcreator-typo-clang.png Binary files differindex 3e3ad7daea..76722d658e 100644 --- a/doc/qtcreator/images/qtcreator-typo-clang.png +++ b/doc/qtcreator/images/qtcreator-typo-clang.png diff --git a/doc/qtcreator/images/qtdesigner-add-profile.png b/doc/qtcreator/images/qtdesigner-add-profile.png Binary files differnew file mode 100644 index 0000000000..7457872a19 --- /dev/null +++ b/doc/qtcreator/images/qtdesigner-add-profile.png diff --git a/doc/qtcreator/images/qtdesigner-embedded-design.png b/doc/qtcreator/images/qtdesigner-embedded-design.png Binary files differnew file mode 100644 index 0000000000..7dac5128d6 --- /dev/null +++ b/doc/qtcreator/images/qtdesigner-embedded-design.png diff --git a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc index bc13255408..6244e3f5b2 100644 --- a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -471,14 +471,23 @@ The Performance Analyzer might fail to record data for the following reasons: - \list 1 - \li Perf events may be globally disabled on your system. The - preconfigured \l Boot2Qt images come with perf events enabled. For - a custom configuration you need to make sure that the file + \list + \li Perf events may be globally disabled on your system. + The preconfigured \l Boot2Qt images come with perf events enabled. + For a custom configuration you need to make sure that the file \c {/proc/sys/kernel/perf_event_paranoid} contains a value smaller than \c {2}. For maximum flexibility in recording traces you can set the value to \c {-1}. This allows any user to record any kind of trace, even using raw kernel trace points. + + The way to enable Perf events depends on your Linux distribution. + On some distributions, you can run the following command with + root (or equivalent) privileges: + + \badcode + echo -e "kernel.perf_event_paranoid=-1\nkernel.kptr_restrict=0" | sudo tee /etc/sysctl.d/10-perf.conf + \endcode + \li The connection between the target device and the host may not be fast enough to transfer the data produced by Perf. Try modifying the values of the \uicontrol {Stack snapshot size} or @@ -501,8 +510,21 @@ drives the sampling from software. After the sampling has failed, reboot the device. The kernel may have disabled important parts of the performance counters system. + \li Perf might not be installed. The way to install it depends on your + Linux distribution. For example, you might try the following + commands: + + \list + \li On Ubuntu 22.04: + \c {sudo apt install linux-tools-$(uname -r)} + \li On Debian: + \c {apt install linux-perf} + \endlist \endlist Output from the helper program that processes the data is displayed in \l{Viewing Output}{General Messages}. + + Some information is displayed in \l {Application Output} even if the + Performance Analyzer displays error messages. */ diff --git a/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc b/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc index 0d934bf977..da2f197bf4 100644 --- a/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc @@ -135,7 +135,7 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Analyzer > \uicontrol {Clang Tools}. - \image qtcreator-clang-tools-options.png "Clang Tools options tab" + \image qtcreator-clang-tools-options.png "Clang Tools preferences" \li In the \uicontrol Clang-Tidy and \uicontrol Clazy-Standalone fields, set the paths to the executables to use. diff --git a/doc/qtcreator/src/analyze/creator-coco.qdoc b/doc/qtcreator/src/analyze/creator-coco.qdoc index 57c41a0c80..4f74832e4b 100644 --- a/doc/qtcreator/src/analyze/creator-coco.qdoc +++ b/doc/qtcreator/src/analyze/creator-coco.qdoc @@ -98,8 +98,8 @@ \section1 Changing Fonts and Colors - To change the default fonts and colors, select \uicontrol Tools > - \uicontrol Options > \uicontrol {Text Editor} > \uicontrol {Font & Colors}. + To change the default fonts and colors, select \uicontrol Edit > + \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol {Font & Colors}. Create your own color scheme and select new fonts and colors for the following results: diff --git a/doc/qtcreator/src/analyze/creator-valgrind-overview.qdoc b/doc/qtcreator/src/analyze/creator-valgrind-overview.qdoc index 0692f3f6b2..1a5e72e5b8 100644 --- a/doc/qtcreator/src/analyze/creator-valgrind-overview.qdoc +++ b/doc/qtcreator/src/analyze/creator-valgrind-overview.qdoc @@ -58,7 +58,7 @@ For more information about analyzing applications for which you do not have a project, see \l{Running Valgrind Tools on External Applications}. - To select options for the Valgrind tools, select \uicontrol Edit > + To set preferences for the Valgrind tools, select \uicontrol Edit > \uicontrol Preferences > \uicontrol Analyzer. You can override the general settings for each project in the \uicontrol {Run Settings} for the project. diff --git a/doc/qtcreator/src/android/androiddev.qdoc b/doc/qtcreator/src/android/androiddev.qdoc index e8f14c8602..06fb49c39b 100644 --- a/doc/qtcreator/src/android/androiddev.qdoc +++ b/doc/qtcreator/src/android/androiddev.qdoc @@ -84,7 +84,7 @@ \uicontrol Android on Windows and Linux or \uicontrol {\QC} > \uicontrol Preferences > \uicontrol Devices > \uicontrol Android on \macos. - \image qtcreator-options-android-main.png "Android options" + \image qtcreator-options-android-main.png "Android preferences" \li In the \uicontrol {JDK location} field, set the path to the JDK. \QC checks the JDK installation and reports errors. @@ -94,7 +94,7 @@ \inlineimage icons/online.png to open the JDK download web page in the default browser. - \note We recommended using a 64-bit JDK, because the 32-bit one + \note We recommended using a 64-bit JDK because the 32-bit one might cause issues with \c cmdline-tools, and some packages might not be listed. \li In the \uicontrol {Android SDK location} field, set the path to the @@ -130,7 +130,7 @@ \section2 Manual Setup \note We recommend that you use the latest Android SDK Command-Line Tools. - Using Android SDK Tools version 25.2.5 or earlier is not supported, because + Using Android SDK Tools version 25.2.5 or earlier is not supported because they cannot be fully integrated with \QC. However, if the automatic setup does not meet your needs, you can download diff --git a/doc/qtcreator/src/android/deploying-android.qdoc b/doc/qtcreator/src/android/deploying-android.qdoc index bc52fb782d..fc5e8d790f 100644 --- a/doc/qtcreator/src/android/deploying-android.qdoc +++ b/doc/qtcreator/src/android/deploying-android.qdoc @@ -161,7 +161,7 @@ \section3 Building AABs - For testing the application locally, use the APK format, because + For testing the application locally, use the APK format because the package can be uploaded directly to the device and run. For distribution to the Google Play store, create an AAB by selecting the \uicontrol {Build Android App Bundle (*.aab)} check box. @@ -185,7 +185,7 @@ verify that the future versions of your application are actually created by you. - \warning Keep the key pair in a safe place and take back up copies, because + \warning Keep the key pair in a safe place and take back up copies because you cannot update the application if you lose the key pair. You can use \QC to generate a keystore and a \e {self-signed} certificate. @@ -461,6 +461,16 @@ \li Select \uicontrol Projects > \uicontrol Build > \uicontrol {Build Android APK} > \uicontrol {Create Templates}. + \li Check the path in \uicontrol {Android package source directory}. + + \image qtcreator-android-create-template.png "Create Template dialog" + + \li Select \uicontrol {Copy the Gradle files to Android directory} if you + plan to extend the Java part of your Qt application. + + \li Select \uicontrol Finish to copy the template files to the \c android + directory and to open the manifest file for editing. + \li In the \uicontrol {Package name} field, enter a valid \l{Package Names}{package name} for the application. For example, \c {org.example.myapplication}. diff --git a/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc b/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc index c6e7310517..bededd32d4 100644 --- a/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc +++ b/doc/qtcreator/src/baremetal/creator-baremetal-dev.qdoc @@ -61,7 +61,7 @@ \endlist The bare metal device type accepts custom GDB commands that you specify in - the device options. You can specify the commands to execute when connecting + the device preferences. You can specify the commands to execute when connecting using a particular debug server provider. The following debug server providers are supported when using GDB: @@ -101,7 +101,7 @@ \l{https://github.com/EmBitz/EBlink}{EBlink} is an ARM Cortex-M debug tool that supports squirrel scripting, live variables, and hot-plugging. - \image qtcreator-baremetal-eblink.png "Bare metal device options for EBlink" + \image qtcreator-baremetal-eblink.png "Bare metal device preferences for EBlink" To specify settings for \EBlink: @@ -138,7 +138,7 @@ \l{https://www.segger.com/products/debug-probes/j-link/}{J-Link} is a line of debug probes by Segger. - \image qtcreator-baremetal-jlink.png "Bare metal device options for J-Link" + \image qtcreator-baremetal-jlink.png "Bare metal device preferences for J-Link" To specify settings for J-Link debug probes: @@ -170,7 +170,7 @@ (JTAG) facility. It enables source level debugging with the GDB compiled for the ARM architecture. - \image qtcreator-baremetal-openocd.png "Bare metal device options for OpenOCD" + \image qtcreator-baremetal-openocd.png "Bare metal device preferences for OpenOCD" To specify settings for \OpenOCD: @@ -196,7 +196,7 @@ \l{https://www.st.com/en/development-tools/stm32-programmers.html#products} {ST-LINK Utility} is used for programming STM32 microcontrollers. - \image qtcreator-baremetal-stlink.png "Bare metal device options for St-Link" + \image qtcreator-baremetal-stlink.png "Bare metal device preferences for St-Link" To specify settings for St-Link: @@ -234,7 +234,7 @@ \section3 uVision Simulator - \image qtcreator-baremetal-uvision-simulator.png "Bare metal device options for uVision Simulator" + \image qtcreator-baremetal-uvision-simulator.png "Bare metal device preferences for uVision Simulator" To specify settings for uVision Simulator or uVision St-Link Debugger: @@ -251,7 +251,7 @@ \section3 uVision St-Link Debugger - \image qtcreator-baremetal-uvision-st-link.png "Bare metal device options for uVision St-Link" + \image qtcreator-baremetal-uvision-st-link.png "Bare metal device preferences for uVision St-Link" To specify settings for uVision St-Link Debugger: @@ -268,7 +268,7 @@ \section1 Adding Bare Metal Devices - \image qtcreator-baremetal-devices.png "Bare Metal device options" + \image qtcreator-baremetal-devices.png "Bare Metal device preferences" To add a bare metal device: @@ -291,7 +291,7 @@ devices, select \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits > \uicontrol Add. For more information, see \l{Adding Kits}. - \image qtcreator-baremetal-kit.png "Kit options for Bare Metal" + \image qtcreator-baremetal-kit.png "Kit preferences for Bare Metal" You can build applications for and run them on bare metal devices in the same way as for and on the desktop. For more information, see diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc index a2ef31fec5..faef2f96ff 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc @@ -33,7 +33,7 @@ > \uicontrol Preferences > \uicontrol Debugger. In the \uicontrol General tab, you can specify settings that are common to all debuggers. - \image qtcreator-debugger-general-options.png + \image qtcreator-debugger-general-options.png "Debugger General preferences" You can customize the appearance and behavior of the debug views, \l{Specifying Breakpoint Settings}{specify settings for breakpoints}, @@ -74,7 +74,7 @@ To specify settings for managing the GDB process, select \uicontrol Edit > \uicontrol Preferences > \uicontrol Debugger > \uicontrol GDB. - \image qtcreator-gdb-options.png "GDB options" + \image qtcreator-gdb-options.png "GDB preferences" To specify a timeout for terminating non-responsive GDB processes, set the number of seconds to wait in the \uicontrol {GDB timeout} field. The default @@ -140,7 +140,7 @@ Enabling them may negatively impact your debugging experience, so use them with care. - \image qtcreator-gdb-extended-options.png "GDB Extended options" + \image qtcreator-gdb-extended-options.png "GDB Extended preferences" To use asynchronous mode to control the inferior, select the respective check box. @@ -165,7 +165,7 @@ To specify settings for managing the CDB process, select \uicontrol Edit > \uicontrol Preferences > \uicontrol Debugger > \uicontrol CDB. - \image qtcreator-cdb-options.png "CDB options" + \image qtcreator-cdb-options.png "CDB preferences" You can specify additional arguments for starting CDB in the \uicontrol {Additional arguments} field. diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc index e88ba5517c..4f333dfd01 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc @@ -42,7 +42,7 @@ specify the debugger and compiler to use for each kit, select \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits. - You need to set up the debugger only if the automatic setup fails, because + You need to set up the debugger only if the automatic setup fails because the native debugger is missing (as is usually the case for the CDB debugger on Windows, which you always must install yourself) or because the installed version is not supported (for example, when your system contains no, or an diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index dd5a2dfbf1..c755cb9067 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -110,8 +110,9 @@ \QC checks whether the compiled program is up-to-date, and rebuilds and deploys it if the \uicontrol {Build before deploying} field is set to build the whole project or the application to run and the - \uicontrol {Always deploy before running} check box is selected in the - \uicontrol {Build and Run} options. To debug the program without deploying + \uicontrol {Always deploy before running} check box is selected in + \uicontrol Edit > \uicontrol Preferences > \uicontrol {Build & Run} > + \uicontrol General. To debug the program without deploying it, select \uicontrol Debug > \uicontrol {Start Debugging} > \uicontrol {Start Debugging Without Deployment}. @@ -674,7 +675,7 @@ the bottom of the view. Output is displayed in the right pane of the \uicontrol {Debugger Log} view. - \note Usually, you do not need this feature, because \QC provides you + \note Usually, you do not need this feature because \QC provides you with better ways to handle the task. For example, instead of using the GDB \c print command from the command line, you can evaluate an expression in the \uicontrol {Expressions} view. @@ -900,7 +901,7 @@ \uicontrol Debugger > \uicontrol {Locals & Expressions}, and enter the commands in the \uicontrol {Debugging Helper Customization} field. - \image qtcreator-debugging-helper-options.png + \image qtcreator-debugging-helper-options.png "Locals & Expressions preferences" If you receive error messages about receiving signals when using GDB, you can specify \l{https://sourceware.org/gdb/onlinedocs/gdb/Signals.html} @@ -1564,7 +1565,7 @@ \l{http://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace%20Protection} {KernelHardening}. - However, the usefulness of this security measure seems dubious, because this + However, the usefulness of this security measure seems dubious because this feature can be easily disabled. With root permissions, you can disable the feature temporarily by writing \c{0} into \c{/proc/sys/kernel/yama/ptrace_scope} or permanently by changing the value diff --git a/doc/qtcreator/src/docker/creator-docker.qdoc b/doc/qtcreator/src/docker/creator-docker.qdoc new file mode 100644 index 0000000000..5f758065a4 --- /dev/null +++ b/doc/qtcreator/src/docker/creator-docker.qdoc @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Creator documentation. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + + /*! + \page creator-adding-docker-devices.html + \previouspage creator-developing-b2qt.html + \nextpage creator-developing-generic-linux.html + + \title Adding Docker Devices + + You can add \l{ https://docs.docker.com/get-started/overview/} + {Docker images} as \e devices to run, debug, and analyze applications + built for the Docker container from \QC. A Docker device operates like + a virtual machine but uses less system resources at the cost of being + less flexible. + + Docker support is experimental. While Linux, \macos, and Windows hosts are + supported in principle, Linux is the recommended platform. + + Currently, only CMake is supported for building applications in the Docker + container. + + You can run applications locally or in a compatible Docker container. To be + able to run and debug applications on Docker devices, you must install Docker + as well as add Docker devices and select them in the kit. \QC automatically + detects kits in the shared Docker directories, but you need to check that + they point to the correct kit items. + + Use a wizard to search for Docker images available on your local Docker + installation and add them as devices. To access images from Docker hub or + other registries, you first need to pull the images using the + \l{https://docs.docker.com/engine/reference/commandline/pull/}{docker pull} + command. You can edit the Docker device preferences later in + \uicontrol Edit > \uicontrol Preferences > \uicontrol Devices. + + To enable the experimental Docker plugin: + + \list 1 + \li In \QC, select \uicontrol Help > \uicontrol {About Plugins} > + \uicontrol Utilities > \uicontrol {Docker (experimental)}. + \li Select \uicontrol {Restart Now} to restart \QC and load the plugin. + \endlist + + To add a Docker image as a device: + + \list 1 + \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Devices + > \uicontrol Devices > \uicontrol Add > \uicontrol {Docker Device} + > \uicontrol {Start Wizard} to search for images in your local Docker + installation. + \image qtcreator-docker-image-selection.png "Docker Image Selection dialog" + \li Select the Docker image to use, and then select \uicontrol OK. + \note If the Docker process is not found, make sure that Docker is + running and the Docker CLI executable is set in PATH. + \li In \uicontrol Devices, check and modify Docker device preferences. + \image qtcreator-docker-preferences.png "Docker Device preferences" + \li Select \uicontrol {Run as outside user} to use the user ID and + group ID of the user running \QC in the Docker container. + \li In \uicontrol {Paths to mount}, specify host directories to mount + into the container, such as the project directory. + \li Select \uicontrol {Auto-detect Kit Items} to generate an initial + \l{Adding Kits}{build and run kit} for the Docker device. + \endlist + + \section1 Specifying Paths to Mount + + You can either copy your project files into the Docker container or specify + paths to them in \uicontrol {Paths to mount}. Shared mounts are restricted + to locations in the host system that can end up in the same absolute location + in the Docker container. On Windows, mounted drives cannot be used as shared + mounts. + + The paths in \uicontrol {Paths to mount} are mapped one-to-one to the Docker + container. Select \uicontrol Insert to browse directories to add. Select + \uicontrol {Delete Line} to delete the selected path or \uicontrol Clear + to delete all paths. + + \section1 Auto-detecting Kit Items + + Select \uicontrol {Auto-detect Kit Items} to generate an initial + \l{Adding Kits}{build and run kit} for the Docker device. You can + either set the kit items, such \l{Adding Debuggers}{debuggers} and + \l{Adding Qt Versions}{Qt version}, in PATH or install them in the + Docker container. + + Select \uicontrol {Search in PATH} to detect kit items that are set in PATH. + + Select \uicontrol {Search in Selected Directories} to detect kit items in + the selected directories. + + To view the automatically detected kit items, select + \uicontrol {List Auto-Detected Kit Items}. To remove + them, select \uicontrol {Remove Auto-Detected Kit Items}. + + \section1 Editing Docker Device Kits + + Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits to check + that the automatically generated kit points to the appropriate kit items. + + To specify build settings: + + \list 1 + \li Open a project for an application you want to develop for the + device. + \li Select \uicontrol Projects > \uicontrol {Build & Run} to enable + the kit that you specified above. + \endlist + + Select \uicontrol Run to specify run settings. Usually, you can use + the default settings. +*/ diff --git a/doc/qtcreator/src/editors/creator-code-completion.qdoc b/doc/qtcreator/src/editors/creator-code-completion.qdoc index 9189750380..d979571998 100644 --- a/doc/qtcreator/src/editors/creator-code-completion.qdoc +++ b/doc/qtcreator/src/editors/creator-code-completion.qdoc @@ -53,7 +53,7 @@ To specify settings for code completion, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Completion. - \image qtcreator-options-texteditor-completion.png "Text Editor Completion options" + \image qtcreator-options-texteditor-completion.png "Text Editor Completion preferences" By default, code completion does not consider case. To apply full or first-letter case-sensitivity, select \uicontrol Full or @@ -181,7 +181,7 @@ \if defined(qtcreator) The following image shows built-in C++ code snippets: - \image qtcreator-edit-code-snippets.png "C++ snippet options" + \image qtcreator-edit-code-snippets.png "C++ snippet preferences" \endif The following image shows built-in QML code snippets: @@ -257,7 +257,7 @@ project containing the file that is currently open in the editor: \c {%{CurrentDocument:Project:Name}}. - Use unique variable names within a snippet, because all instances of a + Use unique variable names within a snippet because all instances of a variable are renamed when you specify a value for it. To determine the case of values you enter in snippets, use the following diff --git a/doc/qtcreator/src/editors/creator-code-indentation.qdoc b/doc/qtcreator/src/editors/creator-code-indentation.qdoc index 1816872a16..55f82a416b 100644 --- a/doc/qtcreator/src/editors/creator-code-indentation.qdoc +++ b/doc/qtcreator/src/editors/creator-code-indentation.qdoc @@ -31,7 +31,7 @@ \title Indenting Text or Code When you type text or code, it is indented automatically according to the - selected text editor or code style options. Select a block to indent it when + selected text editor or code style preferences. Select a block to indent it when you press \key Tab. Press \key {Shift+Tab} to decrease the indentation. You can disable automatic indentation. @@ -82,13 +82,13 @@ the \uicontrol {Skip clean whitespace for file types} check box to exclude the specified file types. - \image qtcreator-options-text-editor-behavior.png "Text Editor Behavior options" + \image qtcreator-options-text-editor-behavior.png "Text Editor Behavior preferences" To visualize whitespace in the editor, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Visualize whitespace}. - \image qtcreator-options-text-editor-display.png "Text Editor Display options" + \image qtcreator-options-text-editor-display.png "Text Editor Display preferences" To help you keep line length at a particular number of characters, set the number of characters in the \uicontrol {Display right margin at column} @@ -106,7 +106,7 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol {C++}. \li In the \uicontrol {Current settings} field, select the settings to modify and click \uicontrol Copy. - \image qtcreator-options-code-style-cpp.png "C++ Code Style options" + \image qtcreator-options-code-style-cpp.png "C++ Code Style preferences" \li Give a name to the settings and click \uicontrol OK. \li Click \uicontrol Edit to specify code style settings for the project. \image qtcreator-code-style-settings-edit-cpp.png "Edit Code Style dialog" @@ -126,7 +126,7 @@ \li Name getter functions. \endlist - You can use the live preview to see how the options change the indentation. + You can use the live preview to see how the preferences change the indentation. To specify different settings for a particular project, select \uicontrol Projects > \uicontrol {Code Style}. @@ -143,7 +143,7 @@ \uicontrol {Qt Quick}. \li In the \uicontrol {Current settings} field, select the settings to modify and click \uicontrol Copy. - \image qtcreator-options-code-style-qml.png "QML Code Style options" + \image qtcreator-options-code-style-qml.png "QML Code Style preferences" \li Give a name to the settings and click \uicontrol OK. \li Click \uicontrol Edit to specify code style settings for the project. \image qtcreator-code-style-settings-edit-qtquick.png "Edit Code Style dialog" @@ -167,7 +167,7 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Nim. \li In the \uicontrol {Current settings} field, select the settings to modify and click \uicontrol Copy. - \image qtcreator-options-code-style-nim.png "Nim Code Style options" + \image qtcreator-options-code-style-nim.png "Nim Code Style preferences" \li Give a name to the settings and click \uicontrol OK. \li Click \uicontrol Edit to specify code style settings for the project. \image qtcreator-code-style-settings-edit-nim.png "Edit Code Style dialog" @@ -186,7 +186,7 @@ QML code (such as Python code files), select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Behavior. - \image qtcreator-indentation.png "Text Editor Behavior options" + \image qtcreator-indentation.png "Text Editor Behavior preferences" To specify different settings for a particular project, select \uicontrol Projects > \uicontrol Editor. @@ -229,10 +229,10 @@ select \uicontrol {With Spaces}. To follow the \uicontrol {Tab policy}, select \uicontrol {With Regular Indent}. - \section1 Specifying Typing Options + \section1 Setting Typing Preferences When you type text or code, it is indented automatically according to the - selected text editor or code style options. To specify typing options, + selected text editor or code style preferences. To set typing preferences, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Behavior > \uicontrol Typing. @@ -266,21 +266,21 @@ You can also indent statements within functions and blocks and declarations within namespaces. - \image qtcreator-code-style-content.png "Content options" + \image qtcreator-code-style-content.png "Content preferences" \section1 Specifying Settings for Braces You can indent class, namespace, enum and function declarations and code blocks. - \image qtcreator-code-style-braces.png "Braces options" + \image qtcreator-code-style-braces.png "Braces preferences" \section1 Specifying Settings for Switch Statements You can indent case or default statements, or statements or blocks related to them within switch statements. - \image qtcreator-code-style-switch.png "Switch options" + \image qtcreator-code-style-switch.png "Switch preferences" \section1 Specifying Alignment @@ -293,7 +293,7 @@ aligned with the following line. Usually, this only affects \c if statements. - \image qtcreator-code-style-alignment.png "Alignment options" + \image qtcreator-code-style-alignment.png "Alignment preferences" \section1 Binding Pointers and References @@ -304,6 +304,6 @@ The \c * and \c & characters are automatically bound to identifiers of pointers to functions and pointers to arrays. - \image qtcreator-pointers-references.png "Pointers and References options" + \image qtcreator-pointers-references.png "Pointers and References preferences" \endif */ diff --git a/doc/qtcreator/src/editors/creator-code-syntax.qdoc b/doc/qtcreator/src/editors/creator-code-syntax.qdoc index daf9cd891f..e646c74178 100644 --- a/doc/qtcreator/src/editors/creator-code-syntax.qdoc +++ b/doc/qtcreator/src/editors/creator-code-syntax.qdoc @@ -31,35 +31,25 @@ \title Checking Code Syntax As you write code, \QC checks code syntax. When \QC spots a syntax error in - your code it underlines it and shows error details when you move the mouse - pointer over the error. Similarly, when you are working on an instance of a - JavaScript object notation (JSON) entity, \QC underlines errors in JSON data - structure. + your code, it underlines it, displays an icon, and shows error details when + you move the mouse pointer over the error or the icon. If a fix is available, + you can apply it by clicking \inlineimage icons/refactormarker.png + . + + Similarly, when you are working on an instance of a JavaScript object + notation (JSON) entity, \QC underlines errors in the JSON data structure. \if defined(qtcreator) - In the following screenshot, \QC points out an error, because a semicolon is + In the following screenshot, \QC annotates an error because a semicolon is missing at the end of the line: \image qtcreator-syntaxerror.png - In the following screenshot, \QC issues a warning, because the variable is + In the following screenshot, \QC issues a warning because the variable is not used: \image qtcreator-semanticerror.png - To modify the colors used for underlining errors and warnings, select - \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > - \uicontrol {Font & Colors} > \uicontrol Copy, and select new colors for - \uicontrol Error and \uicontrol Warning. - - \section1 Viewing Annotations - - When using the Clang code model, errors and warnings are additionally marked - with icons and annotated. If a \l{http://clang.llvm.org/diagnostics.html} - {Clang fix-it} is available, you can execute it by clicking the - \inlineimage icons/refactormarker.png - icon and pressing \key Enter. - In the following screenshot, a Qt class name contains a typo: \image qtcreator-typo-clang.png @@ -69,14 +59,10 @@ the \uicontrol {Annotation Settings} link to specify the position of the line annotations. - In the following screenshot, a semicolon is missing at the end of the - line. - - \image qtcreator-syntaxerror-clang.png - - In the following screenshot, the variable is not used. - - \image qtcreator-semanticerror-clang.png + To modify the colors used for underlining errors and warnings, select + \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > + \uicontrol {Font & Colors} > \uicontrol Copy, and select new colors for + \uicontrol Error and \uicontrol Warning. \else In addition to underlining, errors and warnings are marked with icons and @@ -87,7 +73,7 @@ \image qml-syntax-check.png - \section2 Specifying Line Annotation Positions + \section1 Specifying Line Annotation Positions To specify the position where the annotations are displayed, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > @@ -97,7 +83,7 @@ between lines can be useful if there is usually not enough space to display annotations next to the text. - \image qtcreator-options-text-editor-display.png "Text Editor Display options" + \image qtcreator-options-text-editor-display.png "Text Editor Display preferences" If you hide the annotations by deselecting the check box, you can move the mouse pointer over an icon to view them. @@ -750,4 +736,6 @@ To automatically format QML/JS files upon saving, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Qt Quick} > \uicontrol {QML/JS Editing} > \uicontrol {Enable auto format on file save}. + + \image qtcreator-qml-js-editing.png "QML/JS Editing preferences" */ diff --git a/doc/qtcreator/src/editors/creator-diff-editor.qdoc b/doc/qtcreator/src/editors/creator-diff-editor.qdoc index 9ad332da93..bc8f79659b 100644 --- a/doc/qtcreator/src/editors/creator-diff-editor.qdoc +++ b/doc/qtcreator/src/editors/creator-diff-editor.qdoc @@ -124,7 +124,7 @@ To change the default colors, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol {Font & Colors}. Create your own color - scheme and select new colors for the following options: + scheme and select new colors for the following items: \list diff --git a/doc/qtcreator/src/editors/creator-editors-options-text.qdoc b/doc/qtcreator/src/editors/creator-editors-options-text.qdoc index 00c284ada9..5840f5defb 100644 --- a/doc/qtcreator/src/editors/creator-editors-options-text.qdoc +++ b/doc/qtcreator/src/editors/creator-editors-options-text.qdoc @@ -42,10 +42,10 @@ Set the font preferences and apply color schemes for syntax highlighting, diff editor, and code analysis results in \uicontrol Edit > - \uicontrol Preferences\uicontrol Tools > \uicontrol {Text Editor} > + \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol {Font & Colors}. - \image qtcreator-font-colors.png "Text editor options" + \image qtcreator-font-colors.png "Text editor preferences" \section2 Configuring Fonts @@ -120,7 +120,7 @@ \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Behavior, and then select a suitable option in \uicontrol {Default encoding}. - \image qtcreator-options-texteditor-behavior-file-encodings.png "File encoding options" + \image qtcreator-options-texteditor-behavior-file-encodings.png "File encoding preferences" Qt 5 and Qt 6 require UTF-8 encoded source files, and therefore the default encoding is set to \uicontrol UTF-8. diff --git a/doc/qtcreator/src/editors/creator-editors-options.qdoc b/doc/qtcreator/src/editors/creator-editors-options.qdoc index 182a160998..6812e826ef 100644 --- a/doc/qtcreator/src/editors/creator-editors-options.qdoc +++ b/doc/qtcreator/src/editors/creator-editors-options.qdoc @@ -43,7 +43,7 @@ You can configure the text editor to suit your specific needs by selecting \uicontrol Edit > \uicontrol Preferences > \uicontrol{Text Editor}. - \image qtcreator-font-colors.png "Text Editor options" + \image qtcreator-font-colors.png "Text Editor preferences" The settings you specify apply globally to all projects. diff --git a/doc/qtcreator/src/editors/creator-locator.qdoc b/doc/qtcreator/src/editors/creator-locator.qdoc index 634034aadc..67b82a7b5f 100644 --- a/doc/qtcreator/src/editors/creator-locator.qdoc +++ b/doc/qtcreator/src/editors/creator-locator.qdoc @@ -247,7 +247,7 @@ \li In the locator, click \inlineimage icons/magnifier.png (\uicontrol Options) and select \uicontrol Configure to open the - \uicontrol Locator options. + \uicontrol Locator preferences. \li Select a filter, and then select \uicontrol Edit. @@ -256,7 +256,7 @@ \li To implicitly include the filter even when not typing a prefix as a part of the search string, select \uicontrol {Include by default}. - \li Specify other available options. For more information, see + \li Set other available preferences. For more information, see \l{Adding Web Search Engines}. \endlist @@ -305,9 +305,9 @@ \list 1 \li In the locator, select \uicontrol Options > - \uicontrol Configure to open the \uicontrol Locator options. + \uicontrol Configure to open the \uicontrol Locator preferences. - \image qtcreator-locator-customize.png "Locator options tab" + \image qtcreator-locator-customize.png "Locator preferences" \li Select \uicontrol Add > \uicontrol {Files in Directories} to add a directory filter or \uicontrol {URL Template} to add a URL diff --git a/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc b/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc index 50288cc7c0..a391d54c8b 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc @@ -51,7 +51,7 @@ The Beautifier plugin parses the source code into component structures, such as assignment statements, if blocks, loops, and so on, and formats them as - specified in the Beautifier options. You can use a predefined style or + specified in the Beautifier preferences. You can use a predefined style or define your own style. To use the Beautifier plugin: @@ -82,7 +82,7 @@ automatically beautify files when you save them using the tool you select in the \uicontrol Tool field. - \image qt-creator-beautifier-options-general.png "General Beautifier options" + \image qt-creator-beautifier-options-general.png "General Beautifier preferences" \li In the \uicontrol {Restrict to MIME types} field, define the MIME types of the files to beautify, separated by semicolons. Leave the @@ -101,7 +101,7 @@ \uicontrol Uncrustify to specify settings for the tool you want to use. - \image beautifier_options.png "Uncrustify Beautifier options" + \image beautifier_options.png "Uncrustify Beautifier preferences" \li In the \uicontrol Configuration group, specify the path to the tool executable in the \uicontrol {Artistic Style command}, @@ -140,7 +140,7 @@ button, and then selecting the style to use from the list of available styles. - \image qtcreator-beautifier-options-clangformat.png "Clang Format Beautifier options" + \image qtcreator-beautifier-options-clangformat.png "Clang Format Beautifier preferences" Select \uicontrol File to load the style configuration from the \c .clang-format or \c _clang-format file located in the diff --git a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc index f4ee40a9bf..dfaeb7c7b5 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc @@ -127,7 +127,7 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol C++ > \uicontrol {Code Model}. - \image qtcreator-clang-code-model-options.png + \image qtcreator-clang-code-model-options.png "C++ Code Model preferences" \li To instruct the code model to interpret ambiguous header files as C language files if you develop mainly using C, select the @@ -163,7 +163,7 @@ \list 1 \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol C++ > \uicontrol Clangd > \uicontrol {Use clangd}. - \image qtcreator-options-clangd.png "clangd options" + \image qtcreator-options-clangd.png "clangd preferences" \li In \uicontrol {Path to executable}, enter the path to clangd version 13, or later. \li For more accurate results during global symbol searches, select diff --git a/doc/qtcreator/src/editors/creator-only/creator-code-pasting.qdoc b/doc/qtcreator/src/editors/creator-only/creator-code-pasting.qdoc index 307931fe70..952eee54b2 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-code-pasting.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-code-pasting.qdoc @@ -47,7 +47,7 @@ \list 1 \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Code Pasting}. - \image qtcreator-code-pasting-options.png "Code Pasting options" + \image qtcreator-code-pasting-options.png "Code Pasting preferences" \li In the \uicontrol {Default protocol} field, select a code pasting service to use by default. \li In the \uicontrol Username field, enter your username. diff --git a/doc/qtcreator/src/editors/creator-only/creator-fakevim.qdoc b/doc/qtcreator/src/editors/creator-only/creator-fakevim.qdoc index 7fe0517694..c95018f14c 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-fakevim.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-fakevim.qdoc @@ -118,7 +118,7 @@ for particular plugins, select \uicontrol Edit > \uicontrol Preferences > \uicontrol FakeVim > \uicontrol General > \uicontrol {Plugin Emulation}. - \image qtcreator-fakevim-options-general-plugin-emulation.png "FakeVim Plugin Emulation options" + \image qtcreator-fakevim-options-general-plugin-emulation.png "FakeVim Plugin Emulation preferences" Currently emulated plugins: \list @@ -296,7 +296,7 @@ Enter a string in the \uicontrol Filter field to search for a specific \QC function. - \image qtcreator-fakevim-options-ex-command-mapping.png "FakeVim Ex Command Mapping options" + \image qtcreator-fakevim-options-ex-command-mapping.png "FakeVim Ex Command Mapping preferences" Select a function in the list, and enter a string that will trigger the function in the \uicontrol {Regular expression} field. You can view the @@ -311,14 +311,14 @@ \uicontrol {User Command Mapping}. The user command mapped to the shortcut is executed by FakeVim as if you were typing it (as when replaying a macro). - \image qtcreator-fakevim-options-user-command-mapping.png "FakeVim User Command Mapping options" + \image qtcreator-fakevim-options-user-command-mapping.png "FakeVim User Command Mapping preferences" - \section1 Specifying FakeVim Options + \section1 Setting FakeVim Preferences To make changes to the Vim-style settings, select \uicontrol Edit > \uicontrol Preferences > \uicontrol FakeVim > \uicontrol General. - \image qtcreator-fakevim-options.png "FakeVim options" + \image qtcreator-fakevim-options.png "FakeVim preferences" To preselect the indentation settings specified for the text editor, select \uicontrol {Copy Text Editor Settings}. To preselect the Qt coding style, diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc index 384707adae..a2bebb49fb 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc @@ -189,7 +189,7 @@ \image qtcreator-language-client-inspector-log.png "Language Client Inspector dialog" The dialog shows a list of running language servers. The value of the - \uicontrol {Startup behavior} field in the language server options + \uicontrol {Startup behavior} field in the language server preferences determines when the server is started. The information displayed depends on the language server. diff --git a/doc/qtcreator/src/editors/creator-only/creator-mime-types.qdoc b/doc/qtcreator/src/editors/creator-only/creator-mime-types.qdoc index c0bddb24d0..ee916d9b14 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-mime-types.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-mime-types.qdoc @@ -99,7 +99,7 @@ numerical types, whereas masks for strings must be in base 16, and start with 0x. - \note You are recommended not to change the range and priority, + \note You are recommended not to change the range and priority because it might cause problems when opening files in \QC. \li Click \uicontrol OK to return to the \uicontrol {MIME Types} tab. diff --git a/doc/qtcreator/src/editors/creator-quick-fixes.qdoc b/doc/qtcreator/src/editors/creator-quick-fixes.qdoc index e3de6b0df8..5236950d40 100644 --- a/doc/qtcreator/src/editors/creator-quick-fixes.qdoc +++ b/doc/qtcreator/src/editors/creator-quick-fixes.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -109,12 +109,13 @@ To specify custom settings for a particular project, select \uicontrol Projects > \uicontrol {Project Settings} > - \uicontrol {Quick Fixes} > \uicontrol {Custom Settings}. + \uicontrol {Quick Fixes}, and then deselect \uicontrol {Use global settings}. \image qtcreator-refactoring-options-locations.png "Quick Fixes settings" To revert to global settings, select \uicontrol {Reset to Global}. To - delete the custom settings, select \uicontrol {Delete Custom Settings File}. + delete the custom settings, select \uicontrol {Use global settings}, and + then select \uicontrol {Delete Custom Settings File}. \section2 Function Locations diff --git a/doc/qtcreator/src/editors/creator-semantic-highlighting.qdoc b/doc/qtcreator/src/editors/creator-semantic-highlighting.qdoc index 1356866efa..3e255f3f37 100644 --- a/doc/qtcreator/src/editors/creator-semantic-highlighting.qdoc +++ b/doc/qtcreator/src/editors/creator-semantic-highlighting.qdoc @@ -81,7 +81,7 @@ > \uicontrol {Generic Highlighter} and add the pattern to the \uicontrol {Ignored file patterns} field. - \image qtcreator-syntax-highlighter.png "Generic Highlighter options" + \image qtcreator-syntax-highlighter.png "Generic Highlighter preferences" If you have written your own syntax definition files, you can provide an additional definition search path in the @@ -109,7 +109,7 @@ \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Display folding markers}. This option is enabled by default. - \image qtcreator-options-text-editor-display.png "Text Editor Display options" + \image qtcreator-options-text-editor-display.png "Text Editor Display preferences" When the cursor is on a brace, the matching brace is animated by default. To turn off the animation and just highlight the block and the braces, select @@ -128,5 +128,5 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol Behavior > \uicontrol {Enable smart selection changing}. - \image qtcreator-options-text-editor-behavior.png "Text Editor Behavior options" + \image qtcreator-options-text-editor-behavior.png "Text Editor Behavior preferences" */ diff --git a/doc/qtcreator/src/howto/creator-help.qdoc b/doc/qtcreator/src/howto/creator-help.qdoc index 5645447135..b41034b992 100644 --- a/doc/qtcreator/src/howto/creator-help.qdoc +++ b/doc/qtcreator/src/howto/creator-help.qdoc @@ -69,7 +69,7 @@ family, style, and size in \uicontrol Edit > \uicontrol Preferences > \uicontrol Help > \uicontrol General. - \image qtcreator-help-options.png + \image qtcreator-help-options.png "Help General preferences" You can set the default zoom level in the \uicontrol Zoom field. When viewing help pages, you can use the mouse scroll wheel to zoom them. To @@ -235,7 +235,7 @@ > \uicontrol {On help start} field. To display the page and help views that were open when you exited the mode, select the \uicontrol {Show My Tabs from Last Session} option. However, Web pages - are not opened, because loading them would slow down opening the \uicontrol Help + are not opened because loading them would slow down opening the \uicontrol Help mode. To display a particular page, select \uicontrol {Show My Home Page}, and specify @@ -264,7 +264,7 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Help > \uicontrol Filters. - \image qtcreator-help-filter-attributes.png "Filters tab in Help options" + \image qtcreator-help-filter-attributes.png "Filters tab in Help preferences" \li Select \inlineimage icons/plus.png to add a new filter in the \uicontrol {Add Filter} dialog. diff --git a/doc/qtcreator/src/howto/creator-keyboard-shortcuts.qdoc b/doc/qtcreator/src/howto/creator-keyboard-shortcuts.qdoc index 78e9d4fbb0..e6b54c15f0 100644 --- a/doc/qtcreator/src/howto/creator-keyboard-shortcuts.qdoc +++ b/doc/qtcreator/src/howto/creator-keyboard-shortcuts.qdoc @@ -80,7 +80,7 @@ in context menus} check box indicates whether the platform default value is \c on or \c off. - \image qtcreator-options-environment-interface.png "Interface tab in the Environment options" + \image qtcreator-options-environment-interface.png "Interface tab in the Environment preferences" \section1 Configuring Keyboard Shortcuts diff --git a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc index 2aae07ceb3..0cea2e6451 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc @@ -418,7 +418,7 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol {Testing} > \uicontrol General. - \image qtcreator-autotests-options.png + \image qtcreator-autotests-options.png "Testing General preferences" You can customize some settings at project level. To change settings for the current project instead of globally, select \uicontrol Projects > @@ -541,7 +541,7 @@ \li To specify settings for running Catch2 tests, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Testing} > \uicontrol {Catch Test}. - \image qtcreator-autotests-options-catch2.png "Catch Test options" + \image qtcreator-autotests-options-catch2.png "Catch Test preferences" \li Select the \uicontrol {Show success} check box to show succeeding expressions as well. By default Catch2 will print only fails. \li Select the \uicontrol {Break on failure while debugging} check box @@ -573,7 +573,7 @@ \li To specify settings for running CTest-based tests, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Testing} > \uicontrol {CTest}. - \image qtcreator-autotests-options-ctest.png "CTest options" + \image qtcreator-autotests-options-ctest.png "CTest preferences" \li Select the \uicontrol {Output on failure} check box to show test specific output if a test fails. Contrary to the CTest default this is enabled by default. diff --git a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc index 1ac13c93ad..cf7639abea 100644 --- a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc +++ b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc @@ -319,7 +319,7 @@ \li The common solution is to give the user the ability to reorder tabs. Now user has to manage tabs instead of writing code. - \li Tabs force you to limit the amount of open editors, because + \li Tabs force you to limit the amount of open editors because otherwise you get confused. \endlist diff --git a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc index 68a4042d4e..8031e42508 100644 --- a/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc +++ b/doc/qtcreator/src/incredibuild/creator-projects-incredibuild-building.qdoc @@ -65,7 +65,7 @@ \image qtcreator-incredibuild-build-steps-linux.png - You can specify the following options for Linux builds: + You can specify the following settings for Linux builds: \list \li \uicontrol {Nice value} is a numeric value between -20 and 19 @@ -78,7 +78,7 @@ \image qtcreator-incredibuild-build-steps-windows.png - You can specify the following options for Windows builds: + You can specify the following settings for Windows builds: \list \li \uicontrol {Profile.xml} defines how Automatic Interception diff --git a/doc/qtcreator/src/ios/creator-ios-dev.qdoc b/doc/qtcreator/src/ios/creator-ios-dev.qdoc index 3ebd8c93a0..fc9e459900 100644 --- a/doc/qtcreator/src/ios/creator-ios-dev.qdoc +++ b/doc/qtcreator/src/ios/creator-ios-dev.qdoc @@ -113,7 +113,7 @@ \endlist - \note If you cannot deploy applications, because a provisioning profile is + \note If you cannot deploy applications because a provisioning profile is missing, check that provisioning profiles are listed in Xcode by selecting \uicontrol Xcode > \uicontrol Preferences > \uicontrol Accounts. For more information about how to acquire and install a provisioning profile, see diff --git a/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc b/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc index ffbfcb4fea..bb2b721472 100644 --- a/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc +++ b/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc @@ -26,7 +26,7 @@ /*! \page creator-developing-b2qt.html \previouspage creator-developing-baremetal.html - \nextpage creator-developing-generic-linux.html + \nextpage creator-adding-docker-devices.html \title Connecting Boot2Qt Devices diff --git a/doc/qtcreator/src/linux-mobile/linuxdev-keys.qdocinc b/doc/qtcreator/src/linux-mobile/linuxdev-keys.qdocinc index 0053e27a82..0218c306a7 100644 --- a/doc/qtcreator/src/linux-mobile/linuxdev-keys.qdocinc +++ b/doc/qtcreator/src/linux-mobile/linuxdev-keys.qdocinc @@ -44,7 +44,7 @@ directories where the tools are installed in \uicontrol Edit > \uicontrol Preferences > \uicontrol Devices > \uicontrol SSH: - \image qtcreator-ssh-options.png + \image qtcreator-ssh-options.png "SSH preferences" \list \li Deselect the \uicontrol {Enable connection sharing} check box to diff --git a/doc/qtcreator/src/linux-mobile/linuxdev.qdoc b/doc/qtcreator/src/linux-mobile/linuxdev.qdoc index acc5f5591d..1af5707f83 100644 --- a/doc/qtcreator/src/linux-mobile/linuxdev.qdoc +++ b/doc/qtcreator/src/linux-mobile/linuxdev.qdoc @@ -29,7 +29,7 @@ \previouspage creator-developing-android.html \nextpage studio-advanced.html \else - \previouspage creator-developing-b2qt.html + \previouspage creator-adding-docker-devices.html \nextpage creator-developing-ios.html \endif diff --git a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc index 1ff239c669..7db36a4121 100644 --- a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc +++ b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc @@ -85,7 +85,7 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol Devices > \uicontrol MCU: - \image qtcreator-mcu-options.png "MCU options" + \image qtcreator-mcu-options.png "MCU preferences" \list 1 \li In the \uicontrol {Qt for MCUs SDK} field, specify the path diff --git a/doc/qtcreator/src/meson/creator-projects-meson.qdoc b/doc/qtcreator/src/meson/creator-projects-meson.qdoc index dc2487c1f1..fb1014124b 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson.qdoc +++ b/doc/qtcreator/src/meson/creator-projects-meson.qdoc @@ -73,7 +73,7 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits > \uicontrol Kits tab to add the Meson and Ninja tools to a build and run kit: - \image qtcreator-kits-meson.png "Setting Meson executable in Kit options" + \image qtcreator-kits-meson.png "Setting Meson executable in Kit preferences" For more information, see \l {Adding Kits}. diff --git a/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc b/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc index 4b54044fcb..ed7ff74f5a 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -74,6 +74,13 @@ You can connect \l{Boot2Qt} devices to the development PC to run, debug, and analyze applications built for them from \QC. + \if defined(qtcreator) + \li \l {Adding Docker Devices} + + You can add Docker images as \e devices to run, debug, and analyze + applications built for Docker containers from \QC. + \endif + \li \l{Connecting Generic Remote Linux Devices} If you have a tool chain for building applications for embedded diff --git a/doc/qtcreator/src/projects/creator-only/creator-custom-output-parser.qdoc b/doc/qtcreator/src/projects/creator-only/creator-custom-output-parser.qdoc index 9100b20b50..f15e71ab14 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-custom-output-parser.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-custom-output-parser.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -53,7 +53,7 @@ \section1 Specifying Settings for Custom Output Parsers - \image qtcreator-custom-parser-options.png + \image qtcreator-custom-parser-options.png "Custom Output Parsers preferences" A custom output parser enables you to capture errors and warnings separately, according to the settings you specify @@ -99,4 +99,7 @@ \li Select custom parsers to activate them for building or running the project. \endlist + + Select \uicontrol {Parse standard output during build} to make output + parsers look for diagnostics on \c stdout in addition to \c stderr. */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc index 8a9c404c3f..e566d48211 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc @@ -162,7 +162,7 @@ change the default suffix of a file, select \uicontrol Edit > \uicontrol Preferences > \uicontrol {C++} > \uicontrol {File Naming}. - \image qtcreator-options-cpp-files.png "File Naming tab in Options" + \image qtcreator-options-cpp-files.png "C++ File Naming preferences" In the \uicontrol {License template} field, you can use \l{Using Variables in Wizards}{predefined wizard variables} to specify the diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-builds-customizing.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-builds-customizing.qdoc index 87783bc018..8e35e74d25 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-builds-customizing.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-builds-customizing.qdoc @@ -45,7 +45,7 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General. - \image qtcreator-project-options-deploy.png "Project General Options" + \image qtcreator-project-options-deploy.png "Project General preferences" By default, the \uicontrol {Always deploy project before running it} (1) and \uicontrol {Build the Whole Project} (2) options are enabled. Therefore, diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index 3d449579c7..31fa0b883f 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -166,7 +166,7 @@ with a single QML file that contains the main view. You can preview Qt Quick 2 UI projects in the \l{Validating with Target Hardware}{QML Scene preview tool}. - You do not need to build them, because they do not contain any + You do not need to build them because they do not contain any C++ code. Use this template only if you are prototyping. You cannot create diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc index 72258f5628..e151488709 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc @@ -34,7 +34,7 @@ actually copied from the \QC source directory into the \QC build directory as part of the next \QC build. - If you do not run CMake or qmake, your new wizard will not show up, because + If you do not run CMake or qmake, your new wizard will not show up because it does not exist in the build directory you run your newly built \QC from. It never got copied there because CMake or qmake did not inform the build tool, such as make or ninja, about the new files in the source tree. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc index 0bef5e4bc1..2fbc3bd089 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-debuggers.qdoc @@ -53,7 +53,7 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits > \uicontrol Debuggers > \uicontrol Add. - \image qtcreator-options-build-run-debuggers.png + \image qtcreator-options-build-run-debuggers.png "Adding debuggers" \li In the \uicontrol Name field, give a descriptive name for the debugger. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc index 836a319d35..f0fa1df708 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-qbs.qdoc @@ -67,7 +67,7 @@ \list 1 \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Qbs. - \image qtcreator-options-qbs.png + \image qtcreator-options-qbs.png "Qbs preferences" \li Deselect the \uicontrol {Use \QC settings directory for Qbs} check box to store Qbs profiles in the Qbs settings directory. \li In the \uicontrol {Path to qbs executable} field, you can view diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc index ace7bb7658..9576a23c37 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc @@ -48,7 +48,7 @@ version, select it in the list and select \uicontrol Details in the \uicontrol {Qt version for} section. - \image qtcreator-qt-versions.png "Qt Versions tab in Kit options" + \image qtcreator-qt-versions.png "Qt Versions tab in Kit preferences" To remove invalid Qt versions, select \uicontrol {Clean Up}. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc index 02975bb398..572317b43a 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build-qbs.qdoc @@ -104,7 +104,7 @@ default. \note On Windows, the build will fail if the application - is running, because the executable file cannot be + is running because the executable file cannot be overwritten. To avoid this issue, you can deselect this check box and add a \uicontrol {Qbs Install} deployment step in the run settings that will be performed just before diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-editor.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-editor.qdoc index e2c8910114..a22deebbcb 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-editor.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-editor.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -52,7 +52,7 @@ \li Select \uicontrol Projects > \uicontrol {Project Settings} > \uicontrol Editor. - \li In the \uicontrol {Editor settings} field, select \uicontrol {Custom}. + \li Deselect \uicontrol {Use global settings}. \li Specify text editor settings for the project. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc index e78c286332..32a075169a 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc @@ -45,7 +45,7 @@ \uicontrol Environment > \uicontrol System, and then select \uicontrol Change in the \uicontrol Environment field. - \image qtcreator-options-environment-system.png "Environment options System tab" + \image qtcreator-options-environment-system.png "Environment preferences System tab" In addition, you can specify custom environment variables in the \uicontrol {Project Settings} > \uicontrol Environment settings. diff --git a/doc/qtcreator/src/projects/creator-projects-running.qdoc b/doc/qtcreator/src/projects/creator-projects-running.qdoc index 99d323a5b1..cc756c8c04 100644 --- a/doc/qtcreator/src/projects/creator-projects-running.qdoc +++ b/doc/qtcreator/src/projects/creator-projects-running.qdoc @@ -80,7 +80,7 @@ \l {Application Output} displays the status of the application while it is running. You can select the \uicontrol Run button to re-run applications without building them first. This is - useful when developing Qt Quick applications, because the QML files are + useful when developing Qt Quick applications because the QML files are interpreted at runtime. Therefore, the application does not need to be built again if you edited only QML files. This saves time especially if the application contains large image files that would need to be bundled diff --git a/doc/qtcreator/src/python/creator-python-project.qdocinc b/doc/qtcreator/src/python/creator-python-project.qdocinc index 3e9bbb8304..4281694a5b 100644 --- a/doc/qtcreator/src/python/creator-python-project.qdocinc +++ b/doc/qtcreator/src/python/creator-python-project.qdocinc @@ -72,7 +72,6 @@ \badcode import sys - from pathlib import Path from PySide6.QtWidgets import QApplication, QWidget \endcode @@ -179,9 +178,8 @@ to QGuiApplication and QQmlApplicationEngine: \badcode - import os - from pathlib import Path import sys + from pathlib import Path from PySide6.QtGui import QGuiApplication from PySide6.QtQml import QQmlApplicationEngine @@ -201,7 +199,8 @@ \badcode engine = QQmlApplicationEngine() - engine.load(os.fspath(Path(__file__).resolve().parent / "main.qml")) + qml_file = Path(__file__).resolve().parent / "main.qml" + engine.load(qml_file) \endcode Finally, the wizard adds code that checks whether the file was successfully diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index ec7e514872..c904ac1489 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -169,6 +169,8 @@ \list \li \l{Connecting Android Devices} \li \l{Connecting Bare Metal Devices} + \li \l{Connecting Boot2Qt Devices} + \li \l{Adding Docker Devices} \li \l{Connecting Generic Remote Linux Devices} \li \l{Connecting iOS Devices} \li \l{Connecting MCUs} diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc index 065ac60d26..0b09a9ddd0 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-development.qdoc @@ -43,7 +43,7 @@ asks you whether you would like to open the file in \QDS instead. Select \uicontrol {Open in \QDS} to open the file in \QDS. To continue editing the file in \QC, close the info bar. However, we do not recommend editing - \l{UI Files}{UI files} in the \uicontrol Edit mode, because it is easy to + \l{UI Files}{UI files} in the \uicontrol Edit mode because it is easy to add code that is not supported by \QDS. To hide the question, select \uicontrol {Do Not Show Again}. diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc index 675fe628ff..e7a737b8a1 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc @@ -62,7 +62,7 @@ \li Qt Quick UI Prototype \li Creates a Qt Quick UI project with a single QML file that contains the main view. You can preview Qt Quick 2 UI projects - in the QML Scene preview tool. You do not need to build them, + in the QML Scene preview tool. You do not need to build them because they do not contain any C++ code. This project type is compatible with \QDS. However, use this @@ -168,7 +168,7 @@ Qt Quick UI Prototype projects are useful for testing or prototyping user interfaces, or for setting up a separate project just for QML editing, for example. You - cannot use them for application development, because they do not contain: + cannot use them for application development because they do not contain: \list \li C++ code diff --git a/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc b/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc index c8ef7a11c8..cf680b3af6 100644 --- a/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc @@ -76,7 +76,7 @@ The first time you preview a UI on devices, the preview utility is copied to them. This might take some time. Thereafter, previewing will - get faster, because only the UI files need to be copied to the + get faster because only the UI files need to be copied to the device. \section2 Previewing on Boot2Qt Devices diff --git a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc index d2fafc7e38..5c24eb3b40 100644 --- a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc @@ -53,7 +53,7 @@ \if defined(qtcreator) Triggering long-running C++ functions, such as paint methods and signal handlers, also takes time in the GUI thread, but is more difficult to see in - the QML Profiler, because it does not profile C++ code. + the QML Profiler because it does not profile C++ code. \endif To find excessive use of JavaScript, check the frame rate in animations and @@ -65,7 +65,7 @@ frames and check that you are not using too many short bindings or signal handlers that are updated per frame. You can also \l{Visualizing Overdraw} {visualize Scene Graph overdraw} to check scene layout and find items that - are never visible to the users, because they are located outside the screen + are never visible to the users because they are located outside the screen or hidden beneath other, visible elements. \if defined(qtcreator) @@ -127,7 +127,7 @@ takes time, and therefore, there might be a delay before the data is displayed. - Do not use application commands to exit the application, because data is + Do not use application commands to exit the application because data is sent to the QML Profiler when you select the \uicontrol {Enable Profiling} button. The application continues to run for some seconds, after which it is stopped automatically. If you exit the application, the data is not sent. diff --git a/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc b/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc index 02f1cee382..3d9659b3ae 100644 --- a/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc @@ -48,10 +48,12 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol {Qt Quick} > \uicontrol {QML/JS Editing} > \uicontrol {Always show Qt Quick Toolbar}. + \image qtcreator-qml-js-editing.png "QML/JS Editing preferences" + Drag the toolbar to pin it to another location. Select \inlineimage icons/pin.png to unpin the toolbar and move it to its default location. To pin toolbars - by default, select \uicontrol {Pin Quick Toolbar}. + by default, select \uicontrol {Pin Qt Quick Toolbar}. \section1 Previewing Images diff --git a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc index 140f2ad1f6..058ea3276a 100644 --- a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc @@ -53,7 +53,7 @@ \uicontrol Edit > \uicontrol Preferences > \uicontrol Environment > \uicontrol System: - \image qtcreator-options-environment-system.png "Environment options System tab" + \image qtcreator-options-environment-system.png "Environment preferences System tab" \list \li In the \uicontrol {When files are externally modified} field, diff --git a/doc/qtcreator/src/user-interface/creator-ui.qdoc b/doc/qtcreator/src/user-interface/creator-ui.qdoc index ffde43b7b1..d4f52e4eea 100644 --- a/doc/qtcreator/src/user-interface/creator-ui.qdoc +++ b/doc/qtcreator/src/user-interface/creator-ui.qdoc @@ -160,7 +160,7 @@ > \uicontrol Environment, and then select a theme in the \uicontrol Theme field. - \image qtcreator-options-environment-interface.png "Interface settings" + \image qtcreator-options-environment-interface.png "Interface preferences" \section1 Changing Languages @@ -183,7 +183,7 @@ \li On Windows, if no \l{High DPI}{scaling environment variables} are set, \QC instructs Qt to detect the scaling factor and use it for \QC. - \li On Linux, \QC leaves it to the user to enable high DPI scaling, + \li On Linux, \QC leaves it to the user to enable high DPI scaling because the process varies so much on different distributions and windowing systems that it cannot be reliably done automatically. \endlist @@ -448,7 +448,7 @@ \uicontrol Preferences > \uicontrol Environment > \uicontrol Interface, and then select the codec in the \uicontrol {Text codec for tools} field. - \image qtcreator-options-environment-interface.png "Interface tab in the Environment options" + \image qtcreator-options-environment-interface.png "Interface tab in the Environment preferences" \section1 Finding and Filtering Output @@ -610,7 +610,7 @@ In the \uicontrol {Limit output to} field, you can specify the maximum amount of build output lines to display. - You can also reach the options page by clicking \inlineimage icons/settings.png + You can also open the preferences page by clicking \inlineimage icons/settings.png (\uicontrol {Open Settings Page}). To copy the output to the clipboard, select \uicontrol {Select All} in the @@ -658,7 +658,7 @@ \uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color for the keyword. - \image qtcreator-todo-options.png + \image qtcreator-todo-options.png "To-Do preferences" To change the icon and line background color of the selected keyword, select \uicontrol Edit. diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-perforce.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-perforce.qdoc index ebcd216a33..575fa2cfe9 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-perforce.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-perforce.qdoc @@ -46,7 +46,7 @@ \section1 Configuring Perforce - In the Perforce options, you can specify workspace details: + In the Perforce preferences, you can specify workspace details: \uicontrol {P4 user}, \uicontrol {P4 client}, and \uicontrol {P4 port}. To specify the details individually for several projects, use configuration files instead. Create a \c {p4config.txt} configuration file for each diff --git a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc index bb1e08c611..a9a9f55909 100644 --- a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc +++ b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc @@ -577,7 +577,7 @@ Select the \uicontrol HTTPS check box to prepend \c https to the Gerrit URL if Gerrit does not provide it. - \image qtcreator-gerrit-options.png + \image qtcreator-gerrit-options.png "Gerrit preferences" \section1 Working with Git Tools diff --git a/doc/qtcreator/src/webassembly/creator-webassembly.qdoc b/doc/qtcreator/src/webassembly/creator-webassembly.qdoc index 1ec3b5714f..32119a3bb3 100644 --- a/doc/qtcreator/src/webassembly/creator-webassembly.qdoc +++ b/doc/qtcreator/src/webassembly/creator-webassembly.qdoc @@ -100,7 +100,7 @@ \li \QC configures the \uicontrol {Emscripten SDK environment} for you if the \c emsdk is supported by the Qt for WebAssembly version that you will use for developing the application. - \image qtcreator-webassembly-options.png "Qt for WebAssembly device options" + \image qtcreator-webassembly-options.png "Qt for WebAssembly device preferences" \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits. \image qtcreator-kit-webassembly.png "Qt for WebAssembly kit" \li In the \uicontrol Compiler group, \uicontrol {Emscripten Compiler} diff --git a/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc b/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc index bb3dbbd180..b0708db98d 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -75,9 +75,6 @@ \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Designer. - \li Specify settins for generating classes and code in \uicontrol {Class - Generation}. - \li Specify embedded device profiles, that determine style, font, and screen resolution, for example, in \uicontrol{Embedded Design}. @@ -91,29 +88,40 @@ To preview the settings, select \uicontrol Tools > \uicontrol{Form Editor} > \uicontrol Preview, or press \key Alt+Shift+R. - \section1 Previewing Forms Using Device Skins + \section1 Previewing Forms Using Device Profiles - A \e {device skin} is a set of configuration files that describe a mobile + A \e {device profile} is a set of configuration files that describe a mobile device. It includes a border image that surrounds the form and depicts a mobile device with its buttons. - To preview your form using device skins: - - \list 1 - - \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Designer. - - \li Select the \uicontrol{Print/Preview Configuration} check box. + To preview your form using device profiles, select \uicontrol Tools > + \uicontrol {Form Editor} > \uicontrol {Preview In}, and then select a + device profile. - \li In the \uicontrol {Device skin} field, select a device skin. + \section2 Adding Device Profiles - \li When the form is open in \uicontrol Design mode, press \key Alt+Shift+R. + To add device profiles: - \li To end the preview, right-click the skin and select \uicontrol Close in - the context menu. + \list 1 + \li \uicontrol Edit > \uicontrol Preferences > \uicontrol Designer. + \image qtdesigner-embedded-design.png "Qt Designer Embedded Design preferences" + \li In \uicontrol {Embedded Design}, select \inlineimage icons/plus.png + to open the \uicontrol {Add Profile} dialog. + \image qtdesigner-add-profile.png "Add Profile dialog" + \li In \uicontrol Name, enter a name for the device. The name is + displayed as an option in \uicontrol {Preview In}. + \li In \uicontrol Family, select the font to use. + \li In \uicontrol {Point Size}, select the font size. + \li In \uicontrol Style, select one of the predefined styles. + \li In \uicontrol {Device DPI}, select one of the predefined DPI + values or \uicontrol {User defined} to specify a custom value. + \li Select \uicontrol OK to add the device profile to the list. \endlist + To import device profiles from .qdp files, select \uicontrol Open. To save + them as .qdp files, select \uicontrol Save. + \section1 Adding Widgets You can use Qt APIs to create plugins that extend Qt applications. This diff --git a/doc/qtcreatordev/src/qtcreator-documentation.qdoc b/doc/qtcreatordev/src/qtcreator-documentation.qdoc index 6723fd745d..66edefce4c 100644 --- a/doc/qtcreatordev/src/qtcreator-documentation.qdoc +++ b/doc/qtcreatordev/src/qtcreator-documentation.qdoc @@ -179,7 +179,7 @@ The \c {\else} command is sometimes used to replace some \QC specific text with text that applies to \QDS. For example, the following \c if-else - statement is needed in the \QC Manual sources, because the project wizards + statement is needed in the \QC Manual sources because the project wizards in \QDS are different from those in \QC, and are therefore described in a new topic that is located in the \QDS Manual sources: @@ -251,7 +251,7 @@ It is mostly used in the \QC Manual sources to specify values for the \c {\previouspage} and \c {\nextpage} commands depending on whether the \QDS Manual or \QC Manual is being built. For example, the - following \c if-else statement is needed, because only the Git + following \c if-else statement is needed because only the Git version control system is integrated to \QDS, and information about the other systems integrated to \QC is hidden: @@ -349,7 +349,7 @@ topic in the Qt reference documentation. This improves the consistency of the look and feel of Qt documentation, - and eliminates the need to describe parts of the UI in the text, because + and eliminates the need to describe parts of the UI in the text because you can just insert the number of the element you are referring to in brackets. diff --git a/doc/qtcreatordev/src/qtcreator-ui-text.qdoc b/doc/qtcreatordev/src/qtcreator-ui-text.qdoc index 059ef89c03..4c14fe704b 100644 --- a/doc/qtcreatordev/src/qtcreator-ui-text.qdoc +++ b/doc/qtcreatordev/src/qtcreator-ui-text.qdoc @@ -259,7 +259,7 @@ Use \c{QDir::toNativeSeparators()} for file and directory names that you pass to \c{tr().arg()}. - Do not use markup that spans the whole string, because that can be confusing + Do not use markup that spans the whole string because that can be confusing for translators. For example, instead of: \code diff --git a/doc/qtdesignstudio/config/qtdesignstudio.qdocconf b/doc/qtdesignstudio/config/qtdesignstudio.qdocconf index c3ba9b4f1b..f9722725e8 100644 --- a/doc/qtdesignstudio/config/qtdesignstudio.qdocconf +++ b/doc/qtdesignstudio/config/qtdesignstudio.qdocconf @@ -41,6 +41,7 @@ excludedirs += ../../qtcreator/examples/accelbubble \ ../../qtcreator/src/cmake \ ../../qtcreator/src/conan \ ../../qtcreator/src/debugger/creator-only \ + ../../qtcreator/src/docker \ ../../qtcreator/src/editors/creator-only \ ../../qtcreator/src/howto/creator-only \ ../../qtcreator/src/incredibuild \ diff --git a/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc b/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc index 1f9cfb8baf..38186fe45d 100644 --- a/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc +++ b/doc/qtdesignstudio/examples/doc/coffeemachine.qdoc @@ -168,7 +168,7 @@ \image coffee-machine-timeline-settings.png We set the start frame for the \c {"selection"} state to 400 and - the end frame to 200, because we are moving back on the timeline to display + the end frame to 200 because we are moving back on the timeline to display the selection sidebar. In the \uicontrol {Transition to state} field, we select the state to diff --git a/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc b/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc index 32cbc60ae3..2c35cf9bc8 100644 --- a/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc +++ b/doc/qtdesignstudio/examples/doc/washingMachineUI.qdoc @@ -90,7 +90,7 @@ \l {basic-image}{Image}, \l Text, and \l {Mouse Area} components. For the screen background, we use the \l {basic-rectangle}{Rectangle} component. - The text might look different on the desktop and MCUs, because on the + The text might look different on the desktop and MCUs because on the desktop we use dynamic font loading, whereas on MCUs fonts are compiled into application sources. Therefore, the text will always be Maven Pro on MCUs, whereas on the desktop you'd need to have Maven Pro installed @@ -227,7 +227,7 @@ \skipto Item { \printuntil } - We have to do it this way, because we are developing for MCUs. We have to + We have to do it this way because we are developing for MCUs. We have to use either \c when conditions or set the state directly through code, which overrides \c when conditions. Otherwise, we could just select the action to change to the state that we want in the \uicontrol Action field. diff --git a/doc/qtdesignstudio/src/components/qtquick-buttons.qdoc b/doc/qtdesignstudio/src/components/qtquick-buttons.qdoc index 2a6b36695d..21adaeba50 100644 --- a/doc/qtdesignstudio/src/components/qtquick-buttons.qdoc +++ b/doc/qtdesignstudio/src/components/qtquick-buttons.qdoc @@ -198,7 +198,7 @@ \inlineimage icons/anchor-fill.png (\uicontrol {Fill to Parent}) button to always make the image the same size as its parent. This makes the button - component scalable, because the image size is bound to the + component scalable because the image size is bound to the component size. \endlist \li Select the other border image to edit the values of its properties diff --git a/doc/qtdesignstudio/src/components/qtquick-controls.qdoc b/doc/qtdesignstudio/src/components/qtquick-controls.qdoc index 9faf9b85c9..1dba08cf28 100644 --- a/doc/qtdesignstudio/src/components/qtquick-controls.qdoc +++ b/doc/qtdesignstudio/src/components/qtquick-controls.qdoc @@ -70,7 +70,7 @@ components, unless it has been explicitly set for them. \note Take care when enabling wheel events for controls within scrollable - components, such as \l Flickable, because the control will consume the + components, such as \l Flickable because the control will consume the events, and therefore interrupt scrolling of the flickable. \uicontrol Spacing is useful for controls that have multiple or repetitive @@ -130,7 +130,7 @@ The button text should be a verb describing the action, or a noun matching the title of the popup that will be opened. - Don't use a button to set state, because a \l Switch is more suitable for + Don't use a button to set state because a \l Switch is more suitable for that purpose. \section3 Highlighted Buttons diff --git a/doc/qtdesignstudio/src/components/qtquick-images.qdoc b/doc/qtdesignstudio/src/components/qtquick-images.qdoc index 256289fd92..1dabc0aae6 100644 --- a/doc/qtdesignstudio/src/components/qtquick-images.qdoc +++ b/doc/qtdesignstudio/src/components/qtquick-images.qdoc @@ -118,7 +118,7 @@ If the source is an intrinsically scalable image (such as SVG), source size determines the size of the loaded image regardless of intrinsic size. - Avoid changing the source size property dynamically, because rendering an + Avoid changing the source size property dynamically because rendering an SVG is slow compared with rendering other image formats. If the source is a non-scalable image (such as JPEG), the loaded image will diff --git a/doc/qtdesignstudio/src/overviews/qtquick-placeholder-data.qdoc b/doc/qtdesignstudio/src/overviews/qtquick-placeholder-data.qdoc index 237cfc67ef..bfdb708a24 100644 --- a/doc/qtdesignstudio/src/overviews/qtquick-placeholder-data.qdoc +++ b/doc/qtdesignstudio/src/overviews/qtquick-placeholder-data.qdoc @@ -98,7 +98,7 @@ \endqml This works nicely for applications but \uicontrol {Form Editor} displays a - zero-sized component. A parent for the opened file does not exist, because + zero-sized component. A parent for the opened file does not exist because the context is missing. To get around the missing context, the idea of a \e {dummy context} is introduced. If you place a file with the same name as the application (here, example.qml) in the \c {dummydata/context} directory, diff --git a/doc/qtdesignstudio/src/qtdesignstudio-javascript.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-javascript.qdoc index e171806340..25e52b7ac9 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-javascript.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-javascript.qdoc @@ -54,7 +54,7 @@ \list 1 \li In the File Explorer, create a new folder for the mock data inside the \e imports folder in your project folder (for example, \e Data). - \note Make sure to capitalize the \e Data folder name, because you + \note Make sure to capitalize the \e Data folder name because you will need to import it as a component later, and component names must be capitalized. \note If you place this folder somewhere else in the project, you will @@ -73,7 +73,7 @@ \li Follow the instructions of the wizard to create the Qt Quick file in the data folder. In these instructions, the file is called \e Values.qml. - \note Make sure to capitalize the filename, because it will become + \note Make sure to capitalize the filename because it will become a custom component. \li Select \uicontrol File > \uicontrol {New File} > \uicontrol {JavaScript} > diff --git a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc index 1b3e004d2d..599be37cc7 100644 --- a/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc +++ b/doc/qtdesignstudio/src/qtquickdesigner-components/qtdesignstudio-visual-effects.qdoc @@ -67,7 +67,7 @@ The \uicontrol Cached property allows the effect output pixels to be cached in order to improve the rendering performance. Every time the source or effect properties are changed, the pixels in the cache must be updated. - Memory consumption is increased, because an extra buffer of memory is + Memory consumption is increased because an extra buffer of memory is required for storing the effect output. We recommend that you disable the cache when the source or the effect properties are animated. diff --git a/doc/qtdesignstudio/src/views/qtquick-form-editor.qdoc b/doc/qtdesignstudio/src/views/qtquick-form-editor.qdoc index 3d8b7afb2f..153f39fd02 100644 --- a/doc/qtdesignstudio/src/views/qtquick-form-editor.qdoc +++ b/doc/qtdesignstudio/src/views/qtquick-form-editor.qdoc @@ -186,7 +186,7 @@ \uicontrol {Sibling component spacing} field, specify the distance in pixels between siblings and the snapping lines. - \image qtquick-designer-options.png "Qt Quick Designer options" + \image qtquick-designer-options.png "Qt Quick Designer preferences" The following image shows the snapping lines (1) when \uicontrol {Parent component padding} is set to 5 pixels. diff --git a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc index 3901be0985..6b0197ffb3 100644 --- a/doc/qtdesignstudio/src/views/qtquick-properties.qdoc +++ b/doc/qtdesignstudio/src/views/qtquick-properties.qdoc @@ -439,7 +439,7 @@ The value of the \uicontrol Format field specifies the internal OpenGL format of the texture. Depending on the OpenGL implementation, it might allow you to save some texture memory. However, use the \uicontrol RGB - and \uicontrol Alpha values with caution, because the underlying hardware + and \uicontrol Alpha values with caution because the underlying hardware and driver might not support them. In the \uicontrol {Texture mirroring} field, specify whether the generated diff --git a/share/qtcreator/qmldesigner/workspacePresets/Essentials-3D.wrk b/share/qtcreator/qmldesigner/workspacePresets/Essentials-3D.wrk index fba5f4a822..4ed1c599c3 100644 --- a/share/qtcreator/qmldesigner/workspacePresets/Essentials-3D.wrk +++ b/share/qtcreator/qmldesigner/workspacePresets/Essentials-3D.wrk @@ -1,48 +1 @@ -<?xml version="1.0" encoding="UTF-8"?> -<QtAdvancedDockingSystem version="1" containers="1"> - <container floating="false"> - <splitter orientation="Horizontal" count="3"> - <splitter orientation="Vertical" count="2"> - <area tabs="4" current="Components"> - <widget name="Components" closed="false"/> - <widget name="Assets" closed="false"/> - <widget name="Navigator" closed="false"/> - <widget name="DebugView" closed="false"/> - </area> - <area tabs="3" current="Projects"> - <widget name="Projects" closed="false"/> - <widget name="FileSystem" closed="false"/> - <widget name="OpenDocuments" closed="false"/> - </area> - <sizes>653 436</sizes> - </splitter> - <splitter orientation="Vertical" count="4"> - <area tabs="2" current="FormEditor"> - <widget name="FormEditor" closed="false"/> - <widget name="TextEditor" closed="false"/> - </area> - <area tabs="1" current="Editor3D"> - <widget name="Editor3D" closed="false"/> - </area> - <area tabs="2" current="Timelines"> - <widget name="StatesEditor" closed="true"/> - <widget name="Timelines" closed="true"/> - </area> - <area tabs="1" current="OutputPane"> - <widget name="OutputPane" closed="true"/> - </area> - <sizes>600 600 0 0</sizes> - </splitter> - <splitter orientation="Vertical" count="2"> - <area tabs="1" current="Properties"> - <widget name="Properties" closed="false"/> - </area> - <area tabs="1" current="ConnectionView"> - <widget name="ConnectionView" closed="false"/> - </area> - <sizes>762 327</sizes> - </splitter> - <sizes>376 1127 376</sizes> - </splitter> - </container> -</QtAdvancedDockingSystem> +<?xml version="1.0" encoding="UTF-8"?><QtAdvancedDockingSystem version="1" userVersion="0" containers="1"><container floating="false"><splitter orientation="Horizontal" count="3"><splitter orientation="Vertical" count="3"><area tabs="2" current="Navigator"><widget name="Navigator" closed="false"/><widget name="DebugView" closed="false"/></area><area tabs="2" current="Assets"><widget name="Assets" closed="false"/><widget name="Components" closed="false"/></area><area tabs="3" current="Projects"><widget name="Projects" closed="false"/><widget name="FileSystem" closed="false"/><widget name="OpenDocuments" closed="false"/></area><sizes>355 428 404</sizes></splitter><splitter orientation="Vertical" count="4"><splitter orientation="Horizontal" count="2"><area tabs="2" current="FormEditor"><widget name="FormEditor" closed="false"/><widget name="TextEditor" closed="false"/></area><area tabs="1" current="MaterialEditor"><widget name="MaterialEditor" closed="false"/></area><sizes>678 678</sizes></splitter><splitter orientation="Horizontal" count="2"><area tabs="1" current="Editor3D"><widget name="Editor3D" closed="false"/></area><area tabs="1" current="MaterialBrowser"><widget name="MaterialBrowser" closed="false"/></area><sizes>678 678</sizes></splitter><area tabs="2" current="Timelines"><widget name="StatesEditor" closed="true"/><widget name="Timelines" closed="true"/></area><area tabs="1" current="OutputPane"><widget name="OutputPane" closed="true"/></area><sizes>641 547 0 0</sizes></splitter><splitter orientation="Vertical" count="2"><area tabs="1" current="Properties"><widget name="Properties" closed="false"/></area><area tabs="1" current="ConnectionView"><widget name="ConnectionView" closed="false"/></area><sizes>831 357</sizes></splitter><sizes>453 1357 453</sizes></splitter></container></QtAdvancedDockingSystem> diff --git a/src/plugins/android/androidpotentialkit.cpp b/src/plugins/android/androidpotentialkit.cpp index 19f38b1213..f0eba97053 100644 --- a/src/plugins/android/androidpotentialkit.cpp +++ b/src/plugins/android/androidpotentialkit.cpp @@ -74,7 +74,7 @@ bool AndroidPotentialKit::isEnabled() const } return QtSupport::QtVersionManager::version([](const QtSupport::QtVersion *v) { - return v->isValid() && v->type() == QString::fromLatin1(Constants::ANDROID_QT_TYPE); + return v->type() == QString::fromLatin1(Constants::ANDROID_QT_TYPE); }); } diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index 540bf6f0d2..7376f10a73 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -96,7 +96,8 @@ bool AndroidQtVersion::supportsMultipleQtAbis() const Abis AndroidQtVersion::detectQtAbis() const { - return Utils::transform<Abis>(androidAbis(), &AndroidManager::androidAbi2Abi); + const bool conf = AndroidConfigurations::currentConfig().sdkFullyConfigured(); + return conf ? Utils::transform<Abis>(androidAbis(), &AndroidManager::androidAbi2Abi) : Abis(); } void AndroidQtVersion::addToEnvironment(const Kit *k, Utils::Environment &env) const diff --git a/src/plugins/clangformat/clangformatfile.cpp b/src/plugins/clangformat/clangformatfile.cpp index 192bb47cb8..ef96f26ce1 100644 --- a/src/plugins/clangformat/clangformatfile.cpp +++ b/src/plugins/clangformat/clangformatfile.cpp @@ -186,6 +186,8 @@ void ClangFormatFile::fromCppCodeStyleSettings(const CppEditor::CppCodeStyleSett if (settings.indentNamespaceBody || settings.indentNamespaceBraces) m_style.NamespaceIndentation = FormatStyle::NamespaceIndentationKind::NI_All; + else + m_style.NamespaceIndentation = FormatStyle::NamespaceIndentationKind::NI_None; if (settings.indentClassBraces || settings.indentEnumBraces || settings.indentBlockBraces || settings.indentFunctionBraces) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index d22916a43d..b97d05ec18 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3852,6 +3852,7 @@ void GdbEngine::setupEngine() if (!debuggerSettings()->loadGdbInit.value()) gdbCommand.addArg("-n"); + // This is filled in DebuggerKitAspect::runnable Environment gdbEnv = rp.debugger.environment; gdbEnv.setupEnglishOutput(); if (rp.runAsRoot) @@ -4044,9 +4045,9 @@ void GdbEngine::setEnvironmentVariables() && str.compare("path", Qt::CaseInsensitive) == 0; }; - Environment sysEnv = Environment::systemEnvironment(); + Environment baseEnv = runParameters().debugger.environment; Environment runEnv = runParameters().inferior.environment; - const NameValueItems items = sysEnv.diff(runEnv); + const NameValueItems items = baseEnv.diff(runEnv); for (const EnvironmentItem &item : items) { // imitate the weird windows gdb behavior of setting the case of the path environment // variable name to an all uppercase PATH diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 0ab76a10c0..baac3b007e 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -447,7 +447,6 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse( model); proposal->m_document = m_document; proposal->m_pos = m_pos; - proposal->setFragile(true); proposal->setSupportsPrefix(false); setAsyncProposalAvailable(proposal); m_client->removeAssistProcessor(this); diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index b12fa8591e..ddfa6e4df0 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -84,6 +84,7 @@ private: void saveAll() { m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent()); + Settings::instance()->writeSettings(ICore::settings()); } }; @@ -101,6 +102,7 @@ bool MesonProjectPlugin::initialize(const QStringList & /*arguments*/, QString * ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE); FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build"); FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt"); + Settings::instance()->readSettings(ICore::settings()); return true; } diff --git a/src/plugins/mesonprojectmanager/settings/general/settings.cpp b/src/plugins/mesonprojectmanager/settings/general/settings.cpp index 03a9ed293a..694f8b063b 100644 --- a/src/plugins/mesonprojectmanager/settings/general/settings.cpp +++ b/src/plugins/mesonprojectmanager/settings/general/settings.cpp @@ -41,9 +41,12 @@ Settings::Settings() autorunMeson.setLabelText(tr("Autorun Meson")); autorunMeson.setToolTip(tr("Automatically run Meson when needed.")); - verboseNinja.setSettingsKey("meson.autorun"); + verboseNinja.setSettingsKey("ninja.verbose"); verboseNinja.setLabelText(tr("Ninja verbose mode")); verboseNinja.setToolTip(tr("Enables verbose mode by default when invoking Ninja.")); + + registerAspect(&autorunMeson); + registerAspect(&verboseNinja); } Settings *Settings::instance() diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 10758d451e..f867cc8bdd 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -47,6 +47,8 @@ #include <coreplugin/icore.h> #include <coreplugin/idocument.h> +#include <projectexplorer/devicesupport/idevice.h> + #include <utils/algorithm.h> #include <utils/detailswidget.h> #include <utils/layoutbuilder.h> @@ -486,8 +488,10 @@ void BuildConfiguration::setBuildDirectorySettingsKey(const QString &key) Environment BuildConfiguration::baseEnvironment() const { Environment result; - if (useSystemEnvironment()) - result = Environment::systemEnvironment(); + if (useSystemEnvironment()) { + ProjectExplorer::IDevice::ConstPtr devicePtr = BuildDeviceKitAspect::device(kit()); + result = devicePtr ? devicePtr->systemEnvironment() : Environment::systemEnvironment(); + } addToEnvironment(result); kit()->addToBuildEnvironment(result); result.modify(project()->additionalEnvironment()); diff --git a/src/plugins/projectexplorer/desktoprunconfiguration.cpp b/src/plugins/projectexplorer/desktoprunconfiguration.cpp index 983d58edaf..ab5322647c 100644 --- a/src/plugins/projectexplorer/desktoprunconfiguration.cpp +++ b/src/plugins/projectexplorer/desktoprunconfiguration.cpp @@ -68,7 +68,7 @@ DesktopRunConfiguration::DesktopRunConfiguration(Target *target, Id id, Kind kin { auto envAspect = addAspect<LocalEnvironmentAspect>(target); - addAspect<ExecutableAspect>(target, ExecutableAspect::HostDevice); + addAspect<ExecutableAspect>(target, ExecutableAspect::RunDevice); addAspect<ArgumentsAspect>(macroExpander()); addAspect<WorkingDirectoryAspect>(macroExpander(), envAspect); addAspect<TerminalAspect>(); diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.ui b/src/plugins/projectexplorer/editorsettingspropertiespage.ui index 8cac97dc08..0bcc6bff56 100644 --- a/src/plugins/projectexplorer/editorsettingspropertiespage.ui +++ b/src/plugins/projectexplorer/editorsettingspropertiespage.ui @@ -11,7 +11,7 @@ </rect> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="1"> + <item row="0" column="0"> <widget class="QPushButton" name="restoreButton"> <property name="text"> <string>Restore Global</string> diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 41941b9d20..42f74c77f9 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -25,6 +25,7 @@ #include "kit.h" +#include "devicesupport/idevice.h" #include "devicesupport/idevicefactory.h" #include "kitinformation.h" #include "kitmanager.h" @@ -575,14 +576,16 @@ void Kit::addToRunEnvironment(Environment &env) const Environment Kit::buildEnvironment() const { - Environment env = Environment::systemEnvironment(); // FIXME: Use build device + IDevice::ConstPtr device = BuildDeviceKitAspect::device(this); + Environment env = device ? device->systemEnvironment() : Environment::systemEnvironment(); addToBuildEnvironment(env); return env; } Environment Kit::runEnvironment() const { - Environment env = Environment::systemEnvironment(); // FIXME: Use run device + IDevice::ConstPtr device = DeviceKitAspect::device(this); + Environment env = device ? device->systemEnvironment() : Environment::systemEnvironment(); addToRunEnvironment(env); return env; } diff --git a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp index c74a579828..0ebb2864be 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp +++ b/src/plugins/qmldesigner/components/connectioneditor/dynamicpropertiesmodel.cpp @@ -298,6 +298,9 @@ AbstractProperty DynamicPropertiesModel::abstractPropertyForRow(int rowNumber) c const int internalId = data(index(rowNumber, TargetModelNodeRow), Qt::UserRole + 1).toInt(); const QString targetPropertyName = data(index(rowNumber, TargetModelNodeRow), Qt::UserRole + 2).toString(); + if (!connectionView()->isAttached()) + return AbstractProperty(); + ModelNode modelNode = connectionView()->modelNodeForInternalId(internalId); if (modelNode.isValid()) @@ -415,16 +418,18 @@ QStringList DynamicPropertiesModel::possibleSourceProperties(const BindingProper void DynamicPropertiesModel::deleteDynamicPropertyByRow(int rowNumber) { - BindingProperty bindingProperty = bindingPropertyForRow(rowNumber); - if (bindingProperty.isValid()) { - bindingProperty.parentModelNode().removeProperty(bindingProperty.name()); - } + connectionView()->executeInTransaction("DynamicPropertiesModel::deleteDynamicPropertyByRow", [this, rowNumber]() { + BindingProperty bindingProperty = bindingPropertyForRow(rowNumber); + if (bindingProperty.isValid()) { + bindingProperty.parentModelNode().removeProperty(bindingProperty.name()); + } - VariantProperty variantProperty = variantPropertyForRow(rowNumber); + VariantProperty variantProperty = variantPropertyForRow(rowNumber); - if (variantProperty.isValid()) { - variantProperty.parentModelNode().removeProperty(variantProperty.name()); - } + if (variantProperty.isValid()) { + variantProperty.parentModelNode().removeProperty(variantProperty.name()); + } + }); resetModel(); } diff --git a/src/plugins/qmldesigner/components/curveeditor/animationcurve.cpp b/src/plugins/qmldesigner/components/curveeditor/animationcurve.cpp index 3e910638da..36e577d38d 100644 --- a/src/plugins/qmldesigner/components/curveeditor/animationcurve.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/animationcurve.cpp @@ -36,14 +36,16 @@ namespace QmlDesigner { AnimationCurve::AnimationCurve() - : m_fromData(false) + : m_type(AnimationCurve::ValueType::Undefined) + , m_fromData(false) , m_minY(std::numeric_limits<double>::max()) , m_maxY(std::numeric_limits<double>::lowest()) , m_frames() {} -AnimationCurve::AnimationCurve(const std::vector<Keyframe> &frames) - : m_fromData(false) +AnimationCurve::AnimationCurve(AnimationCurve::ValueType type, const std::vector<Keyframe> &frames) + : m_type(type) + , m_fromData(false) , m_minY(std::numeric_limits<double>::max()) , m_maxY(std::numeric_limits<double>::lowest()) , m_frames(frames) @@ -51,8 +53,13 @@ AnimationCurve::AnimationCurve(const std::vector<Keyframe> &frames) analyze(); } -AnimationCurve::AnimationCurve(const QEasingCurve &easing, const QPointF &start, const QPointF &end) - : m_fromData(true) +AnimationCurve::AnimationCurve( + AnimationCurve::ValueType type, + const QEasingCurve &easing, + const QPointF &start, + const QPointF &end) + : m_type(type) + , m_fromData(true) , m_minY(std::numeric_limits<double>::max()) , m_maxY(std::numeric_limits<double>::lowest()) , m_frames() @@ -117,6 +124,11 @@ bool AnimationCurve::hasUnified() const return false; } +AnimationCurve::ValueType AnimationCurve::valueType() const +{ + return m_type; +} + double AnimationCurve::minimumTime() const { if (!m_frames.empty()) diff --git a/src/plugins/qmldesigner/components/curveeditor/animationcurve.h b/src/plugins/qmldesigner/components/curveeditor/animationcurve.h index ba39ecd347..1c51d05d80 100644 --- a/src/plugins/qmldesigner/components/curveeditor/animationcurve.h +++ b/src/plugins/qmldesigner/components/curveeditor/animationcurve.h @@ -40,11 +40,17 @@ class CurveSegment; class AnimationCurve { public: + using ValueType = Keyframe::ValueType; + AnimationCurve(); - AnimationCurve(const std::vector<Keyframe> &frames); + AnimationCurve(ValueType type, const std::vector<Keyframe> &frames); - AnimationCurve(const QEasingCurve &easing, const QPointF &start, const QPointF &end); + AnimationCurve( + ValueType type, + const QEasingCurve &easing, + const QPointF &start, + const QPointF &end); bool isEmpty() const; @@ -54,6 +60,8 @@ public: bool hasUnified() const; + ValueType valueType() const; + double minimumTime() const; double maximumTime() const; @@ -93,6 +101,8 @@ public: private: void analyze(); + ValueType m_type; + bool m_fromData; double m_minY; diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp index 217e0e0eb7..29e88e2581 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp @@ -42,6 +42,7 @@ namespace QmlDesigner { CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) : QWidget(parent) , m_infoText(nullptr) + , m_statusLine(nullptr) , m_toolbar(new CurveEditorToolBar(model, this)) , m_tree(new TreeView(model, this)) , m_view(new GraphicsView(model, this)) @@ -61,10 +62,13 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) area->setWidget(splitter); area->setWidgetResizable(true); + m_statusLine = new QLabel(); + auto *box = new QVBoxLayout; box->addWidget(m_infoText); box->addWidget(m_toolbar); box->addWidget(area); + box->addWidget(m_statusLine); setLayout(box); connect(m_toolbar, &CurveEditorToolBar::defaultClicked, [this]() { @@ -89,9 +93,11 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) m_view->viewport()->update(); }); - connect( - m_toolbar, &CurveEditorToolBar::currentFrameChanged, - model, &CurveEditorModel::commitCurrentFrame); + connect(m_toolbar, &CurveEditorToolBar::currentFrameChanged, [this, model](int frame) { + model->setCurrentFrame(frame); + updateStatusLine(); + m_view->viewport()->update(); + }); connect( m_view, &GraphicsView::currentFrameChanged, @@ -106,6 +112,8 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) auto updateTimeline = [this, model](bool validTimeline) { if (validTimeline) { + updateStatusLine(); + m_view->setCurrentFrame(m_view->model()->currentFrame(), false); m_toolbar->updateBoundsSilent(model->minimumTime(), model->maximumTime()); m_toolbar->show(); m_tree->show(); @@ -119,6 +127,8 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) } }; connect(model, &CurveEditorModel::timelineChanged, this, updateTimeline); + + connect(model, &CurveEditorModel::setStatusLineMsg, m_statusLine, &QLabel::setText); } bool CurveEditor::dragging() const @@ -153,4 +163,11 @@ void CurveEditor::hideEvent(QHideEvent *event) QWidget::hideEvent(event); } +void CurveEditor::updateStatusLine() +{ + int currentFrame = m_view->model()->currentFrame(); + QString currentText = QString("Playhead frame %1").arg(currentFrame); + m_statusLine->setText(currentText); +} + } // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditor.h b/src/plugins/qmldesigner/components/curveeditor/curveeditor.h index 9d1a6f68f9..2265c5538f 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditor.h +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditor.h @@ -59,8 +59,12 @@ protected: void hideEvent(QHideEvent *event) override; private: + void updateStatusLine(); + QLabel *m_infoText; + QLabel *m_statusLine; + CurveEditorToolBar *m_toolbar; TreeView *m_tree; diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp index 4377671817..fb60298e61 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp @@ -44,12 +44,18 @@ namespace QmlDesigner { CurveEditorModel::CurveEditorModel(QObject *parent) : TreeModel(parent) , m_hasTimeline(false) + , m_currentFrame(0) , m_minTime(CurveEditorStyle::defaultTimeMin) , m_maxTime(CurveEditorStyle::defaultTimeMax) {} CurveEditorModel::~CurveEditorModel() {} +int CurveEditorModel::currentFrame() const +{ + return m_currentFrame; +} + double CurveEditorModel::minimumTime() const { return m_minTime; @@ -102,6 +108,7 @@ void CurveEditorModel::setTimeline(const QmlDesigner::QmlTimeline &timeline) m_hasTimeline = timeline.isValid(); if (m_hasTimeline) { + m_currentFrame = static_cast<int>(timeline.currentKeyframe()); m_minTime = timeline.startKeyframe(); m_maxTime = timeline.endKeyframe(); std::vector<TreeItem *> items; @@ -116,8 +123,8 @@ void CurveEditorModel::setTimeline(const QmlDesigner::QmlTimeline &timeline) void CurveEditorModel::setCurrentFrame(int frame) { - if (graphicsView()) - graphicsView()->setCurrentFrame(frame, false); + m_currentFrame = frame; + emit commitCurrentFrame(m_currentFrame); } void CurveEditorModel::setMinimumTime(double time) @@ -262,7 +269,7 @@ TreeItem *CurveEditorModel::createTopLevelItem(const QmlDesigner::QmlTimeline &t AnimationCurve curve = createAnimationCurve(grp); if (!curve.isEmpty()) { QString name = QString::fromUtf8(grp.propertyName()); - auto propertyItem = new PropertyTreeItem(name, curve, typeFrom(grp)); + auto propertyItem = new PropertyTreeItem(name, curve); QmlDesigner::ModelNode target = grp.modelNode(); if (target.hasAuxiliaryData("locked")) @@ -288,7 +295,7 @@ AnimationCurve CurveEditorModel::createAnimationCurve(const QmlDesigner::QmlTime { switch (typeFrom(group)) { case PropertyTreeItem::ValueType::Bool: - return createDoubleCurve(group); + return createBooleanCurve(group); case PropertyTreeItem::ValueType::Integer: return createDoubleCurve(group); @@ -346,7 +353,13 @@ std::vector<Keyframe> resolveSmallCurves(const std::vector<Keyframe> &frames) continue; } #endif - AnimationCurve acurve(curve, previous.position(), frame.position()); + // This is just a temporary curve. ValueType does not matter + AnimationCurve acurve( + AnimationCurve::ValueType::Undefined, + curve, + previous.position(), + frame.position()); + previous.setRightHandle(acurve.keyframeAt(0).rightHandle()); out.push_back(acurve.keyframeAt(1)); continue; @@ -357,6 +370,17 @@ std::vector<Keyframe> resolveSmallCurves(const std::vector<Keyframe> &frames) return out; } + +AnimationCurve CurveEditorModel::createBooleanCurve(const QmlDesigner::QmlTimelineKeyframeGroup &group) +{ + std::vector<Keyframe> keyframes = createKeyframes(group.keyframePositions()); + + for (auto& keyframe : keyframes) + keyframe.setInterpolation(Keyframe::Interpolation::Step); + + return AnimationCurve(typeFrom(group), keyframes); +} + AnimationCurve CurveEditorModel::createDoubleCurve(const QmlDesigner::QmlTimelineKeyframeGroup &group) { std::vector<Keyframe> keyframes = createKeyframes(group.keyframePositions()); @@ -374,7 +398,7 @@ AnimationCurve CurveEditorModel::createDoubleCurve(const QmlDesigner::QmlTimelin } } - return AnimationCurve(keyframes); + return AnimationCurve(typeFrom(group), keyframes); } } // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h index 041642aa61..aa804058c6 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h @@ -48,6 +48,8 @@ class CurveEditorModel : public TreeModel Q_OBJECT signals: + void setStatusLineMsg(const QString& msg); + void commitCurrentFrame(int frame); void commitStartFrame(int frame); @@ -63,6 +65,8 @@ public: ~CurveEditorModel() override; + int currentFrame() const; + double minimumTime() const; double maximumTime() const; @@ -92,10 +96,14 @@ private: AnimationCurve createAnimationCurve(const QmlDesigner::QmlTimelineKeyframeGroup &group); + AnimationCurve createBooleanCurve(const QmlDesigner::QmlTimelineKeyframeGroup &group); + AnimationCurve createDoubleCurve(const QmlDesigner::QmlTimelineKeyframeGroup &group); bool m_hasTimeline = false; + int m_currentFrame = 0; + double m_minTime = 0.; double m_maxTime = 0.; diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp index f05f98c8f3..b24764a2f3 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp @@ -35,6 +35,7 @@ #include <variantproperty.h> #include <qmlstate.h> #include <qmltimeline.h> +#include <nodelistproperty.h> #include <cmath> @@ -196,6 +197,9 @@ void CurveEditorView::propertiesRemoved([[maybe_unused]] const QList<AbstractPro QmlTimeline CurveEditorView::activeTimeline() const { + if (!isAttached()) + return {}; + QmlModelState state = currentState(); if (state.isBaseState()) { for (const ModelNode &node : allModelNodesOfType("QtQuick.Timeline.Timeline")) { @@ -316,42 +320,56 @@ void commitAuxiliaryData(ModelNode &node, TreeItem *item) void CurveEditorView::commitKeyframes(TreeItem *item) { + if (!isAttached()) + return; + if (auto *nitem = item->asNodeItem()) { ModelNode node = modelNodeForId(nitem->name()); commitAuxiliaryData(node, item); } else if (auto *pitem = item->asPropertyItem()) { QmlTimeline currentTimeline = activeTimeline(); + if (!currentTimeline.isValid()) + return; + QmlTimelineKeyframeGroup group = timelineKeyframeGroup(currentTimeline, pitem); if (group.isValid()) { ModelNode groupNode = group.modelNode(); commitAuxiliaryData(groupNode, item); - auto replaceKeyframes = [&group, pitem, this]() { + auto replaceKeyframes = [&group, pitem, this]() mutable { m_block = true; - for (auto frame : group.keyframes()) + + for (auto& frame : group.keyframes()) frame.destroy(); - Keyframe previous; - for (auto &&frame : pitem->curve().keyframes()) { - QPointF pos = frame.position(); - group.setValue(QVariant(pos.y()), pos.x()); - - if (previous.isValid()) { - if (frame.interpolation() == Keyframe::Interpolation::Bezier || - frame.interpolation() == Keyframe::Interpolation::Step ) { - CurveSegment segment(previous, frame); - if (segment.isValid()) - attachEasingCurve(group, pos.x(), segment.easingCurve()); - } else if (frame.interpolation() == Keyframe::Interpolation::Easing) { - QVariant data = frame.data(); - if (data.type() == static_cast<int>(QMetaType::QEasingCurve)) - attachEasingCurve(group, pos.x(), data.value<QEasingCurve>()); + AnimationCurve curve = pitem->curve(); + if (curve.valueType() == AnimationCurve::ValueType::Bool) { + for (const auto& frame : curve.keyframes()) { + QPointF pos = frame.position(); + group.setValue(QVariant(pos.y()), pos.x()); + } + } else { + Keyframe previous; + for (const auto& frame : curve.keyframes()) { + QPointF pos = frame.position(); + group.setValue(QVariant(pos.y()), pos.x()); + + if (previous.isValid()) { + if (frame.interpolation() == Keyframe::Interpolation::Bezier || + frame.interpolation() == Keyframe::Interpolation::Step ) { + CurveSegment segment(previous, frame); + if (segment.isValid()) + attachEasingCurve(group, pos.x(), segment.easingCurve()); + } else if (frame.interpolation() == Keyframe::Interpolation::Easing) { + QVariant data = frame.data(); + if (data.type() == static_cast<int>(QMetaType::QEasingCurve)) + attachEasingCurve(group, pos.x(), data.value<QEasingCurve>()); + } } + previous = frame; } - - previous = frame; } m_block = false; }; diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp index 0b7ab9d391..5b05309976 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp @@ -37,22 +37,11 @@ namespace QmlDesigner { -CurveItem::CurveItem(QGraphicsItem *parent) - : CurveEditorItem(parent) - , m_id(0) - , m_style() - , m_type(PropertyTreeItem::ValueType::Undefined) - , m_component(PropertyTreeItem::Component::Generic) - , m_transform() - , m_keyframes() - , m_itemDirty(false) -{} - CurveItem::CurveItem(unsigned int id, const AnimationCurve &curve, QGraphicsItem *parent) : CurveEditorItem(parent) , m_id(id) , m_style() - , m_type(PropertyTreeItem::ValueType::Undefined) + , m_type(curve.valueType()) , m_component(PropertyTreeItem::Component::Generic) , m_transform() , m_keyframes() @@ -235,14 +224,16 @@ PropertyTreeItem::Component CurveItem::component() const return m_component; } -AnimationCurve CurveItem::curve() const +AnimationCurve CurveItem::curve(bool remap) const { std::vector<Keyframe> frames; frames.reserve(m_keyframes.size()); + + bool map = (m_type == AnimationCurve::ValueType::Bool) && remap; for (auto *frameItem : m_keyframes) - frames.push_back(frameItem->keyframe()); + frames.push_back(frameItem->keyframe(map)); - return AnimationCurve(frames); + return AnimationCurve(m_type, frames); } AnimationCurve CurveItem::resolvedCurve() const @@ -278,11 +269,13 @@ std::vector<AnimationCurve> CurveItem::curves() const Keyframe previous = tmp.back(); if (tmp.size() >= 2) - out.push_back(AnimationCurve(tmp)); + out.push_back(AnimationCurve(m_type, tmp)); - out.push_back(AnimationCurve(current.data().value<QEasingCurve>(), - previous.position(), - current.position())); + out.push_back(AnimationCurve( + m_type, + current.data().value<QEasingCurve>(), + previous.position(), + current.position())); tmp.clear(); tmp.push_back(current); @@ -293,7 +286,7 @@ std::vector<AnimationCurve> CurveItem::curves() const } if (!tmp.empty()) - out.push_back(AnimationCurve(tmp)); + out.push_back(AnimationCurve(m_type, tmp)); return out; } @@ -384,7 +377,7 @@ void CurveItem::setDirty(bool dirty) void CurveItem::setHandleVisibility(bool visible) { - for (auto frame : qAsConst(m_keyframes)) + for (auto *frame : qAsConst(m_keyframes)) frame->setHandleVisibility(visible); } @@ -402,7 +395,7 @@ void CurveItem::setCurve(const AnimationCurve &curve) { freeClear(m_keyframes); - for (const auto &frame : curve.keyframes()) { + for (const auto& frame : curve.keyframes()) { auto *item = new KeyframeItem(frame, this); item->setLocked(locked()); item->setComponentTransform(m_transform); @@ -419,7 +412,7 @@ QRectF CurveItem::setComponentTransform(const QTransform &transform) { prepareGeometryChange(); m_transform = transform; - for (auto frame : qAsConst(m_keyframes)) + for (auto *frame : qAsConst(m_keyframes)) frame->setComponentTransform(transform); return boundingRect(); @@ -438,6 +431,14 @@ void CurveItem::setInterpolation(Keyframe::Interpolation interpolation) if (m_keyframes.empty()) return; + if (m_type == AnimationCurve::ValueType::Bool) { + if (interpolation != Keyframe::Interpolation::Step) { + interpolation = Keyframe::Interpolation::Step; + QString msg("Warning: Curves of type bool can only be step-interpolated!"); + emit curveMessage(msg); + } + } + KeyframeItem *prevItem = m_keyframes[0]; for (int i = 1; i < m_keyframes.size(); ++i) { KeyframeItem *currItem = m_keyframes[i]; @@ -454,7 +455,7 @@ void CurveItem::setInterpolation(Keyframe::Interpolation interpolation) prevItem = currItem; } setDirty(false); - emit curveChanged(id(), curve()); + emit curveChanged(id(), curve(true)); } void CurveItem::setDefaultInterpolation() @@ -466,7 +467,7 @@ void CurveItem::setDefaultInterpolation() if (frame->selected()) frame->setDefaultInterpolation(); } - emit curveChanged(id(), curve()); + emit curveChanged(id(), curve(true)); } void CurveItem::toggleUnified() @@ -478,12 +479,13 @@ void CurveItem::toggleUnified() if (frame->selected()) frame->toggleUnified(); } - emit curveChanged(id(), curve()); + emit curveChanged(id(), curve(true)); } void CurveItem::connect(GraphicsScene *scene) { QObject::connect(this, &CurveItem::curveChanged, scene, &GraphicsScene::curveChanged); + QObject::connect(this, &CurveItem::curveMessage, scene, &GraphicsScene::curveMessage); QObject::connect(this, &CurveItem::keyframeMoved, scene, &GraphicsScene::keyframeMoved); QObject::connect(this, &CurveItem::handleMoved, scene, &GraphicsScene::handleMoved); @@ -498,7 +500,7 @@ void CurveItem::insertKeyframeByTime(double time) acurve.insert(time); setCurve(acurve); - emit curveChanged(id(), curve()); + emit curveChanged(id(), curve(true)); } void CurveItem::deleteSelectedKeyframes() @@ -516,7 +518,14 @@ void CurveItem::deleteSelectedKeyframes() markDirty(); - emit curveChanged(id(), curve()); + emit curveChanged(id(), curve(true)); +} + +void CurveItem::remapValue(double min, double max) +{ + for (auto *frameItem : qAsConst(m_keyframes)) { + frameItem->remapValue(min, max); + } } void CurveItem::markDirty() diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h index 5a2f363df7..c6bdc6d3d4 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h @@ -46,6 +46,8 @@ class CurveItem : public CurveEditorItem Q_OBJECT signals: + void curveMessage(const QString& msg); + void curveChanged(unsigned int id, const AnimationCurve &curve); void keyframeMoved(KeyframeItem *item, const QPointF &direction); @@ -53,8 +55,6 @@ signals: void handleMoved(KeyframeItem *frame, HandleItem::Slot slot, double angle, double deltaLength); public: - CurveItem(QGraphicsItem *parent = nullptr); - CurveItem(unsigned int id, const AnimationCurve &curve, QGraphicsItem *parent = nullptr); ~CurveItem() override; @@ -93,7 +93,7 @@ public: PropertyTreeItem::Component component() const; - AnimationCurve curve() const; + AnimationCurve curve(bool remap = false) const; AnimationCurve resolvedCurve() const; @@ -135,6 +135,8 @@ public: void deleteSelectedKeyframes(); + void remapValue(double min, double max); + private: void markDirty(); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp index 88c4ac6882..a147151510 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp @@ -426,7 +426,7 @@ void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) if (curve->isDirty()) { m_dirty = true; curve->setDirty(false); - emit curveChanged(curve->id(), curve->curve()); + emit curveChanged(curve->id(), curve->curve(true)); } } diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h index 2e6bc3b080..58738d116b 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h @@ -41,6 +41,8 @@ class GraphicsScene : public QGraphicsScene Q_OBJECT signals: + void curveMessage(const QString& msg); + void curveChanged(unsigned int id, const AnimationCurve &curve); public: diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp index 5b4e6e3cfb..8ab71ace97 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp @@ -83,6 +83,8 @@ GraphicsView::GraphicsView(CurveEditorModel *model, QWidget *parent) connect(&m_dialog, &CurveEditorStyleDialog::styleChanged, this, &GraphicsView::setStyle); + connect(m_scene, &GraphicsScene::curveMessage, m_model, &CurveEditorModel::setStatusLineMsg); + auto itemSlot = [this](unsigned int id, const AnimationCurve &curve) { m_model->setCurve(id, curve); applyZoom(m_zoomX, m_zoomY); @@ -560,7 +562,14 @@ void GraphicsView::applyZoom(double x, double y, const QPoint &pivot) scrollContent(mapTimeToX(deltaTransformed.x()), mapValueToY(deltaTransformed.y())); } + for (auto *curve : m_scene->curves()) { + if (curve->valueType() == AnimationCurve::ValueType::Bool) { + curve->remapValue(minValue, maxValue); + } + } + m_scene->doNotMoveItems(false); + this->update(); } void GraphicsView::drawGrid(QPainter *painter) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp index e456170649..a4c117ae04 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp @@ -102,8 +102,16 @@ void KeyframeItem::lockedCallback() KeyframeItem::~KeyframeItem() {} -Keyframe KeyframeItem::keyframe() const -{ +Keyframe KeyframeItem::keyframe(bool remap) const +{ + if (remap) { + auto frame = m_frame; + auto pos = frame.position(); + auto center = m_min + ((m_max - m_min) / 2.0); + pos.ry() = pos.y() > center ? 1.0 : 0.0; + frame.setPosition(pos); + return frame; + } return m_frame; } @@ -349,6 +357,18 @@ void KeyframeItem::moveHandle(HandleItem::Slot slot, double deltaAngle, double d emit redrawCurve(); } +void KeyframeItem::remapValue(double min, double max) +{ + auto center = m_min + ((m_max - m_min) / 2.0); + auto pos = m_frame.position(); + pos.ry() = pos.y() > center ? max : min; + m_frame.setPosition(pos); + + m_max = max; + m_min = min; + setKeyframe(m_frame); +} + void KeyframeItem::updateHandle(HandleItem *handle, bool emitChanged) { bool ok = false; @@ -421,8 +441,10 @@ QVariant KeyframeItem::itemChange(QGraphicsItem::GraphicsItemChange change, cons if (curveItem->valueType() == PropertyTreeItem::ValueType::Integer) position.setY(std::round(position.y())); - else if (curveItem->valueType() == PropertyTreeItem::ValueType::Bool) - position.setY(position.y() > 0.5 ? 1.0 : 0.0); + else if (curveItem->valueType() == PropertyTreeItem::ValueType::Bool) { + double center = m_min + ((m_max - m_min) / 2.0); + position.setY(position.y() > center ? m_max : m_min); + } if (!legalLeft() || !legalRight()) { return QVariant(m_transform.map(position)); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h index 3e566c84b7..14c3ae7426 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h @@ -64,7 +64,7 @@ public: void lockedCallback() override; - Keyframe keyframe() const; + Keyframe keyframe(bool remap = false) const; bool isUnified() const; @@ -106,6 +106,8 @@ public: void moveHandle(HandleItem::Slot slot, double deltaAngle, double deltaLength); + void remapValue(double min, double max); + protected: QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) override; @@ -134,6 +136,9 @@ private: QPointF m_validPos; bool m_visibleOverride = true; + + double m_min = 0.0; + double m_max = 1.0; }; } // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/treemodel.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/treemodel.cpp index f21a0aa4cd..cd8edbf01e 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/treemodel.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/treemodel.cpp @@ -84,7 +84,6 @@ CurveItem *TreeModel::curveItem(TreeItem *item) { if (auto *pti = item->asPropertyItem()) { auto *citem = new CurveItem(pti->id(), pti->curve()); - citem->setValueType(pti->valueType()); citem->setComponent(pti->component()); citem->setLocked(pti->locked() || item->implicitlyLocked()); citem->setPinned(pti->pinned() || item->implicitlyPinned()); diff --git a/src/plugins/qmldesigner/components/curveeditor/keyframe.h b/src/plugins/qmldesigner/components/curveeditor/keyframe.h index fd3c2cb88b..2757d229f5 100644 --- a/src/plugins/qmldesigner/components/curveeditor/keyframe.h +++ b/src/plugins/qmldesigner/components/curveeditor/keyframe.h @@ -35,6 +35,7 @@ namespace QmlDesigner { class Keyframe { public: + enum class ValueType { Undefined, Bool, Integer, Double }; enum class Interpolation { Undefined, Step, Linear, Bezier, Easing }; Keyframe(); diff --git a/src/plugins/qmldesigner/components/curveeditor/treeitem.cpp b/src/plugins/qmldesigner/components/curveeditor/treeitem.cpp index e9343c89a0..cd6b9945e4 100644 --- a/src/plugins/qmldesigner/components/curveeditor/treeitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/treeitem.cpp @@ -322,11 +322,9 @@ std::vector<PropertyTreeItem *> NodeTreeItem::properties() const return out; } -PropertyTreeItem::PropertyTreeItem(const QString &name, - const AnimationCurve &curve, - const ValueType &type) +PropertyTreeItem::PropertyTreeItem(const QString &name, const AnimationCurve &curve) : TreeItem(name) - , m_type(type) + , m_type(curve.valueType()) , m_component(Component::Generic) , m_curve(curve) {} diff --git a/src/plugins/qmldesigner/components/curveeditor/treeitem.h b/src/plugins/qmldesigner/components/curveeditor/treeitem.h index 6053877809..bf76d43706 100644 --- a/src/plugins/qmldesigner/components/curveeditor/treeitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/treeitem.h @@ -151,15 +151,10 @@ class PropertyTreeItem : public TreeItem public: enum class Component { Generic, R, G, B, A, X, Y, Z, W }; - enum class ValueType { - Undefined, - Bool, - Integer, - Double, - }; + using ValueType = AnimationCurve::ValueType; public: - PropertyTreeItem(const QString &name, const AnimationCurve &curve, const ValueType &type); + PropertyTreeItem(const QString &name, const AnimationCurve &curve); PropertyTreeItem *asPropertyItem() override; diff --git a/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp index 18fcba3efc..0777773400 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp @@ -65,6 +65,9 @@ void FileResourcesModel::setModelNodeBackend(const QVariant &modelNodeBackend) if (backendObjectCasted) { QmlDesigner::Model *model = backendObjectCasted->qmlObjectNode().modelNode().model(); + if (!model) + return; + m_docPath = QDir{QFileInfo{model->fileUrl().toLocalFile()}.absolutePath()}; m_path = QUrl::fromLocalFile( QmlDesigner::DocumentManager::currentProjectDirPath().toFileInfo().absoluteFilePath()); diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp index 2acf6601ab..8511ebcfaf 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinegraphicsscene.cpp @@ -444,10 +444,12 @@ void TimelineGraphicsScene::invalidateHeightForTarget(const ModelNode &target) void TimelineGraphicsScene::invalidateScene() { - ModelNode node = timelineView()->modelNodeForId( - timelineWidget()->toolBar()->currentTimelineId()); - setTimeline(QmlTimeline(node)); - invalidateScrollbar(); + if (timelineView()->isAttached()) { + ModelNode node = timelineView()->modelNodeForId( + timelineWidget()->toolBar()->currentTimelineId()); + setTimeline(QmlTimeline(node)); + invalidateScrollbar(); + } } void TimelineGraphicsScene::invalidateScrollbar() diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp index b826440ae8..f412461017 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinewidget.cpp @@ -623,6 +623,7 @@ void TimelineWidget::showEvent([[maybe_unused]] QShowEvent *event) m_timelineView->setEnabled(true); graphicsScene()->setWidth(m_graphicsView->viewport()->width()); + graphicsScene()->invalidateScene(); graphicsScene()->invalidateLayout(); graphicsScene()->invalidate(); graphicsScene()->onShow(); diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 5cd4804bf3..7ebd2fcd8b 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -44,6 +44,7 @@ #include <projectexplorer/kitinformation.h> #include <projectexplorer/kitmanager.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/session.h> #include <projectexplorer/target.h> #include <qtsupport/baseqtversion.h> @@ -109,6 +110,10 @@ QmlProject::QmlProject(const Utils::FilePath &fileName) setBuildSystemCreator([](Target *t) { return new QmlBuildSystem(t); }); if (QmlProject::isQtDesignStudio()) { + + EditorManager::closeAllDocuments(); + SessionManager::closeAllProjects(); + m_openFileConnection = connect(this, &QmlProject::anyParsingFinished, diff --git a/src/plugins/qnx/qnxdebugsupport.cpp b/src/plugins/qnx/qnxdebugsupport.cpp index a810d20719..58c0603b17 100644 --- a/src/plugins/qnx/qnxdebugsupport.cpp +++ b/src/plugins/qnx/qnxdebugsupport.cpp @@ -37,6 +37,7 @@ #include <projectexplorer/devicesupport/deviceprocessesdialog.h> #include <projectexplorer/devicesupport/deviceusedportsgatherer.h> +#include <projectexplorer/devicesupport/idevice.h> #include <projectexplorer/kit.h> #include <projectexplorer/kitchooser.h> #include <projectexplorer/kitinformation.h> @@ -106,7 +107,7 @@ public: QStringList arguments; if (portsGatherer->useGdbServer()) { int pdebugPort = portsGatherer->gdbServer().port(); - cmd.setExecutable(FilePath::fromString(QNX_DEBUG_EXECUTABLE)); + cmd.setExecutable(device()->filePath(QNX_DEBUG_EXECUTABLE)); arguments.append(QString::number(pdebugPort)); } if (portsGatherer->useQmlServer()) { diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index 22c937ac1c..6613042c52 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -155,7 +155,8 @@ void CodeAssistantPrivate::invoke(AssistKind kind, IAssistProvider *provider) stopAutomaticProposalTimer(); - if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile()) { + if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile() + && m_proposal->supportsPrefix()) { m_proposalWidget->setReason(ExplicitlyInvoked); m_proposalWidget->updateProposal(m_editorWidget->textAt( m_proposal->basePosition(), @@ -324,8 +325,10 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR // TODO: The proposal should own the model until someone takes it explicitly away. QScopedPointer<IAssistProposal> proposalCandidate(newProposal); - if (isDisplayingProposal() && !m_proposal->isFragile()) + if (isDisplayingProposal() && !m_proposal->isFragile() + && !m_proposalWidget->supportsModelUpdate(proposalCandidate->id())) { return; + } int basePosition = proposalCandidate->basePosition(); if (m_editorWidget->position() < basePosition) { @@ -351,6 +354,7 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR && basePosition == proposalCandidate->basePosition() && m_proposalWidget->supportsModelUpdate(proposalCandidate->id())) { m_proposal.reset(proposalCandidate.take()); + m_proposal->setReason(reason); m_proposalWidget->updateModel(m_proposal->model()); m_proposalWidget->updateProposal(prefix); return; diff --git a/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp b/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp index 9a7f47aaee..ec7bb43f1b 100644 --- a/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp +++ b/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp @@ -1243,7 +1243,7 @@ void tst_QtcProcess::recursiveCrashingProcess() subConfig.setupSubProcess(&process); process.start(); QVERIFY(process.waitForStarted(1000)); - QVERIFY(process.waitForFinished(3000)); + QVERIFY(process.waitForFinished()); QCOMPARE(process.state(), QProcess::NotRunning); QCOMPARE(process.exitStatus(), QProcess::NormalExit); QCOMPARE(process.exitCode(), s_crashCode); |