diff --git a/dist/changelog/changes-13.0.0.md b/dist/changelog/changes-13.0.0.md index 4c78d386e6d..28b5f6acd69 100644 --- a/dist/changelog/changes-13.0.0.md +++ b/dist/changelog/changes-13.0.0.md @@ -329,6 +329,7 @@ Credits for these changes go to: Aaron McCarthy Aleksei German Alessandro Portale +Alexandre Laurent Alexey Edelev Ali Kianian Amr Essam @@ -337,6 +338,7 @@ André Pönitz Andreas Loth Artem Sokolovskii Assam Boudjelthia +Aurele Faure Brook Cronin Burak Hancerli Christian Kandeler @@ -378,6 +380,7 @@ Serg Kryvonos Shrief Gabr Sivert Krøvel Tasuku Suzuki +Thiago Macieira Thomas Hartmann Tim Jenßen Vikas Pachdha diff --git a/doc/qtcreator/config/style/qt5-sidebar.html b/doc/qtcreator/config/style/qt5-sidebar.html index 509808af114..327bd27a293 100644 --- a/doc/qtcreator/config/style/qt5-sidebar.html +++ b/doc/qtcreator/config/style/qt5-sidebar.html @@ -74,12 +74,15 @@
  • Keyboard Shortcuts
  • Known Issues
  • Technical Support
  • +
  • Version Control Systems
  • +
  • Analyzers
  • +
  • Build Configurations
  • Build Systems
  • -
  • Editors
  • +
  • Editors
  • Platforms
  • Preferences
  • +
  • Run Configurations
  • UI Design
  • -
  • Version Control Systems
  • Views
  • See All
  • diff --git a/doc/qtcreator/images/qtcreator-custom-wizard.png b/doc/qtcreator/images/qtcreator-custom-wizard.png deleted file mode 100644 index 73d3b417b83..00000000000 Binary files a/doc/qtcreator/images/qtcreator-custom-wizard.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-custom-wizard.webp b/doc/qtcreator/images/qtcreator-custom-wizard.webp new file mode 100644 index 00000000000..6e0f5ddc71d Binary files /dev/null and b/doc/qtcreator/images/qtcreator-custom-wizard.webp differ diff --git a/doc/qtcreator/images/qtcreator-debugger-threads.webp b/doc/qtcreator/images/qtcreator-debugger-threads.webp index 1a84d6ae2b9..155c1781557 100644 Binary files a/doc/qtcreator/images/qtcreator-debugger-threads.webp and b/doc/qtcreator/images/qtcreator-debugger-threads.webp differ diff --git a/doc/qtcreator/images/qtcreator-editor-open-files.webp b/doc/qtcreator/images/qtcreator-editor-open-files.webp index 3ec7e58ae9d..f01cf7c52d9 100644 Binary files a/doc/qtcreator/images/qtcreator-editor-open-files.webp and b/doc/qtcreator/images/qtcreator-editor-open-files.webp differ diff --git a/doc/qtcreator/images/qtcreator-editor-symbols.webp b/doc/qtcreator/images/qtcreator-editor-symbols.webp index 70bcc2b442c..a42455aab80 100644 Binary files a/doc/qtcreator/images/qtcreator-editor-symbols.webp and b/doc/qtcreator/images/qtcreator-editor-symbols.webp differ diff --git a/doc/qtcreator/images/qtcreator-filesystem-view-design.png b/doc/qtcreator/images/qtcreator-filesystem-view-design.png deleted file mode 100644 index da8766a9c2f..00000000000 Binary files a/doc/qtcreator/images/qtcreator-filesystem-view-design.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-filesystem-view-design.webp b/doc/qtcreator/images/qtcreator-filesystem-view-design.webp new file mode 100644 index 00000000000..9d5995e416c Binary files /dev/null and b/doc/qtcreator/images/qtcreator-filesystem-view-design.webp differ diff --git a/doc/qtcreator/images/qtcreator-filesystem-view.webp b/doc/qtcreator/images/qtcreator-filesystem-view.webp index 957a0e4b1b9..f16a8060c41 100644 Binary files a/doc/qtcreator/images/qtcreator-filesystem-view.webp and b/doc/qtcreator/images/qtcreator-filesystem-view.webp differ diff --git a/doc/qtcreator/images/qtcreator-kit-selector-devices.webp b/doc/qtcreator/images/qtcreator-kit-selector-devices.webp new file mode 100644 index 00000000000..7cb2b74e82d Binary files /dev/null and b/doc/qtcreator/images/qtcreator-kit-selector-devices.webp differ diff --git a/doc/qtcreator/images/qtcreator-live-preview-kit.png b/doc/qtcreator/images/qtcreator-live-preview-kit.png deleted file mode 100644 index f76099ab829..00000000000 Binary files a/doc/qtcreator/images/qtcreator-live-preview-kit.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-qml-performance-monitor.png b/doc/qtcreator/images/qtcreator-qml-performance-monitor.png deleted file mode 100644 index 2f256ce3d6d..00000000000 Binary files a/doc/qtcreator/images/qtcreator-qml-performance-monitor.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-qml-profiler.webp b/doc/qtcreator/images/qtcreator-qml-profiler.webp new file mode 100644 index 00000000000..281c7c94e6e Binary files /dev/null and b/doc/qtcreator/images/qtcreator-qml-profiler.webp differ diff --git a/doc/qtcreator/images/qtcreator-scxml-editor.webp b/doc/qtcreator/images/qtcreator-scxml-editor.webp index d57a50dfb76..f78f7ff3d37 100644 Binary files a/doc/qtcreator/images/qtcreator-scxml-editor.webp and b/doc/qtcreator/images/qtcreator-scxml-editor.webp differ diff --git a/doc/qtcreator/images/qtcreator-sidebar.png b/doc/qtcreator/images/qtcreator-sidebar.png deleted file mode 100644 index 47d4e5e1f85..00000000000 Binary files a/doc/qtcreator/images/qtcreator-sidebar.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-sidebar.webp b/doc/qtcreator/images/qtcreator-sidebar.webp new file mode 100644 index 00000000000..fdf86400258 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-sidebar.webp differ diff --git a/doc/qtcreator/images/qtcreator-toggle-progress-bar.webp b/doc/qtcreator/images/qtcreator-toggle-progress-bar.webp index c8438ae0026..d4170d4bc12 100644 Binary files a/doc/qtcreator/images/qtcreator-toggle-progress-bar.webp and b/doc/qtcreator/images/qtcreator-toggle-progress-bar.webp differ diff --git a/doc/qtcreator/images/qtcreator-welcome-open-projects.webp b/doc/qtcreator/images/qtcreator-welcome-open-projects.webp index 5281669b407..05af411f2dd 100644 Binary files a/doc/qtcreator/images/qtcreator-welcome-open-projects.webp and b/doc/qtcreator/images/qtcreator-welcome-open-projects.webp differ diff --git a/doc/qtcreator/images/qtcreator-welcome-session.png b/doc/qtcreator/images/qtcreator-welcome-session.png deleted file mode 100644 index 669ec914231..00000000000 Binary files a/doc/qtcreator/images/qtcreator-welcome-session.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-welcome-session.webp b/doc/qtcreator/images/qtcreator-welcome-session.webp new file mode 100644 index 00000000000..7a67042f1cb Binary files /dev/null and b/doc/qtcreator/images/qtcreator-welcome-session.webp differ diff --git a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc index 77bc417d03a..9b746d03887 100644 --- a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc @@ -52,7 +52,7 @@ (\uicontrol Start) button to start the application from the \uicontrol {Performance Analyzer}. - \inlineimage qtcreator-performance-analyzer-toolbar.png "Performance Analyzer toolbar" + \image qtcreator-performance-analyzer-toolbar.png {Performance Analyzer toolbar} \endlist diff --git a/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc b/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc index b1b1cd9a8fa..c85fd7356de 100644 --- a/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc @@ -106,8 +106,8 @@ to load diagnostics from \l{https://yaml.org/}{YAML} files that you exported using the \c {-export fixes} option. - \sa {Configure Clang Diagnostics}, {Speficy Clang tools settings}, - {Clang Tools} + \sa {Check code syntax}, {Configure Clang Diagnostics}, + {Specify Clang tools settings}, {Clang Tools} */ /*! @@ -116,7 +116,7 @@ \ingroup creator-how-to-projects-configure - \title Speficy Clang tools settings + \title Specify Clang tools settings To set Clang-Tidy and Clazy checks to run for the current project: @@ -189,7 +189,7 @@ \endlist \sa {Configure Clang diagnostics}, {Analyze code with Clang-Tidy and Clazy}, - {Speficy Clang tools settings} + {Specify Clang tools settings} */ /*! @@ -311,5 +311,5 @@ file into the \uicontrol {Edit Checks as String} field, select additional checks, and copy-paste the contents of the field to the .clang-tidy file. - \sa {Analyze code with Clang-Tidy and Clazy}, {Speficy Clang tools settings}, {Clang Tools} + \sa {Analyze code with Clang-Tidy and Clazy}, {Specify Clang tools settings}, {Clang Tools} */ diff --git a/doc/qtcreator/src/docker/creator-docker.qdoc b/doc/qtcreator/src/docker/creator-docker.qdoc index 15f147d475c..c63ab4b3b59 100644 --- a/doc/qtcreator/src/docker/creator-docker.qdoc +++ b/doc/qtcreator/src/docker/creator-docker.qdoc @@ -22,7 +22,7 @@ {debuggers} and \l{Add Qt versions}{Qt versions}, in the Docker container and creates kits for the devices. - You can use CMake or qmake to build applications in the Docker container. + You are advised to use CMake to build applications in the Docker container. To pull images from Docker hub or other registries, use the \l{https://docs.docker.com/engine/reference/commandline/pull/}{docker pull} diff --git a/doc/qtcreator/src/editors/creator-code-syntax.qdoc b/doc/qtcreator/src/editors/creator-code-syntax.qdoc index f20ecadb8e5..65f8e5d1151 100644 --- a/doc/qtcreator/src/editors/creator-code-syntax.qdoc +++ b/doc/qtcreator/src/editors/creator-code-syntax.qdoc @@ -66,9 +66,6 @@ \section1 Set line annotation positions - To specify the position of the line annotations when looking at them in the - code editor, select \uicontrol {Annotation Settings} in the tooltip popup. - To specify the position where the annotations are displayed, go to \preferences > \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Line annotations}, and then select @@ -82,17 +79,7 @@ If you hide the annotations, you can move the mouse pointer over an icon to view them. - \if defined(qtcreator) - \section1 Inspect QML and JavaScript - - To inspect QML and JavaScript properties, methods, and enums, move the - cursor over them and go to \uicontrol Tools > \uicontrol {QML/JS} > - \uicontrol {Inspect API for Element Under Cursor}. - - \sa {Clangd} - \endif - - \sa {JavaScript and QML Checks} + \sa {Analyze code with Clang-Tidy and Clazy}, {JavaScript and QML Checks} */ /*! @@ -760,24 +747,21 @@ \section1 Resetting the Code Model - If you change the build and run kit when you have QML files open in the code - editor, the code model might become corrupt. The following error message - indicates that this might have happened: \e{Using Qt Quick 1 code model - instead of Qt Quick 2}. + If you see the following error messages after you add a new QML module, + try building the project and then resetting the code model: - To see the error message, move the mouse pointer over code that + \list + \li QML module not found. + \li Unknown Component (M300). + \endlist + + To see an error message, move the mouse pointer over code that \QC underlines in the code editor or when you open a QML file in \QDS. To reset the code model, select \uicontrol Tools > \uicontrol {QML/JS} > \uicontrol {Reset Code Model}. - \if defined(qtcreator) - If this does not help, try changing the QML emulation layer to the one that - was built with the same Qt version as the one selected in the build and run - kit. - \endif - - \sa {Check code syntax} + \sa {Check code syntax}, {Using QML Modules with Plugins} */ /*! 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 f07a79e9868..bdf06e24eb4 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc @@ -125,7 +125,7 @@ symbol support, which makes the results more reliable than before. \sa {Code Model}, {Clangd}, {Specify clangd settings}, - {Speficy Clang tools settings}, {Use compilation databases} + {Specify Clang tools settings}, {Use compilation databases} */ /*! diff --git a/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc b/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc index 0e8bba269a7..dbf8b219ed0 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc @@ -184,7 +184,8 @@ \title Move between files - The editor toolbar shows the file that is currently open (1) in the editor. + The editor toolbar shows the name of the file that is currently open (1) in + the editor. \image qtcreator-editor-open-files.webp {Current file shown on Edit mode toolbar} diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc index 1b545943e3e..395c09ad72e 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -423,6 +423,12 @@ \uicontrol {Find References to Symbol Under Cursor}. \endlist + \section1 Inspect QML and JavaScript + + To inspect QML and JavaScript properties, methods, and enums, place the + cursor over them and go to \uicontrol Tools > \uicontrol {QML/JS} > + \uicontrol {Inspect API for Element Under Cursor}. + \section1 Move between QML and C++ To move to the C++ implementation of a QML type in the code editor, place the @@ -433,7 +439,8 @@ \li Go to \uicontrol {Follow Symbol Under Cursor} in the context menu. \endlist - \sa {Edit Code}{How To: Edit Code}, {Edit Mode}, {Navigate with locator} + \sa {Edit Code}{How To: Edit Code}, {Clangd}, {Edit Mode}, + {Navigate with locator} */ /*! diff --git a/doc/qtcreator/src/howto/creator-sessions.qdoc b/doc/qtcreator/src/howto/creator-sessions.qdoc index 318502e54c4..0f455cbc0fc 100644 --- a/doc/qtcreator/src/howto/creator-sessions.qdoc +++ b/doc/qtcreator/src/howto/creator-sessions.qdoc @@ -60,7 +60,7 @@ To manage sessions, select \uicontrol File > \uicontrol Sessions > \uicontrol Manage. - \image qtcreator-session-manager.png + \image qtcreator-session-manager.png {Session Manager} To save a session under a new name, select \uicontrol Clone. @@ -97,7 +97,7 @@ \key Ctrl+Alt+, where \e is the number of the session to open (available for the first nine sessions). - \image qtcreator-welcome-session.png + \image qtcreator-welcome-session.webp {Sessions in the Welcome mode} To view more information about a session, select the down arrow icon that appears when you move the mouse cursor over the session name. Select actions 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 f91d6e2b0cb..93fc8fc3987 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -45,7 +45,7 @@ \uicontrol {New File} dialogs you can see an icon (1), a display name (2), and a description (3) of the wizard. - \image qtcreator-custom-wizard.png {Wizard details in the New Project dialog} + \image qtcreator-custom-wizard.webp {Wizard details in the New File dialog} In most project wizards, you can choose the build system to use for building the project: qmake, CMake, Qbs, and possibly others, depending on diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc index 3abd3a1ab6a..f4d7c81e63b 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards.qdoc @@ -45,7 +45,7 @@ and \uicontrol {New File} dialogs. For each wizard, it shows an icon (1), a display name (2), and a description (3). - \image qtcreator-custom-wizard.png + \image qtcreator-custom-wizard.webp {New File wizard} \section1 Wizard Types diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc index 93510fa4389..4ba2e5b393e 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc @@ -83,7 +83,7 @@ \list \li \l{Link projects to Axivion dashboards}{Axivion} \li \l{Specify clangd settings}{Clangd} - \li \l{Speficy Clang tools settings}{Clang Tools} + \li \l{Specify Clang tools settings}{Clang Tools} \li \l{Set Copilot preferences}{Copilot} \li \l{Specify code style}{C++ Code Style} \li \l{Set C++ file naming preferences}{C++ File Naming} diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc index 01458baf266..72085701e16 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-desktop.qdoc @@ -32,10 +32,10 @@ \section1 Run in Terminal - For console applications, check the \uicontrol{Run in terminal} check box. - To specify the terminal to use on Linux and \macos, select \preferences > + For console applications, select \uicontrol{Run in terminal}. + To specify the terminal to use on Linux and \macos, go to \preferences > \uicontrol Environment > \uicontrol System. To use an \l{Terminal} - {internal terminal}, select \preferences > \uicontrol Terminal > + {internal terminal}, go to \preferences > \uicontrol Terminal > \uicontrol {Use internal terminal}. \section1 Linker Libraries @@ -48,22 +48,21 @@ \c {make install}, and want to make sure that the deployed application will find the libraries also when it is run without \QC. - To disable library linking for the current project, deselect the - \uicontrol {Add build library search path to PATH} check box. To disable - library linking for all projects, select \preferences > - \uicontrol {Build & Run}, and then deselect the - \uicontrol {Add linker library search paths to run environment} check box. + To disable library linking for the current project, clear + \uicontrol {Add build library search path to PATH}. To disable + library linking for all projects, go to \preferences > + \uicontrol {Build & Run} and then clear + \uicontrol {Add linker library search paths to run environment}. - \section1 \macos Options + \section1 Debugging Linked Frameworks - The \uicontrol {Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug)} option - (only available on \macos) enables you to debug (for example, step into) - linked frameworks, such as the Qt framework itself. You do not need this - option for debugging your application code. + On \macos, select \uicontrol {Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug)} + to debug (for example, step into) linked frameworks, such as the Qt framework + itself. You do not need this option for debugging your application code. - \section1 Linux Options + \section1 Running as root User - On Linux, select the \uicontrol {Run as root user} check box to run the + On Linux and \macos, select \uicontrol {Run as root user} to run the application with root user permissions. \sa {Configure projects for running}, {Specify a custom executable to run}, diff --git a/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc b/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc index 584db4bb436..ae7a75eefea 100644 --- a/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-live-preview-devices.qdoc @@ -30,7 +30,7 @@ \li In \uicontrol Projects > \uicontrol {Build & Run}, enable the kit predefined for the device type (1). \li Select the kit for the device in the kit selector (2). - \image qtcreator-live-preview-kit.png + \image qtcreator-kit-selector-devices.webp {Kit selector} \else \li In the bottom toolbar, select \inlineimage icons/settings.png and enable the kit predefined for the device type. diff --git a/doc/qtcreator/src/qtquick/qtquick-modules-with-plugins.qdoc b/doc/qtcreator/src/qtquick/qtquick-modules-with-plugins.qdoc index 299bd057720..bf8b4581c64 100644 --- a/doc/qtcreator/src/qtquick/qtquick-modules-with-plugins.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-modules-with-plugins.qdoc @@ -67,6 +67,11 @@ \li Import the module into the project, as instructed in \l {Importing QML Modules}. \endlist + + \note If \QC cannot find the new QML module, build the project + and then go to \uicontrol {Tools} > \uicontrol {QML/JS} > + \uicontrol {Reset Code Model} to reset the code model. + \else \li Build your module using the same Qt version and compiler as \QDS. For more information, see \l {Running QML Modules in Design Mode}. @@ -128,4 +133,6 @@ environment variable to check whether the plugin is currently being run by an application or edited in the \uicontrol Design mode. \endif + + \sa {Resetting the Code Model} */ diff --git a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc index 0fd232d8b9c..4acafaf42a1 100644 --- a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc @@ -172,7 +172,7 @@ The \uicontrol Timeline view displays graphical representations of QML and JavaScript execution and a condensed view of all recorded events. - \image qtcreator-qml-performance-monitor.png "QML Profiler" + \image qtcreator-qml-profiler.webp {QML Profiler} Each row in the timeline (6) describes a type of QML events that were recorded. Move the cursor on an event on a row to see how long it takes and diff --git a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc index 24f3b38479c..ba666b35cc0 100644 --- a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc @@ -25,14 +25,14 @@ \image qtcreator-filesystem-view.webp {File System view in the sidebar} \else - \image qtcreator-filesystem-view-design.png {File System view} + \image qtcreator-filesystem-view-design.webp {File System view} \endif - To move to the root directory of the file system, select \uicontrol Computer - in the menu (1). Select \uicontrol Home to move to the user's home - directory. Further, you can select a project to move to an open project - or \uicontrol Projects to move to the directory specified in the - \uicontrol {Projects directory} field in \preferences > + To go to the root directory of the file system, select \uicontrol Computer + in the menu (1). Select \uicontrol Home to go to the user's home + directory. Further, you can select a project to go to an open project + or \uicontrol Projects to go to the directory specified in + \uicontrol {Projects directory} in \preferences > \uicontrol {Build & Run} > \uicontrol General. The file that is currently active in the editor determines which folder @@ -46,8 +46,8 @@ \endlist To stop the synchronization between the editor and the - \uicontrol {File System} view, deselect the \inlineimage icons/linkicon.png - (\uicontrol {Synchronize Root Directory with Editor}) button. + \uicontrol {File System} view, clear \inlineimage icons/linkicon.png + (\uicontrol {Synchronize Root Directory with Editor}). The view displays the path to the active file as bread crumbs. You can move to any directory along the path by clicking it. @@ -101,16 +101,15 @@ (\uicontrol Options): \list - \li To hide the bread crumbs, deselect the - \uicontrol {Show Bread Crumbs} check box. + \li To hide the bread crumbs, clear \uicontrol {Show Bread Crumbs}. \li By default, the view separates folders from files and lists them - first. To list all items in alphabetic order, deselect the - \uicontrol {Show Folders on Top} check box. + first. To list all items in alphabetic order, clear + \uicontrol {Show Folders on Top}. \li To also show hidden files, select \uicontrol {Show Hidden Files}. \endlist To stop the synchronization with the file currently open in the - editor, deselect \inlineimage icons/linkicon.png + editor, clear \inlineimage icons/linkicon.png (\uicontrol {Synchronize with Editor}). \sa {View CMake project contents}, {Projects} diff --git a/doc/qtcreator/src/user-interface/creator-only/creator-how-to-show-and-hide-sidebars.qdoc b/doc/qtcreator/src/user-interface/creator-only/creator-how-to-show-and-hide-sidebars.qdoc index 230ce2adde6..106562ab55d 100644 --- a/doc/qtcreator/src/user-interface/creator-only/creator-how-to-show-and-hide-sidebars.qdoc +++ b/doc/qtcreator/src/user-interface/creator-only/creator-how-to-show-and-hide-sidebars.qdoc @@ -15,7 +15,7 @@ Select views in the sidebar menu (1): - \image qtcreator-sidebar.png + \image qtcreator-sidebar.webp {Views open in the sidebar} You can change the view of the sidebars in the following ways: diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 2fbbc514c4e..bcd42919e80 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -18861,12 +18861,13 @@ Trotzdem fortfahren? Override cursors for views - + Mauszeiger für Ansichten überschreiben Provide cursors for resizing views. If the system cursors for resizing views are not displayed properly, you can use the cursors provided by %1. - + Benutzt separate Mauszeiger für das Verändern der Größe von Ansichten. +Wenn die Systemzeiger für das Verändern der Größe von Ansichten nicht korrekt dargestellt werden, können von %1 bereitgestellte Zeiger benutzt werden. Toolbar style: @@ -18898,11 +18899,11 @@ If the system cursors for resizing views are not displayed properly, you can use The following environment variables are set and can influence the UI scaling behavior of %1: - + Die folgenden Umgebungsvariablen sind gesetzt und können das Skalierungsverhalten der Benutzeroberfläche von %1 beeinflussen: Environment influences UI scaling behavior. - + Die Umgebung beeinflusst das Skalierungsverhalten der Benutzeroberfläche. Text codec for tools: @@ -19148,7 +19149,7 @@ If the system cursors for resizing views are not displayed properly, you can use This will hide the menu bar completely. You can show it again by typing %1.<br><br>Or, trigger the "%2" action from the "%3" locator filter (%4). - + Dies versteckt die Menüleiste vollständig. Sie können sie mit der Tastenkombination %1 wieder anzeigen.<br><br>Oder führen Sie die Aktion "%2" über den Locator-Filter "%3" aus (%4). Change Log... @@ -19471,7 +19472,7 @@ If the system cursors for resizing views are not displayed properly, you can use Copy and Close - + Kopieren und schließen <br/>From revision %1<br/> @@ -20395,11 +20396,11 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche Cannot Create File - + Datei konnte nicht erstellt werden Cannot create file "%1". - + Die Datei "%1" konnte nicht erstellt werden. Create Directory @@ -20649,7 +20650,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche Show Paths in Relation to Active Project - + Pfade in Bezug auf das aktive Projekt anzeigen Filter Results @@ -20665,7 +20666,7 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche Show Full Paths - + Vollständigen Pfad anzeigen Search Results @@ -20833,11 +20834,11 @@ Möchten Sie es beenden? Proxy Authentication Required - + Proxy-Authentifizierung erforderlich Do not ask again. - + Nicht noch einmal nachfragen. No themes found in installation. @@ -20921,7 +20922,7 @@ Möchten Sie es beenden? Convert string to pure ASCII. - + Zeichenkette in reines ASCII umwandeln. Create Folder @@ -29868,7 +29869,7 @@ Versuchen Sie, das Projekt neu zu erstellen. Plugin Details of %1 - Beschreibung zu %1 + Beschreibung zu %1 Group: @@ -30137,7 +30138,7 @@ Grund: %3 %1 (deprecated) %1 is a plugin name - + %1 (veraltet) %1 (experimental) @@ -30212,7 +30213,7 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: Details - Details + Details The following plugins have errors and cannot be loaded: @@ -30228,7 +30229,7 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: Multiple versions of the same plugin have been found. - + Es wurden mehrere Versionen des gleichen Plugins gefunden. %1 > About Plugins @@ -56353,7 +56354,7 @@ Die Trace-Daten sind verloren. The command "%1" was canceled after %2 ms. - + Das Kommando "%1" wurde nach %2 ms abgebrochen. Invalid command @@ -56397,7 +56398,7 @@ Die Trace-Daten sind verloren. Failed to start terminal process. The stub exited before the inferior was started. - + Der Terminalprozess konnte nicht gestartet werden. Der Kontrollprozess wurde beendet, bevor der Unterprozess gestartet werden konnte. Cannot set permissions on temporary directory "%1": %2 @@ -56437,7 +56438,7 @@ Die Trace-Daten sind verloren. Refusing to remove the standard directory "%1". - + Das Standardverzeichnis "%1" kann nicht entfernt werden. Refusing to remove root directory. @@ -56496,7 +56497,7 @@ Die Trace-Daten sind verloren. Device is not connected - + Gerät ist nicht verbunden Failed reading file "%1": %2 @@ -56552,7 +56553,7 @@ Die Trace-Daten sind verloren. Cannot create temporary file %1: %2 - + Die temporäre Datei "%1" konnte nicht erstellt werden: %2 Overwrite File? @@ -58991,7 +58992,7 @@ should a repository require SSH-authentication (see documentation on SSH and the Welcome to %1 - + Willkommen bei %1 Create Project... @@ -59003,7 +59004,7 @@ should a repository require SSH-authentication (see documentation on SSH and the Explore more - + Erfahre mehr Get Started diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 28edfdf7478..4108106a2ea 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -109,6 +109,11 @@ const QLatin1String X86ToolsPrefix("i686-linux-android"); const QLatin1String AArch64ToolsPrefix("aarch64-linux-android"); const QLatin1String X86_64ToolsPrefix("x86_64-linux-android"); +const QLatin1String ArmToolsDisplayName("arm"); +const QLatin1String X86ToolsDisplayName("i686"); +const QLatin1String AArch64ToolsDisplayName("aarch64"); +const QLatin1String X86_64ToolsDisplayName("x86_64"); + const QLatin1String Unknown("unknown"); const QLatin1String keytoolName("keytool"); const Key changeTimeStamp("ChangeTimeStamp"); @@ -177,12 +182,12 @@ QLatin1String AndroidConfig::displayName(const Abi &abi) switch (abi.architecture()) { case Abi::ArmArchitecture: if (abi.wordWidth() == 64) - return QLatin1String(Constants::AArch64ToolsDisplayName); - return QLatin1String(Constants::ArmToolsDisplayName); + return AArch64ToolsDisplayName; + return ArmToolsDisplayName; case Abi::X86Architecture: if (abi.wordWidth() == 64) - return QLatin1String(Constants::X86_64ToolsDisplayName); - return QLatin1String(Constants::X86ToolsDisplayName); + return X86_64ToolsDisplayName; + return X86ToolsDisplayName; default: return Unknown; } diff --git a/src/plugins/android/androidconstants.h b/src/plugins/android/androidconstants.h index 813b6a924c0..379310519ab 100644 --- a/src/plugins/android/androidconstants.h +++ b/src/plugins/android/androidconstants.h @@ -81,11 +81,4 @@ const char ndkPackageName[] = "ndk"; const char platformsPackageName[] = "platforms"; const char buildToolsPackageName[] = "build-tools"; -// For AndroidQtVersion -const char ArmToolsDisplayName[] = "arm"; -const char ArmV7ToolsDisplayName[] = "armv7"; -const char X86ToolsDisplayName[] = "i686"; -const char AArch64ToolsDisplayName[] = "aarch64"; -const char X86_64ToolsDisplayName[] = "x86_64"; - } // Android::Constants diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index c3b0e3e1f82..eb9f1801380 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -109,24 +109,13 @@ QString AndroidQtVersion::description() const const QStringList &AndroidQtVersion::androidAbis() const { - if (m_androidAbis.isEmpty()) { - bool sanityCheckNotUsed; - const BuiltWith bw = builtWith(&sanityCheckNotUsed); - if (!bw.androidAbi.isEmpty()) { - m_androidAbis << bw.androidAbi; - m_minNdk = bw.apiVersion; - } else { - ensureMkSpecParsed(); - } - } - + ensureMkSpecParsed(); return m_androidAbis; } int AndroidQtVersion::minimumNDK() const { - if (m_minNdk == -1) - ensureMkSpecParsed(); + ensureMkSpecParsed(); return m_minNdk; } @@ -185,25 +174,6 @@ static int versionFromPlatformString(const QString &string, bool *ok = nullptr) return match.hasMatch() ? match.captured(1).toInt(ok) : -1; } -static QString abiFromCompilerTarget(const QString &string) -{ - const QStringList components = string.split("-"); - if (components.isEmpty()) - return {}; - - QString qtAbi; - const QString compilerAbi = components.first(); - if (compilerAbi == Constants::AArch64ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A; - else if (compilerAbi == Constants::ArmV7ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A; - else if (compilerAbi == Constants::X86_64ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_X86_64; - else if (compilerAbi == Constants::X86ToolsDisplayName) - qtAbi = ProjectExplorer::Constants::ANDROID_ABI_X86; - return qtAbi; -} - AndroidQtVersion::BuiltWith AndroidQtVersion::parseBuiltWith(const QByteArray &modulesCoreJsonData, bool *ok) { @@ -223,10 +193,6 @@ AndroidQtVersion::BuiltWith AndroidQtVersion::parseBuiltWith(const QByteArray &m result.ndkVersion = QVersionNumber::fromString(version.toString()); } } - if (const QJsonValue compilerTarget = builtWith["compiler_target"]; - !compilerTarget.isUndefined()) { - result.androidAbi = abiFromCompilerTarget(compilerTarget.toString()); - } } if (ok) diff --git a/src/plugins/android/androidqtversion.h b/src/plugins/android/androidqtversion.h index cf52b63000b..fb592461c80 100644 --- a/src/plugins/android/androidqtversion.h +++ b/src/plugins/android/androidqtversion.h @@ -35,7 +35,6 @@ public: struct BuiltWith { int apiVersion = -1; QVersionNumber ndkVersion; - QString androidAbi; }; static BuiltWith parseBuiltWith(const QByteArray &modulesCoreJsonData, bool *ok = nullptr); BuiltWith builtWith(bool *ok = nullptr) const; diff --git a/src/plugins/axivion/axivionoutputpane.cpp b/src/plugins/axivion/axivionoutputpane.cpp index d1c896205fe..d66468590bf 100644 --- a/src/plugins/axivion/axivionoutputpane.cpp +++ b/src/plugins/axivion/axivionoutputpane.cpp @@ -235,7 +235,7 @@ public: }).link; Project *project = ProjectManager::startupProject(); FilePath baseDir = project ? project->projectDirectory() : FilePath{}; - link.targetFilePath = baseDir.resolvePath(link.targetFilePath); + link.targetFilePath = findFileForIssuePath(link.targetFilePath); if (link.targetFilePath.exists()) EditorManager::openEditorAt(link); } @@ -736,6 +736,10 @@ public: if (auto issues = static_cast(m_outputWidget->widget(1))) issues->updateUi(); }); + auto *butonGroup = new QButtonGroup(this); + butonGroup->addButton(m_showDashboard); + butonGroup->addButton(m_showIssues); + butonGroup->setExclusive(true); connect(m_outputWidget, &QStackedWidget::currentChanged, this, [this](int idx) { m_showDashboard->setChecked(idx == 0); diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index fa455c07eb9..cd27cbbcb0c 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -236,6 +237,8 @@ public: TaskTreeRunner m_taskTreeRunner; std::unordered_map> m_docMarksTrees; TaskTreeRunner m_issueInfoRunner; + FileInProjectFinder m_fileFinder; // FIXME maybe obsolete when path mapping is implemented + QMetaObject::Connection m_fileFinderConnection; }; static AxivionPluginPrivate *dd = nullptr; @@ -330,17 +333,24 @@ void AxivionPluginPrivate::onStartupProjectChanged(Project *project) return; if (m_project) - disconnect(m_project, &Project::fileListChanged, this, &AxivionPluginPrivate::handleOpenedDocs); + disconnect(m_fileFinderConnection); m_project = project; clearAllMarks(); m_currentProjectInfo = {}; updateDashboard(); - if (!m_project) + if (!m_project) { + m_fileFinder.setProjectDirectory({}); + m_fileFinder.setProjectFiles({}); return; + } - connect(m_project, &Project::fileListChanged, this, &AxivionPluginPrivate::handleOpenedDocs); + m_fileFinder.setProjectDirectory(m_project->projectDirectory()); + m_fileFinderConnection = connect(m_project, &Project::fileListChanged, this, [this] { + m_fileFinder.setProjectFiles(m_project->files(Project::AllFiles)); + handleOpenedDocs(); + }); const AxivionProjectSettings *projSettings = AxivionProjectSettings::projectSettings(m_project); fetchProjectInfo(projSettings->dashboardProjectName()); } @@ -961,7 +971,7 @@ void AxivionPluginPrivate::handleAnchorClicked(const QUrl &url) return; Link link; if (const QString path = query.queryItemValue("filename", QUrl::FullyDecoded); !path.isEmpty()) - link.targetFilePath = m_project->projectDirectory().pathAppended(path); + link.targetFilePath = findFileForIssuePath(FilePath::fromUserInput(path)); if (const QString line = query.queryItemValue("line"); !line.isEmpty()) link.targetLine = line.toInt(); // column entry is wrong - so, ignore it @@ -1040,6 +1050,15 @@ const std::optional currentDashboardInfo() return dd->m_dashboardInfo; } +Utils::FilePath findFileForIssuePath(const Utils::FilePath &issuePath) +{ + QTC_ASSERT(dd, return {}); + const FilePaths result = dd->m_fileFinder.findFile(QUrl::fromLocalFile(issuePath.toString())); + if (result.size() == 1) + return dd->m_project->projectDirectory().resolvePath(result.first()); + return {}; +} + } // Axivion::Internal #include "axivionplugin.moc" diff --git a/src/plugins/axivion/axivionplugin.h b/src/plugins/axivion/axivionplugin.h index db2f8494cb0..059e950ecc4 100644 --- a/src/plugins/axivion/axivionplugin.h +++ b/src/plugins/axivion/axivionplugin.h @@ -79,5 +79,7 @@ void fetchIssueInfo(const QString &id); const std::optional currentDashboardInfo(); +Utils::FilePath findFileForIssuePath(const Utils::FilePath &issuePath); + } // Axivion::Internal diff --git a/src/plugins/axivion/axivionprojectsettings.cpp b/src/plugins/axivion/axivionprojectsettings.cpp index 8cd63ba7ac0..023c251ea42 100644 --- a/src/plugins/axivion/axivionprojectsettings.cpp +++ b/src/plugins/axivion/axivionprojectsettings.cpp @@ -7,6 +7,8 @@ #include "axivionsettings.h" #include "axiviontr.h" +#include + #include #include #include @@ -141,7 +143,7 @@ AxivionProjectSettingsWidget::AxivionProjectSettingsWidget(Project *project) noMargin, m_linkedProject, Tr::tr("Dashboard projects:"), - m_dashboardProjects, + Core::ItemViewFind::createSearchableWrapper(m_dashboardProjects), m_infoLabel, Row { m_fetchProjects, m_link, m_unlink, st } }.attachTo(this); diff --git a/src/plugins/debugger/dap/pydapengine.cpp b/src/plugins/debugger/dap/pydapengine.cpp index 68935581450..666750b3e66 100644 --- a/src/plugins/debugger/dap/pydapengine.cpp +++ b/src/plugins/debugger/dap/pydapengine.cpp @@ -234,7 +234,7 @@ void PyDapEngine::setupEngine() info.addCustomButton(Tr::tr("Install debugpy"), [this] { Core::ICore::infoBar()->removeInfo(installDebugPyInfoBarId); Core::ICore::infoBar()->globallySuppressInfo(installDebugPyInfoBarId); - const FilePath target = packageDir(runParameters().interpreter, "dubugpy"); + const FilePath target = packageDir(runParameters().interpreter, "debugpy"); QTC_ASSERT(target.isSameDevice(runParameters().interpreter), return); m_installProcess.reset(new Process); m_installProcess->setCommand( @@ -244,7 +244,8 @@ void PyDapEngine::setupEngine() "install", "-t", target.needsDevice() ? target.path() : target.toUserOutput(), - "debugpy"}}); + "debugpy", + "--upgrade"}}); m_installProcess->setTerminalMode(TerminalMode::Run); m_installProcess->start(); }); diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp index 9dcc220e253..650592ff485 100644 --- a/src/plugins/qmljseditor/qmljshoverhandler.cpp +++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp @@ -294,7 +294,9 @@ bool QmlJSHoverHandler::matchColorItem(const ScopeChain &scopeChain, if (auto binding = AST::cast(member)) { if (binding->qualifiedId && posIsInSource(pos, binding->statement)) { value = scopeChain.evaluate(binding->qualifiedId); - if (value && value->asColorValue()) { + if (value && (value->asColorValue() + || (value->asCppComponentValue() + && value->asCppComponentValue()->className() == "color"))) { color = textAt(qmlDocument, binding->statement->firstSourceLocation(), binding->statement->lastSourceLocation()); diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index 811852b8a84..356ae76fcd1 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -431,11 +431,13 @@ TextEditorSettings::TextEditorSettings() connect(this, &TextEditorSettings::fontSettingsChanged, this, updateGeneralMessagesFontSettings); updateGeneralMessagesFontSettings(); - connect(this, &TextEditorSettings::behaviorSettingsChanged, - this, [](const BehaviorSettings &bs) { + auto updateBehaviorSettings = [](const BehaviorSettings &bs) { Core::MessageManager::setWheelZoomEnabled(bs.m_scrollWheelZooming); FancyLineEdit::setCamelCaseNavigationEnabled(bs.m_camelCaseNavigation); - }); + }; + connect(this, &TextEditorSettings::behaviorSettingsChanged, + this, updateBehaviorSettings); + updateBehaviorSettings(globalBehaviorSettings()); } TextEditorSettings::~TextEditorSettings() diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py index 2e4b5a1dae1..b922b24a798 100644 --- a/tests/system/shared/utils.py +++ b/tests/system/shared/utils.py @@ -110,7 +110,7 @@ def textUnderCursor(window, fromPos, toPos): cursor.movePosition(toPos, QTextCursor.KeepAnchor) returnValue = cursor.selectedText() cursor.setPosition(oldposition) - return returnValue + return str(returnValue) def which(program): # Don't use spawn.find_executable because it can't find .bat or diff --git a/tests/system/suite_HELP/tst_HELP06/test.py b/tests/system/suite_HELP/tst_HELP06/test.py index 623498fc40b..0cdcbb653af 100644 --- a/tests/system/suite_HELP/tst_HELP06/test.py +++ b/tests/system/suite_HELP/tst_HELP06/test.py @@ -34,8 +34,10 @@ def main(): doubleClick(manualQMIObj, 5, 5, 0, Qt.LeftButton) if not waitFor("not manualQMIObj.collapsed", 2000): test.warning("It takes more than two seconds to expand the help content tree.") - gettingStartedQModelIndex = getQModelIndexStr("text='Getting Started'", manualQModelIndex) - doubleClick(gettingStartedQModelIndex, 5, 5, 0, Qt.LeftButton) + devQModelIndex = getQModelIndexStr("text='Developing with Qt Creator'", manualQModelIndex) + doubleClick(devQModelIndex) + gettingStartedQModelIndex = getQModelIndexStr("text='Getting Started'", devQModelIndex) + doubleClick(gettingStartedQModelIndex) pageTitle = "Configuring Qt Creator" mouseClick(waitForObject(getQModelIndexStr("text='%s'" % pageTitle, gettingStartedQModelIndex))) diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 0b2f1dea624..194a8ac4ccf 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -41,6 +41,8 @@ def __checkKits__(): internalClangExe += ".exe" internalClangExe = os.path.realpath(internalClangExe) # clean symlinks if os.path.exists(internalClangExe): + if platform.system() in ("Microsoft", "Windows"): + expectedCompilers.append({'^Default LLVM \d{2} bit based on MSVC\d{4}$' : ''}) expectedCompilers.append(internalClangExe) foundCompilers = [] foundCompilerNames = [] @@ -269,6 +271,13 @@ def __getExpectedDebuggers__(): result = [] if platform.system() in ('Microsoft', 'Windows'): result.extend(__getCDB__()) + try: + qcBinPath = currentApplicationContext().commandLine.split('qtcreator.exe', 1)[0] + lldb = os.path.join(qcBinPath, 'clang', 'bin', 'lldb.exe') + if os.path.exists(lldb): + result.append(lldb) + except: + test.warning('Failed to handled internally provided lldb.') exeSuffix = ".exe" for debugger in ["gdb", "lldb"]: result.extend(findAllFilesInPATH(debugger + exeSuffix)) @@ -330,6 +339,11 @@ def __compareCompilers__(foundCompilers, expectedCompilers): or currentFound.values() == currentExp.values()): foundExp = True break + if isWin and key.startswith('^Default LLVM'): + if re.match(key, next(iter(currentFound.keys())), flags): + # TODO we may want to check that it's configured with latest MSVC? + foundExp = True + break equal = foundExp else: if isWin: