diff --git a/README.md b/README.md index 744b94d4d6f..02f5e6c7f42 100644 --- a/README.md +++ b/README.md @@ -307,8 +307,8 @@ we thank the authors who made this possible: Copyright (C) 2003-2019 LLVM Team - Distributed under the University of Illinois/NCSA Open Source License (NCSA), - see https://github.com/llvm/llvm-project/blob/master/llvm/LICENSE.TXT + Distributed under the Apache 2.0 License with LLVM exceptions, + see https://github.com/llvm/llvm-project/blob/main/clang/LICENSE.TXT With backported/additional patches from https://code.qt.io/clang/llvm-project.git diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 4496c17ef52..7484f784502 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -203,6 +203,11 @@ function(add_qtc_library name) set(TEST_DEFINES WITH_TESTS SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") endif() + if(_arg_STATIC AND UNIX) + # not added by Qt if reduce_relocations is turned off for it + set_target_properties(${name} PROPERTIES POSITION_INDEPENDENT_CODE ON) + endif() + extend_qtc_target(${name} INCLUDES ${_arg_INCLUDES} PUBLIC_INCLUDES ${_arg_PUBLIC_INCLUDES} diff --git a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc index f6548d8cf0d..ab57bb4d8ff 100644 --- a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc +++ b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc @@ -157,14 +157,18 @@ the symbol. All instances of the local symbol are changed as you type. \endif - \section1 Column Editing + \section1 Multi-Cursor Editing - To apply a change to several rows in a column simultaneously, hold - \key Alt, select the rows using the mouse, and enter or remove text. - The changes are made simultaneously at the cursor position on all the - selected rows. + To apply a change to several places simultaneously, press and hold \key Alt, + and click to place cursors in several places. Any changes you make are + applied simultaneously at all the cursor positions. - On Windows and Linux, you can also hold \key {Alt+Shift} and select - the rows using the arrow keys and the \key PageUp, \key PageDown, - \key Home, \key End keys. + Use the arrow keys to move all the cursors up and down. The \key Home and + \key End key move all the cursors to the beginning or to the end of the + line. + + Press and hold \key Alt and double-click strings to select several strings + simultaneously. + + Press \key Esc to remove all the cursors and selections. */ diff --git a/doc/qtcreator/src/overview/creator-acknowledgements.qdoc b/doc/qtcreator/src/overview/creator-acknowledgements.qdoc index 226160d7695..4ec9eb9ea26 100644 --- a/doc/qtcreator/src/overview/creator-acknowledgements.qdoc +++ b/doc/qtcreator/src/overview/creator-acknowledgements.qdoc @@ -372,16 +372,12 @@ \li \b{LLVM/Clang} - \list - \li \l{https://llvm.org/svn/llvm-project/llvm} - \li \l{https://llvm.org/svn/llvm-project/cfe/trunk} - \li \l{https://llvm.org/svn/llvm-project/clang-tools-extra/trunk} - \endlist + \l{https://github.com/llvm/llvm-project/} Copyright (C) 2003-2019 LLVM Team - Distributed under the \l {https://github.com/llvm-mirror/llvm/blob/master/LICENSE.TXT} - {University of Illinois/NCSA Open Source License (NCSA)}. + Distributed under the \l {https://github.com/llvm/llvm-project/blob/main/llvm/LICENSE.TXT} + {Apache 2.0 License with LLVM exceptions}. With backported/additional patches from \list diff --git a/doc/qtdesignstudio/examples/doc/loginui1.qdoc b/doc/qtdesignstudio/examples/doc/loginui1.qdoc index 73bd0ebdf42..e38a6c0aaec 100644 --- a/doc/qtdesignstudio/examples/doc/loginui1.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui1.qdoc @@ -145,9 +145,9 @@ You can download the logo and the background image from here: \list - \li \l{https://doc.qt.io/qtdesignstudio/images/used-in-examples/loginui1/qt_logo_green_128x128px.png} + \li \l{https://doc.qt.io/qtdesignstudio/images/used-in-examples/loginui1/images/qt_logo_green_128x128px.png} {qt_logo_green_128x128px.png} - \li \l{https://doc.qt.io/qtdesignstudio/images/used-in-examples/loginui1/adventurePage.jpg} + \li \l{https://doc.qt.io/qtdesignstudio/images/used-in-examples/loginui1/images/adventurePage.jpg} {Background image} (\e adventurePage.jpg) Photo by \l{https://unsplash.com/photos/a2MgJdG6UvE} diff --git a/doc/qtcreator/images/keyframe_linear_inactive.png b/doc/qtdesignstudio/images/keyframe_linear_inactive.png similarity index 100% rename from doc/qtcreator/images/keyframe_linear_inactive.png rename to doc/qtdesignstudio/images/keyframe_linear_inactive.png diff --git a/doc/qtcreator/images/keyframe_manualbezier_inactive.png b/doc/qtdesignstudio/images/keyframe_manualbezier_inactive.png similarity index 100% rename from doc/qtcreator/images/keyframe_manualbezier_inactive.png rename to doc/qtdesignstudio/images/keyframe_manualbezier_inactive.png diff --git a/doc/qtcreator/images/navigator.png b/doc/qtdesignstudio/images/navigator.png similarity index 100% rename from doc/qtcreator/images/navigator.png rename to doc/qtdesignstudio/images/navigator.png diff --git a/doc/qtcreator/images/qml-shapes-rectangle.png b/doc/qtdesignstudio/images/qml-shapes-rectangle.png similarity index 100% rename from doc/qtcreator/images/qml-shapes-rectangle.png rename to doc/qtdesignstudio/images/qml-shapes-rectangle.png diff --git a/doc/qtcreator/images/qml-shapes.png b/doc/qtdesignstudio/images/qml-shapes.png similarity index 100% rename from doc/qtcreator/images/qml-shapes.png rename to doc/qtdesignstudio/images/qml-shapes.png diff --git a/doc/qtcreator/images/qml-translate.png b/doc/qtdesignstudio/images/qml-translate.png similarity index 100% rename from doc/qtcreator/images/qml-translate.png rename to doc/qtdesignstudio/images/qml-translate.png diff --git a/doc/qtcreator/images/qmldesigner-alignment.png b/doc/qtdesignstudio/images/qmldesigner-alignment.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-alignment.png rename to doc/qtdesignstudio/images/qmldesigner-alignment.png diff --git a/doc/qtcreator/images/qmldesigner-anchor-buttons.png b/doc/qtdesignstudio/images/qmldesigner-anchor-buttons.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-anchor-buttons.png rename to doc/qtdesignstudio/images/qmldesigner-anchor-buttons.png diff --git a/doc/qtcreator/images/qmldesigner-anchors.png b/doc/qtdesignstudio/images/qmldesigner-anchors.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-anchors.png rename to doc/qtdesignstudio/images/qmldesigner-anchors.png diff --git a/doc/qtcreator/images/qmldesigner-binding-editor.png b/doc/qtdesignstudio/images/qmldesigner-binding-editor.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-binding-editor.png rename to doc/qtdesignstudio/images/qmldesigner-binding-editor.png diff --git a/doc/qtcreator/images/qmldesigner-bindings.png b/doc/qtdesignstudio/images/qmldesigner-bindings.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-bindings.png rename to doc/qtdesignstudio/images/qmldesigner-bindings.png diff --git a/doc/qtcreator/images/qmldesigner-boolean-false-blue.png b/doc/qtdesignstudio/images/qmldesigner-boolean-false-blue.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-boolean-false-blue.png rename to doc/qtdesignstudio/images/qmldesigner-boolean-false-blue.png diff --git a/doc/qtcreator/images/qmldesigner-boolean-false.png b/doc/qtdesignstudio/images/qmldesigner-boolean-false.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-boolean-false.png rename to doc/qtdesignstudio/images/qmldesigner-boolean-false.png diff --git a/doc/qtcreator/images/qmldesigner-boolean-true-blue.png b/doc/qtdesignstudio/images/qmldesigner-boolean-true-blue.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-boolean-true-blue.png rename to doc/qtdesignstudio/images/qmldesigner-boolean-true-blue.png diff --git a/doc/qtcreator/images/qmldesigner-boolean-true.png b/doc/qtdesignstudio/images/qmldesigner-boolean-true.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-boolean-true.png rename to doc/qtdesignstudio/images/qmldesigner-boolean-true.png diff --git a/doc/qtcreator/images/qmldesigner-borderimage-bindings.png b/doc/qtdesignstudio/images/qmldesigner-borderimage-bindings.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-borderimage-bindings.png rename to doc/qtdesignstudio/images/qmldesigner-borderimage-bindings.png diff --git a/doc/qtcreator/images/qmldesigner-borderimage-bindings1.png b/doc/qtdesignstudio/images/qmldesigner-borderimage-bindings1.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-borderimage-bindings1.png rename to doc/qtdesignstudio/images/qmldesigner-borderimage-bindings1.png diff --git a/doc/qtcreator/images/qmldesigner-borderimage-states.png b/doc/qtdesignstudio/images/qmldesigner-borderimage-states.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-borderimage-states.png rename to doc/qtdesignstudio/images/qmldesigner-borderimage-states.png diff --git a/doc/qtcreator/images/qmldesigner-borderimage-type.png b/doc/qtdesignstudio/images/qmldesigner-borderimage-type.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-borderimage-type.png rename to doc/qtdesignstudio/images/qmldesigner-borderimage-type.png diff --git a/doc/qtcreator/images/qmldesigner-borderimage.png b/doc/qtdesignstudio/images/qmldesigner-borderimage.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-borderimage.png rename to doc/qtdesignstudio/images/qmldesigner-borderimage.png diff --git a/doc/qtcreator/images/qmldesigner-breadcrumbs.png b/doc/qtdesignstudio/images/qmldesigner-breadcrumbs.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-breadcrumbs.png rename to doc/qtdesignstudio/images/qmldesigner-breadcrumbs.png diff --git a/doc/qtcreator/images/qmldesigner-button.png b/doc/qtdesignstudio/images/qmldesigner-button.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-button.png rename to doc/qtdesignstudio/images/qmldesigner-button.png diff --git a/doc/qtcreator/images/qmldesigner-canvas-color.png b/doc/qtdesignstudio/images/qmldesigner-canvas-color.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-canvas-color.png rename to doc/qtdesignstudio/images/qmldesigner-canvas-color.png diff --git a/doc/qtcreator/images/qmldesigner-connections.png b/doc/qtdesignstudio/images/qmldesigner-connections.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-connections.png rename to doc/qtdesignstudio/images/qmldesigner-connections.png diff --git a/doc/qtcreator/images/qmldesigner-dynamicprops.png b/doc/qtdesignstudio/images/qmldesigner-dynamicprops.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-dynamicprops.png rename to doc/qtdesignstudio/images/qmldesigner-dynamicprops.png diff --git a/doc/qtcreator/images/qmldesigner-editing-components.png b/doc/qtdesignstudio/images/qmldesigner-editing-components.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-editing-components.png rename to doc/qtdesignstudio/images/qmldesigner-editing-components.png diff --git a/doc/qtcreator/images/qmldesigner-element-properties.png b/doc/qtdesignstudio/images/qmldesigner-element-properties.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-element-properties.png rename to doc/qtdesignstudio/images/qmldesigner-element-properties.png diff --git a/doc/qtcreator/images/qmldesigner-element-size.png b/doc/qtdesignstudio/images/qmldesigner-element-size.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-element-size.png rename to doc/qtdesignstudio/images/qmldesigner-element-size.png diff --git a/doc/qtcreator/images/qmldesigner-export-item.png b/doc/qtdesignstudio/images/qmldesigner-export-item.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-export-item.png rename to doc/qtdesignstudio/images/qmldesigner-export-item.png diff --git a/doc/qtcreator/images/qmldesigner-extensions.png b/doc/qtdesignstudio/images/qmldesigner-extensions.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-extensions.png rename to doc/qtdesignstudio/images/qmldesigner-extensions.png diff --git a/doc/qtcreator/images/qmldesigner-form-editor-move-cursor.png b/doc/qtdesignstudio/images/qmldesigner-form-editor-move-cursor.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-form-editor-move-cursor.png rename to doc/qtdesignstudio/images/qmldesigner-form-editor-move-cursor.png diff --git a/doc/qtcreator/images/qmldesigner-form-editor.png b/doc/qtdesignstudio/images/qmldesigner-form-editor.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-form-editor.png rename to doc/qtdesignstudio/images/qmldesigner-form-editor.png diff --git a/doc/qtcreator/images/qmldesigner-implement-signal-handler.png b/doc/qtdesignstudio/images/qmldesigner-implement-signal-handler.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-implement-signal-handler.png rename to doc/qtdesignstudio/images/qmldesigner-implement-signal-handler.png diff --git a/doc/qtcreator/images/qmldesigner-inline-editing.png b/doc/qtdesignstudio/images/qmldesigner-inline-editing.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-inline-editing.png rename to doc/qtdesignstudio/images/qmldesigner-inline-editing.png diff --git a/doc/qtcreator/images/qmldesigner-mcu-support.png b/doc/qtdesignstudio/images/qmldesigner-mcu-support.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-mcu-support.png rename to doc/qtdesignstudio/images/qmldesigner-mcu-support.png diff --git a/doc/qtcreator/images/qmldesigner-merge-with-template.png b/doc/qtdesignstudio/images/qmldesigner-merge-with-template.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-merge-with-template.png rename to doc/qtdesignstudio/images/qmldesigner-merge-with-template.png diff --git a/doc/qtcreator/images/qmldesigner-navigator-arrows.png b/doc/qtdesignstudio/images/qmldesigner-navigator-arrows.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-navigator-arrows.png rename to doc/qtdesignstudio/images/qmldesigner-navigator-arrows.png diff --git a/doc/qtcreator/images/qmldesigner-navigator.png b/doc/qtdesignstudio/images/qmldesigner-navigator.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-navigator.png rename to doc/qtdesignstudio/images/qmldesigner-navigator.png diff --git a/doc/qtcreator/images/qmldesigner-new-project.png b/doc/qtdesignstudio/images/qmldesigner-new-project.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-new-project.png rename to doc/qtdesignstudio/images/qmldesigner-new-project.png diff --git a/doc/qtcreator/images/qmldesigner-only-select-items-with-content.png b/doc/qtdesignstudio/images/qmldesigner-only-select-items-with-content.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-only-select-items-with-content.png rename to doc/qtdesignstudio/images/qmldesigner-only-select-items-with-content.png diff --git a/doc/qtcreator/images/qmldesigner-pathview-editor.png b/doc/qtdesignstudio/images/qmldesigner-pathview-editor.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-pathview-editor.png rename to doc/qtdesignstudio/images/qmldesigner-pathview-editor.png diff --git a/doc/qtcreator/images/qmldesigner-preview-size.png b/doc/qtdesignstudio/images/qmldesigner-preview-size.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-preview-size.png rename to doc/qtdesignstudio/images/qmldesigner-preview-size.png diff --git a/doc/qtcreator/images/qmldesigner-properties-explicit-base.png b/doc/qtdesignstudio/images/qmldesigner-properties-explicit-base.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-properties-explicit-base.png rename to doc/qtdesignstudio/images/qmldesigner-properties-explicit-base.png diff --git a/doc/qtcreator/images/qmldesigner-properties-explicit-state1.png b/doc/qtdesignstudio/images/qmldesigner-properties-explicit-state1.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-properties-explicit-state1.png rename to doc/qtdesignstudio/images/qmldesigner-properties-explicit-state1.png diff --git a/doc/qtcreator/images/qmldesigner-properties-view.png b/doc/qtdesignstudio/images/qmldesigner-properties-view.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-properties-view.png rename to doc/qtdesignstudio/images/qmldesigner-properties-view.png diff --git a/doc/qtcreator/images/qmldesigner-qml-components.png b/doc/qtdesignstudio/images/qmldesigner-qml-components.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-qml-components.png rename to doc/qtdesignstudio/images/qmldesigner-qml-components.png diff --git a/doc/qtcreator/images/qmldesigner-screen-design.png b/doc/qtdesignstudio/images/qmldesigner-screen-design.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-screen-design.png rename to doc/qtdesignstudio/images/qmldesigner-screen-design.png diff --git a/doc/qtcreator/images/qmldesigner-set-expression.png b/doc/qtdesignstudio/images/qmldesigner-set-expression.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-set-expression.png rename to doc/qtdesignstudio/images/qmldesigner-set-expression.png diff --git a/doc/qtcreator/images/qmldesigner-snap-margins.png b/doc/qtdesignstudio/images/qmldesigner-snap-margins.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-snap-margins.png rename to doc/qtdesignstudio/images/qmldesigner-snap-margins.png diff --git a/doc/qtcreator/images/qmldesigner-states-when-condition.png b/doc/qtdesignstudio/images/qmldesigner-states-when-condition.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-states-when-condition.png rename to doc/qtdesignstudio/images/qmldesigner-states-when-condition.png diff --git a/doc/qtcreator/images/qmldesigner-states.png b/doc/qtdesignstudio/images/qmldesigner-states.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-states.png rename to doc/qtdesignstudio/images/qmldesigner-states.png diff --git a/doc/qtcreator/images/qmldesigner-text-property-tr.png b/doc/qtdesignstudio/images/qmldesigner-text-property-tr.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-text-property-tr.png rename to doc/qtdesignstudio/images/qmldesigner-text-property-tr.png diff --git a/doc/qtcreator/images/qmldesigner-transition-editor-startup.png b/doc/qtdesignstudio/images/qmldesigner-transition-editor-startup.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-transition-editor-startup.png rename to doc/qtdesignstudio/images/qmldesigner-transition-editor-startup.png diff --git a/doc/qtcreator/images/qmldesigner-transitions.png b/doc/qtdesignstudio/images/qmldesigner-transitions.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-transitions.png rename to doc/qtdesignstudio/images/qmldesigner-transitions.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-bindings.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-bindings.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-bindings.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-bindings.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-connections.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-connections.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-connections.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-connections.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-easing-curves.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-easing-curves.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-easing-curves.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-easing-curves.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-page-component.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-page-component.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-page-component.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-page-component.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-states.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-states.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-states.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-states.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-topleftrect-layout.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-topleftrect-layout.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-topleftrect-layout.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-topleftrect-layout.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-topleftrect.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-topleftrect.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-topleftrect.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-topleftrect.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-transition-settings.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-transition-settings.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-transition-settings.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-transition-settings.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-transitions.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-transitions.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-transitions.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-transitions.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-ui-ready.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-ui-ready.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-ui-ready.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-ui-ready.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial-user-icon.png b/doc/qtdesignstudio/images/qmldesigner-tutorial-user-icon.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial-user-icon.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial-user-icon.png diff --git a/doc/qtcreator/images/qmldesigner-tutorial.png b/doc/qtdesignstudio/images/qmldesigner-tutorial.png similarity index 100% rename from doc/qtcreator/images/qmldesigner-tutorial.png rename to doc/qtdesignstudio/images/qmldesigner-tutorial.png diff --git a/doc/qtcreator/images/qmldesigner-zooming.gif b/doc/qtdesignstudio/images/qmldesigner-zooming.gif similarity index 100% rename from doc/qtcreator/images/qmldesigner-zooming.gif rename to doc/qtdesignstudio/images/qmldesigner-zooming.gif diff --git a/doc/qtcreator/images/qtcreator-reset-position-icon.png b/doc/qtdesignstudio/images/qtcreator-reset-position-icon.png similarity index 100% rename from doc/qtcreator/images/qtcreator-reset-position-icon.png rename to doc/qtdesignstudio/images/qtcreator-reset-position-icon.png diff --git a/doc/qtcreator/images/qtcreator-reset-size-icon.png b/doc/qtdesignstudio/images/qtcreator-reset-size-icon.png similarity index 100% rename from doc/qtcreator/images/qtcreator-reset-size-icon.png rename to doc/qtdesignstudio/images/qtcreator-reset-size-icon.png diff --git a/doc/qtcreator/images/qtquick-annotation-editor.png b/doc/qtdesignstudio/images/qtquick-annotation-editor.png similarity index 100% rename from doc/qtcreator/images/qtquick-annotation-editor.png rename to doc/qtdesignstudio/images/qtquick-annotation-editor.png diff --git a/doc/qtcreator/images/qtquick-annotations.png b/doc/qtdesignstudio/images/qtquick-annotations.png similarity index 100% rename from doc/qtcreator/images/qtquick-annotations.png rename to doc/qtdesignstudio/images/qtquick-annotations.png diff --git a/doc/qtcreator/images/qtquick-assets-tab.png b/doc/qtdesignstudio/images/qtquick-assets-tab.png similarity index 100% rename from doc/qtcreator/images/qtquick-assets-tab.png rename to doc/qtdesignstudio/images/qtquick-assets-tab.png diff --git a/doc/qtcreator/images/qtquick-color-animation.gif b/doc/qtdesignstudio/images/qtquick-color-animation.gif similarity index 100% rename from doc/qtcreator/images/qtquick-color-animation.gif rename to doc/qtdesignstudio/images/qtquick-color-animation.gif diff --git a/doc/qtcreator/images/qtquick-components-custom.png b/doc/qtdesignstudio/images/qtquick-components-custom.png similarity index 100% rename from doc/qtcreator/images/qtquick-components-custom.png rename to doc/qtdesignstudio/images/qtquick-components-custom.png diff --git a/doc/qtcreator/images/qtquick-components-tab-add.png b/doc/qtdesignstudio/images/qtquick-components-tab-add.png similarity index 100% rename from doc/qtcreator/images/qtquick-components-tab-add.png rename to doc/qtdesignstudio/images/qtquick-components-tab-add.png diff --git a/doc/qtcreator/images/qtquick-components-tab.png b/doc/qtdesignstudio/images/qtquick-components-tab.png similarity index 100% rename from doc/qtcreator/images/qtquick-components-tab.png rename to doc/qtdesignstudio/images/qtquick-components-tab.png diff --git a/doc/qtcreator/images/qtquick-connection-editor-action.png b/doc/qtdesignstudio/images/qtquick-connection-editor-action.png similarity index 100% rename from doc/qtcreator/images/qtquick-connection-editor-action.png rename to doc/qtdesignstudio/images/qtquick-connection-editor-action.png diff --git a/doc/qtcreator/images/qtquick-connection-editor-assignment.png b/doc/qtdesignstudio/images/qtquick-connection-editor-assignment.png similarity index 100% rename from doc/qtcreator/images/qtquick-connection-editor-assignment.png rename to doc/qtdesignstudio/images/qtquick-connection-editor-assignment.png diff --git a/doc/qtcreator/images/qtquick-custom-properties.png b/doc/qtdesignstudio/images/qtquick-custom-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-custom-properties.png rename to doc/qtdesignstudio/images/qtquick-custom-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-abstract-button-properties.png b/doc/qtdesignstudio/images/qtquick-designer-abstract-button-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-abstract-button-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-abstract-button-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-animated-image-properties.png b/doc/qtdesignstudio/images/qtquick-designer-animated-image-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-animated-image-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-animated-image-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-border-image-properties.png b/doc/qtdesignstudio/images/qtquick-designer-border-image-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-border-image-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-border-image-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-button-properties.png b/doc/qtdesignstudio/images/qtquick-designer-button-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-button-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-button-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-button-types.png b/doc/qtdesignstudio/images/qtquick-designer-button-types.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-button-types.png rename to doc/qtdesignstudio/images/qtquick-designer-button-types.png diff --git a/doc/qtcreator/images/qtquick-designer-color-details.png b/doc/qtdesignstudio/images/qtquick-designer-color-details.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-color-details.png rename to doc/qtdesignstudio/images/qtquick-designer-color-details.png diff --git a/doc/qtcreator/images/qtquick-designer-color-palette.png b/doc/qtdesignstudio/images/qtquick-designer-color-palette.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-color-palette.png rename to doc/qtdesignstudio/images/qtquick-designer-color-palette.png diff --git a/doc/qtcreator/images/qtquick-designer-color-picker.png b/doc/qtdesignstudio/images/qtquick-designer-color-picker.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-color-picker.png rename to doc/qtdesignstudio/images/qtquick-designer-color-picker.png diff --git a/doc/qtcreator/images/qtquick-designer-combobox-properties.png b/doc/qtdesignstudio/images/qtquick-designer-combobox-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-combobox-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-combobox-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-control-properties.png b/doc/qtdesignstudio/images/qtquick-designer-control-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-control-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-control-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-dial-properties.png b/doc/qtdesignstudio/images/qtquick-designer-dial-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-dial-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-dial-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-edit-list-model.png b/doc/qtdesignstudio/images/qtquick-designer-edit-list-model.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-edit-list-model.png rename to doc/qtdesignstudio/images/qtquick-designer-edit-list-model.png diff --git a/doc/qtcreator/images/qtquick-designer-flickable-geometry.png b/doc/qtdesignstudio/images/qtquick-designer-flickable-geometry.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-flickable-geometry.png rename to doc/qtdesignstudio/images/qtquick-designer-flickable-geometry.png diff --git a/doc/qtcreator/images/qtquick-designer-flickable-properties.png b/doc/qtdesignstudio/images/qtquick-designer-flickable-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-flickable-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-flickable-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-gradient-picker.png b/doc/qtdesignstudio/images/qtquick-designer-gradient-picker.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gradient-picker.png rename to doc/qtdesignstudio/images/qtquick-designer-gradient-picker.png diff --git a/doc/qtcreator/images/qtquick-designer-gradient-properties-conical.png b/doc/qtdesignstudio/images/qtquick-designer-gradient-properties-conical.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gradient-properties-conical.png rename to doc/qtdesignstudio/images/qtquick-designer-gradient-properties-conical.png diff --git a/doc/qtcreator/images/qtquick-designer-gradient-properties-linear.png b/doc/qtdesignstudio/images/qtquick-designer-gradient-properties-linear.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gradient-properties-linear.png rename to doc/qtdesignstudio/images/qtquick-designer-gradient-properties-linear.png diff --git a/doc/qtcreator/images/qtquick-designer-gradient-properties-radial.png b/doc/qtdesignstudio/images/qtquick-designer-gradient-properties-radial.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gradient-properties-radial.png rename to doc/qtdesignstudio/images/qtquick-designer-gradient-properties-radial.png diff --git a/doc/qtcreator/images/qtquick-designer-gradient-stops.gif b/doc/qtdesignstudio/images/qtquick-designer-gradient-stops.gif similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gradient-stops.gif rename to doc/qtdesignstudio/images/qtquick-designer-gradient-stops.gif diff --git a/doc/qtcreator/images/qtquick-designer-gradient-types.png b/doc/qtdesignstudio/images/qtquick-designer-gradient-types.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gradient-types.png rename to doc/qtdesignstudio/images/qtquick-designer-gradient-types.png diff --git a/doc/qtcreator/images/qtquick-designer-gridview-properties.png b/doc/qtdesignstudio/images/qtquick-designer-gridview-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-gridview-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-gridview-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-image-properties.png b/doc/qtdesignstudio/images/qtquick-designer-image-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-image-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-image-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-image-type.png b/doc/qtdesignstudio/images/qtquick-designer-image-type.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-image-type.png rename to doc/qtdesignstudio/images/qtquick-designer-image-type.png diff --git a/doc/qtcreator/images/qtquick-designer-indicator-types.png b/doc/qtdesignstudio/images/qtquick-designer-indicator-types.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-indicator-types.png rename to doc/qtdesignstudio/images/qtquick-designer-indicator-types.png diff --git a/doc/qtcreator/images/qtquick-designer-listview-highlight-properties.png b/doc/qtdesignstudio/images/qtquick-designer-listview-highlight-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-listview-highlight-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-listview-highlight-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-listview-preview.png b/doc/qtdesignstudio/images/qtquick-designer-listview-preview.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-listview-preview.png rename to doc/qtdesignstudio/images/qtquick-designer-listview-preview.png diff --git a/doc/qtcreator/images/qtquick-designer-listview-properties.png b/doc/qtdesignstudio/images/qtquick-designer-listview-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-listview-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-listview-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-navigator-arrange.gif b/doc/qtdesignstudio/images/qtquick-designer-navigator-arrange.gif similarity index 100% rename from doc/qtcreator/images/qtquick-designer-navigator-arrange.gif rename to doc/qtdesignstudio/images/qtquick-designer-navigator-arrange.gif diff --git a/doc/qtcreator/images/qtquick-designer-navigator-lock.gif b/doc/qtdesignstudio/images/qtquick-designer-navigator-lock.gif similarity index 100% rename from doc/qtcreator/images/qtquick-designer-navigator-lock.gif rename to doc/qtdesignstudio/images/qtquick-designer-navigator-lock.gif diff --git a/doc/qtcreator/images/qtquick-designer-options.png b/doc/qtdesignstudio/images/qtquick-designer-options.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-options.png rename to doc/qtdesignstudio/images/qtquick-designer-options.png diff --git a/doc/qtcreator/images/qtquick-designer-pathview-properties.png b/doc/qtdesignstudio/images/qtquick-designer-pathview-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-pathview-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-pathview-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-progressbar-properties.png b/doc/qtdesignstudio/images/qtquick-designer-progressbar-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-progressbar-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-progressbar-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-properties-font.png b/doc/qtdesignstudio/images/qtquick-designer-properties-font.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-properties-font.png rename to doc/qtdesignstudio/images/qtquick-designer-properties-font.png diff --git a/doc/qtcreator/images/qtquick-designer-qtquickcontrols-types.png b/doc/qtdesignstudio/images/qtquick-designer-qtquickcontrols-types.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-qtquickcontrols-types.png rename to doc/qtdesignstudio/images/qtquick-designer-qtquickcontrols-types.png diff --git a/doc/qtcreator/images/qtquick-designer-range-slider-properties.png b/doc/qtdesignstudio/images/qtquick-designer-range-slider-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-range-slider-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-range-slider-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-rotating-items.png b/doc/qtdesignstudio/images/qtquick-designer-rotating-items.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-rotating-items.png rename to doc/qtdesignstudio/images/qtquick-designer-rotating-items.png diff --git a/doc/qtcreator/images/qtquick-designer-round-button-properties.png b/doc/qtdesignstudio/images/qtquick-designer-round-button-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-round-button-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-round-button-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-scaling-items.png b/doc/qtdesignstudio/images/qtquick-designer-scaling-items.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-scaling-items.png rename to doc/qtdesignstudio/images/qtquick-designer-scaling-items.png diff --git a/doc/qtcreator/images/qtquick-designer-selector-types.png b/doc/qtdesignstudio/images/qtquick-designer-selector-types.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-selector-types.png rename to doc/qtdesignstudio/images/qtquick-designer-selector-types.png diff --git a/doc/qtcreator/images/qtquick-designer-stacked-view.png b/doc/qtdesignstudio/images/qtquick-designer-stacked-view.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-stacked-view.png rename to doc/qtdesignstudio/images/qtquick-designer-stacked-view.png diff --git a/doc/qtcreator/images/qtquick-designer-style-list.png b/doc/qtdesignstudio/images/qtquick-designer-style-list.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-style-list.png rename to doc/qtdesignstudio/images/qtquick-designer-style-list.png diff --git a/doc/qtcreator/images/qtquick-designer-tabbar-properties.png b/doc/qtdesignstudio/images/qtquick-designer-tabbar-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-tabbar-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-tabbar-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-text-edit-properties.png b/doc/qtdesignstudio/images/qtquick-designer-text-edit-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-text-edit-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-text-edit-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-text-input-properties.png b/doc/qtdesignstudio/images/qtquick-designer-text-input-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-text-input-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-text-input-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-text-properties.png b/doc/qtdesignstudio/images/qtquick-designer-text-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-text-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-text-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-toolbar-properties.png b/doc/qtdesignstudio/images/qtquick-designer-toolbar-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-toolbar-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-toolbar-properties.png diff --git a/doc/qtcreator/images/qtquick-designer-tumbler-properties.png b/doc/qtdesignstudio/images/qtquick-designer-tumbler-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-designer-tumbler-properties.png rename to doc/qtdesignstudio/images/qtquick-designer-tumbler-properties.png diff --git a/doc/qtcreator/images/qtquick-item-properties-advanced.png b/doc/qtdesignstudio/images/qtquick-item-properties-advanced.png similarity index 100% rename from doc/qtcreator/images/qtquick-item-properties-advanced.png rename to doc/qtdesignstudio/images/qtquick-item-properties-advanced.png diff --git a/doc/qtcreator/images/qtquick-item-properties-common.png b/doc/qtdesignstudio/images/qtquick-item-properties-common.png similarity index 100% rename from doc/qtcreator/images/qtquick-item-properties-common.png rename to doc/qtdesignstudio/images/qtquick-item-properties-common.png diff --git a/doc/qtcreator/images/qtquick-item-properties-layer.png b/doc/qtdesignstudio/images/qtquick-item-properties-layer.png similarity index 100% rename from doc/qtcreator/images/qtquick-item-properties-layer.png rename to doc/qtdesignstudio/images/qtquick-item-properties-layer.png diff --git a/doc/qtcreator/images/qtquick-layout-grid-properties.png b/doc/qtdesignstudio/images/qtquick-layout-grid-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-layout-grid-properties.png rename to doc/qtdesignstudio/images/qtquick-layout-grid-properties.png diff --git a/doc/qtcreator/images/qtquick-library-context-menu-hide.png b/doc/qtdesignstudio/images/qtquick-library-context-menu-hide.png similarity index 100% rename from doc/qtcreator/images/qtquick-library-context-menu-hide.png rename to doc/qtdesignstudio/images/qtquick-library-context-menu-hide.png diff --git a/doc/qtcreator/images/qtquick-library-context-menu.png b/doc/qtdesignstudio/images/qtquick-library-context-menu.png similarity index 100% rename from doc/qtcreator/images/qtquick-library-context-menu.png rename to doc/qtdesignstudio/images/qtquick-library-context-menu.png diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor.png b/doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-binding-editor.png similarity index 100% rename from doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor.png rename to doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-binding-editor.png diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor1.png b/doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-binding-editor1.png similarity index 100% rename from doc/qtcreator/images/qtquick-mobile-app-tutorial-binding-editor1.png rename to doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-binding-editor1.png diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-bubble-component.png b/doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-bubble-component.png similarity index 100% rename from doc/qtcreator/images/qtquick-mobile-app-tutorial-bubble-component.png rename to doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-bubble-component.png diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-custom-properties.png b/doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-custom-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-mobile-app-tutorial-custom-properties.png rename to doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-custom-properties.png diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-image.png b/doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-image.png similarity index 100% rename from doc/qtcreator/images/qtquick-mobile-app-tutorial-image.png rename to doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-image.png diff --git a/doc/qtcreator/images/qtquick-mobile-app-tutorial-main-view.png b/doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-main-view.png similarity index 100% rename from doc/qtcreator/images/qtquick-mobile-app-tutorial-main-view.png rename to doc/qtdesignstudio/images/qtquick-mobile-app-tutorial-main-view.png diff --git a/doc/qtcreator/images/qtquick-number-animation.gif b/doc/qtdesignstudio/images/qtquick-number-animation.gif similarity index 100% rename from doc/qtcreator/images/qtquick-number-animation.gif rename to doc/qtdesignstudio/images/qtquick-number-animation.gif diff --git a/doc/qtcreator/images/qtquick-positioner-column-properties.png b/doc/qtdesignstudio/images/qtquick-positioner-column-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-positioner-column-properties.png rename to doc/qtdesignstudio/images/qtquick-positioner-column-properties.png diff --git a/doc/qtcreator/images/qtquick-positioner-flow-properties.png b/doc/qtdesignstudio/images/qtquick-positioner-flow-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-positioner-flow-properties.png rename to doc/qtdesignstudio/images/qtquick-positioner-flow-properties.png diff --git a/doc/qtcreator/images/qtquick-positioner-grid-properties.png b/doc/qtdesignstudio/images/qtquick-positioner-grid-properties.png similarity index 100% rename from doc/qtcreator/images/qtquick-positioner-grid-properties.png rename to doc/qtdesignstudio/images/qtquick-positioner-grid-properties.png diff --git a/doc/qtcreator/images/qtquick-properties-2D-geometry.png b/doc/qtdesignstudio/images/qtquick-properties-2D-geometry.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-2D-geometry.png rename to doc/qtdesignstudio/images/qtquick-properties-2D-geometry.png diff --git a/doc/qtcreator/images/qtquick-properties-advanced.png b/doc/qtdesignstudio/images/qtquick-properties-advanced.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-advanced.png rename to doc/qtdesignstudio/images/qtquick-properties-advanced.png diff --git a/doc/qtcreator/images/qtquick-properties-animation.png b/doc/qtdesignstudio/images/qtquick-properties-animation.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-animation.png rename to doc/qtdesignstudio/images/qtquick-properties-animation.png diff --git a/doc/qtcreator/images/qtquick-properties-busy-indicator.png b/doc/qtdesignstudio/images/qtquick-properties-busy-indicator.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-busy-indicator.png rename to doc/qtdesignstudio/images/qtquick-properties-busy-indicator.png diff --git a/doc/qtcreator/images/qtquick-properties-check-box.png b/doc/qtdesignstudio/images/qtquick-properties-check-box.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-check-box.png rename to doc/qtdesignstudio/images/qtquick-properties-check-box.png diff --git a/doc/qtcreator/images/qtquick-properties-coloranimation.png b/doc/qtdesignstudio/images/qtquick-properties-coloranimation.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-coloranimation.png rename to doc/qtdesignstudio/images/qtquick-properties-coloranimation.png diff --git a/doc/qtcreator/images/qtquick-properties-font-extras.png b/doc/qtdesignstudio/images/qtquick-properties-font-extras.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-font-extras.png rename to doc/qtdesignstudio/images/qtquick-properties-font-extras.png diff --git a/doc/qtcreator/images/qtquick-properties-mouse-area-accepted-buttons.png b/doc/qtdesignstudio/images/qtquick-properties-mouse-area-accepted-buttons.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-mouse-area-accepted-buttons.png rename to doc/qtdesignstudio/images/qtquick-properties-mouse-area-accepted-buttons.png diff --git a/doc/qtcreator/images/qtquick-properties-mouse-area-drag.png b/doc/qtdesignstudio/images/qtquick-properties-mouse-area-drag.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-mouse-area-drag.png rename to doc/qtdesignstudio/images/qtquick-properties-mouse-area-drag.png diff --git a/doc/qtcreator/images/qtquick-properties-mouse-area.png b/doc/qtdesignstudio/images/qtquick-properties-mouse-area.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-mouse-area.png rename to doc/qtdesignstudio/images/qtquick-properties-mouse-area.png diff --git a/doc/qtcreator/images/qtquick-properties-numberanimation.png b/doc/qtdesignstudio/images/qtquick-properties-numberanimation.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-numberanimation.png rename to doc/qtdesignstudio/images/qtquick-properties-numberanimation.png diff --git a/doc/qtcreator/images/qtquick-properties-page-indicator.png b/doc/qtdesignstudio/images/qtquick-properties-page-indicator.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-page-indicator.png rename to doc/qtdesignstudio/images/qtquick-properties-page-indicator.png diff --git a/doc/qtcreator/images/qtquick-properties-propertyaction.png b/doc/qtdesignstudio/images/qtquick-properties-propertyaction.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-propertyaction.png rename to doc/qtdesignstudio/images/qtquick-properties-propertyaction.png diff --git a/doc/qtcreator/images/qtquick-properties-text-extras.png b/doc/qtdesignstudio/images/qtquick-properties-text-extras.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-text-extras.png rename to doc/qtdesignstudio/images/qtquick-properties-text-extras.png diff --git a/doc/qtcreator/images/qtquick-properties-text-field.png b/doc/qtdesignstudio/images/qtquick-properties-text-field.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-text-field.png rename to doc/qtdesignstudio/images/qtquick-properties-text-field.png diff --git a/doc/qtcreator/images/qtquick-properties-text-padding.png b/doc/qtdesignstudio/images/qtquick-properties-text-padding.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-text-padding.png rename to doc/qtdesignstudio/images/qtquick-properties-text-padding.png diff --git a/doc/qtcreator/images/qtquick-properties-visibility.png b/doc/qtdesignstudio/images/qtquick-properties-visibility.png similarity index 100% rename from doc/qtcreator/images/qtquick-properties-visibility.png rename to doc/qtdesignstudio/images/qtquick-properties-visibility.png diff --git a/doc/qtcreator/images/qtquick-property-action.gif b/doc/qtdesignstudio/images/qtquick-property-action.gif similarity index 100% rename from doc/qtcreator/images/qtquick-property-action.gif rename to doc/qtdesignstudio/images/qtquick-property-action.gif diff --git a/doc/qtcreator/images/qtquick-qml-export-dialog.png b/doc/qtdesignstudio/images/qtquick-qml-export-dialog.png similarity index 100% rename from doc/qtcreator/images/qtquick-qml-export-dialog.png rename to doc/qtdesignstudio/images/qtquick-qml-export-dialog.png diff --git a/doc/qtcreator/images/qtquick-rtf-editor.png b/doc/qtdesignstudio/images/qtquick-rtf-editor.png similarity index 100% rename from doc/qtcreator/images/qtquick-rtf-editor.png rename to doc/qtdesignstudio/images/qtquick-rtf-editor.png diff --git a/doc/qtcreator/images/qtquick-states-binding-editor-not.png b/doc/qtdesignstudio/images/qtquick-states-binding-editor-not.png similarity index 100% rename from doc/qtcreator/images/qtquick-states-binding-editor-not.png rename to doc/qtdesignstudio/images/qtquick-states-binding-editor-not.png diff --git a/doc/qtcreator/images/qtquick-states-binding-editor.png b/doc/qtdesignstudio/images/qtquick-states-binding-editor.png similarity index 100% rename from doc/qtcreator/images/qtquick-states-binding-editor.png rename to doc/qtdesignstudio/images/qtquick-states-binding-editor.png diff --git a/doc/qtcreator/images/qtquick-text-editor.png b/doc/qtdesignstudio/images/qtquick-text-editor.png similarity index 100% rename from doc/qtcreator/images/qtquick-text-editor.png rename to doc/qtdesignstudio/images/qtquick-text-editor.png diff --git a/doc/qtcreator/images/qtquick-text-rtf.gif b/doc/qtdesignstudio/images/qtquick-text-rtf.gif similarity index 100% rename from doc/qtcreator/images/qtquick-text-rtf.gif rename to doc/qtdesignstudio/images/qtquick-text-rtf.gif diff --git a/doc/qtcreator/images/qtquick-transition-editor-settings.png b/doc/qtdesignstudio/images/qtquick-transition-editor-settings.png similarity index 100% rename from doc/qtcreator/images/qtquick-transition-editor-settings.png rename to doc/qtdesignstudio/images/qtquick-transition-editor-settings.png diff --git a/doc/qtcreator/images/qtquick-transition-editor-view.png b/doc/qtdesignstudio/images/qtquick-transition-editor-view.png similarity index 100% rename from doc/qtcreator/images/qtquick-transition-editor-view.png rename to doc/qtdesignstudio/images/qtquick-transition-editor-view.png diff --git a/doc/qtcreator/images/qtquickcontrols2-busyindicator.gif b/doc/qtdesignstudio/images/qtquickcontrols2-busyindicator.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-busyindicator.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-busyindicator.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-button-flat.gif b/doc/qtdesignstudio/images/qtquickcontrols2-button-flat.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-button-flat.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-button-flat.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-button-highlighted.gif b/doc/qtdesignstudio/images/qtquickcontrols2-button-highlighted.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-button-highlighted.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-button-highlighted.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-button.gif b/doc/qtdesignstudio/images/qtquickcontrols2-button.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-button.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-button.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-checkbox-tristate.gif b/doc/qtdesignstudio/images/qtquickcontrols2-checkbox-tristate.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-checkbox-tristate.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-checkbox-tristate.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-checkbox.gif b/doc/qtdesignstudio/images/qtquickcontrols2-checkbox.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-checkbox.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-checkbox.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-checkdelegate.gif b/doc/qtdesignstudio/images/qtquickcontrols2-checkdelegate.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-checkdelegate.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-checkdelegate.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-combobox.gif b/doc/qtdesignstudio/images/qtquickcontrols2-combobox.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-combobox.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-combobox.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-delaybutton.gif b/doc/qtdesignstudio/images/qtquickcontrols2-delaybutton.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-delaybutton.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-delaybutton.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-dial-no-wrap.gif b/doc/qtdesignstudio/images/qtquickcontrols2-dial-no-wrap.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-dial-no-wrap.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-dial-no-wrap.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-progressbar-indeterminate.gif b/doc/qtdesignstudio/images/qtquickcontrols2-progressbar-indeterminate.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-progressbar-indeterminate.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-progressbar-indeterminate.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-progressbar.gif b/doc/qtdesignstudio/images/qtquickcontrols2-progressbar.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-progressbar.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-progressbar.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-radiobutton.gif b/doc/qtdesignstudio/images/qtquickcontrols2-radiobutton.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-radiobutton.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-radiobutton.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-radiodelegate.gif b/doc/qtdesignstudio/images/qtquickcontrols2-radiodelegate.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-radiodelegate.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-radiodelegate.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-rangeslider.gif b/doc/qtdesignstudio/images/qtquickcontrols2-rangeslider.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-rangeslider.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-rangeslider.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-slider.gif b/doc/qtdesignstudio/images/qtquickcontrols2-slider.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-slider.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-slider.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-spinbox.png b/doc/qtdesignstudio/images/qtquickcontrols2-spinbox.png similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-spinbox.png rename to doc/qtdesignstudio/images/qtquickcontrols2-spinbox.png diff --git a/doc/qtcreator/images/qtquickcontrols2-switch.gif b/doc/qtdesignstudio/images/qtquickcontrols2-switch.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-switch.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-switch.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-switchdelegate.gif b/doc/qtdesignstudio/images/qtquickcontrols2-switchdelegate.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-switchdelegate.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-switchdelegate.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-tabbar-flickable.png b/doc/qtdesignstudio/images/qtquickcontrols2-tabbar-flickable.png similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-tabbar-flickable.png rename to doc/qtdesignstudio/images/qtquickcontrols2-tabbar-flickable.png diff --git a/doc/qtcreator/images/qtquickcontrols2-tabbar.gif b/doc/qtdesignstudio/images/qtquickcontrols2-tabbar.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-tabbar.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-tabbar.gif diff --git a/doc/qtcreator/images/qtquickcontrols2-toolbar.png b/doc/qtdesignstudio/images/qtquickcontrols2-toolbar.png similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-toolbar.png rename to doc/qtdesignstudio/images/qtquickcontrols2-toolbar.png diff --git a/doc/qtcreator/images/qtquickcontrols2-tumbler-wrap.gif b/doc/qtdesignstudio/images/qtquickcontrols2-tumbler-wrap.gif similarity index 100% rename from doc/qtcreator/images/qtquickcontrols2-tumbler-wrap.gif rename to doc/qtdesignstudio/images/qtquickcontrols2-tumbler-wrap.gif diff --git a/doc/qtdesignstudio/images/studio-3d-scene-environment-ambient-occlusion.png b/doc/qtdesignstudio/images/studio-3d-scene-environment-ambient-occlusion.png new file mode 100644 index 00000000000..39a94f812eb Binary files /dev/null and b/doc/qtdesignstudio/images/studio-3d-scene-environment-ambient-occlusion.png differ diff --git a/doc/qtdesignstudio/images/studio-3d-scene-environment-antialiasing.png b/doc/qtdesignstudio/images/studio-3d-scene-environment-antialiasing.png new file mode 100644 index 00000000000..c9a637a9297 Binary files /dev/null and b/doc/qtdesignstudio/images/studio-3d-scene-environment-antialiasing.png differ diff --git a/doc/qtdesignstudio/images/studio-3d-scene-environment-light-probe.png b/doc/qtdesignstudio/images/studio-3d-scene-environment-light-probe.png new file mode 100644 index 00000000000..7a062a2a360 Binary files /dev/null and b/doc/qtdesignstudio/images/studio-3d-scene-environment-light-probe.png differ diff --git a/doc/qtdesignstudio/images/studio-3d-scene-environment-properties.png b/doc/qtdesignstudio/images/studio-3d-scene-environment-properties.png new file mode 100644 index 00000000000..353e0c35848 Binary files /dev/null and b/doc/qtdesignstudio/images/studio-3d-scene-environment-properties.png differ diff --git a/doc/qtcreator/images/studio-curve-editor.png b/doc/qtdesignstudio/images/studio-curve-editor.png similarity index 100% rename from doc/qtcreator/images/studio-curve-editor.png rename to doc/qtdesignstudio/images/studio-curve-editor.png diff --git a/doc/qtcreator/images/studio-easing-curve-editor.png b/doc/qtdesignstudio/images/studio-easing-curve-editor.png similarity index 100% rename from doc/qtcreator/images/studio-easing-curve-editor.png rename to doc/qtdesignstudio/images/studio-easing-curve-editor.png diff --git a/doc/qtcreator/images/studio-edit-keyframe.png b/doc/qtdesignstudio/images/studio-edit-keyframe.png similarity index 100% rename from doc/qtcreator/images/studio-edit-keyframe.png rename to doc/qtdesignstudio/images/studio-edit-keyframe.png diff --git a/doc/qtcreator/images/studio-iso-icon.png b/doc/qtdesignstudio/images/studio-iso-icon.png similarity index 100% rename from doc/qtcreator/images/studio-iso-icon.png rename to doc/qtdesignstudio/images/studio-iso-icon.png diff --git a/doc/qtcreator/images/studio-timeline-empty.png b/doc/qtdesignstudio/images/studio-timeline-empty.png similarity index 100% rename from doc/qtcreator/images/studio-timeline-empty.png rename to doc/qtdesignstudio/images/studio-timeline-empty.png diff --git a/doc/qtcreator/images/studio-timeline-keyframe-track-colors.png b/doc/qtdesignstudio/images/studio-timeline-keyframe-track-colors.png similarity index 100% rename from doc/qtcreator/images/studio-timeline-keyframe-track-colors.png rename to doc/qtdesignstudio/images/studio-timeline-keyframe-track-colors.png diff --git a/doc/qtcreator/images/studio-timeline-no-tracks.png b/doc/qtdesignstudio/images/studio-timeline-no-tracks.png similarity index 100% rename from doc/qtcreator/images/studio-timeline-no-tracks.png rename to doc/qtdesignstudio/images/studio-timeline-no-tracks.png diff --git a/doc/qtcreator/images/studio-timeline-settings.png b/doc/qtdesignstudio/images/studio-timeline-settings.png similarity index 100% rename from doc/qtcreator/images/studio-timeline-settings.png rename to doc/qtdesignstudio/images/studio-timeline-settings.png diff --git a/doc/qtcreator/images/studio-timeline-with-empty-tracks.png b/doc/qtdesignstudio/images/studio-timeline-with-empty-tracks.png similarity index 100% rename from doc/qtcreator/images/studio-timeline-with-empty-tracks.png rename to doc/qtdesignstudio/images/studio-timeline-with-empty-tracks.png diff --git a/doc/qtcreator/images/studio-timeline-with-tracks.png b/doc/qtdesignstudio/images/studio-timeline-with-tracks.png similarity index 100% rename from doc/qtcreator/images/studio-timeline-with-tracks.png rename to doc/qtdesignstudio/images/studio-timeline-with-tracks.png diff --git a/doc/qtcreator/images/studio-timeline.png b/doc/qtdesignstudio/images/studio-timeline.png similarity index 100% rename from doc/qtcreator/images/studio-timeline.png rename to doc/qtdesignstudio/images/studio-timeline.png diff --git a/doc/qtcreator/images/timeline-rotation-animation.gif b/doc/qtdesignstudio/images/timeline-rotation-animation.gif similarity index 100% rename from doc/qtcreator/images/timeline-rotation-animation.gif rename to doc/qtdesignstudio/images/timeline-rotation-animation.gif diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-lights.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-lights.qdoc index 8fd1539d51e..b4875eee260 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-lights.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-lights.qdoc @@ -33,7 +33,7 @@ \title Lights Light components are the primary source of lighting in a \QDS scene. - As a secondary light source, you can use \l{Using Image-based Lighting} + As a secondary light source, you can use \l{Setting the Light Probe} {image-based lighting}. To add light components to your UI, drag-and-drop them from \l Library diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-scene-environment.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-scene-environment.qdoc index 72f0a44b5e7..d738cbe7d33 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-scene-environment.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-scene-environment.qdoc @@ -32,123 +32,282 @@ \title Scene Environment - You can use the SceneEnvironment type to specify how the scene is rendered - globally. You can specify settings for antialiasing, scene background, - ambient occlusion, and image based lighting in the \uicontrol Properties - view. + You can use the \uicontrol {Scene Environment} component to specify + how a scene is rendered globally. You can specify settings for antialiasing, + scene background, ambient occlusion, and image-based lighting in the + \l Properties view. The \uicontrol {Scene Environment} component is available + in \l Library > \uicontrol Components > \uicontrol {Qt Quick 3D}. It is + automatically included under the 3D view component in \l{Creating Projects} + {projects created} using the \uicontrol {Qt Quick 3D Application} wizard + template. - \section1 Antialiasing + \note If you select \uicontrol {Qt 5} as the \uicontrol {Target Qt Version} + when \l {Creating Projects}{creating your project}, the available properties + for this component will be slightly different. The properties may also be + situated differently in the \uicontrol Properties view. - You can apply temporal, progressive, or multisample antialiasing to - scenes. Temporal and progressive antialiasing jiggle the camera very - slightly between frames and blend the result of each new frame with - the previous frames, while multisample antialiasing super-samples - the edges of geometry. + \section1 Setting the Scene Environment - Temporal antialiasing finds real details that would otherwise be lost - and has a low impact on performance, but fast-moving objects cause - one-frame ghosting. To enable temporal antialiasing, select the - \uicontrol {Temporal AA} check box. + In the \uicontrol {Scene Environment} section of the \uicontrol Properties + view, you can specify whether and how the background of the scene should be + cleared, specify whether you wish to perform depth-tests on the scene, + apply post-processing effects to the scene, and define how colors are + tonemapped before the scene is rendered. - Progressive antialiasing jiggles the camera after all the content of the - scene has stopped moving. The more frames you accumulate, the better the - result looks. This provides detailed static images with no performance cost, - but does not take effect if any visual changes are occurring. + \image studio-3d-scene-environment-properties.png "The Scene Environment properties" - To apply progressive antialiasing, set the number of frames to use for the - final image in the \uicontrol {Progressive AA} field. Note that at the - value of 8x, progressive antialiasing takes one eighth of a second to finish - rendering at 60 FTPS, which may be noticeable. + The \uicontrol {Clear color} property specifies which color will be used to + clear the background of the scene if \uicontrol {Background mode} is defined + as \uicontrol Color. Use the \l{Picking Colors}{color picker} to select the + color of your choice. - Multisample antialiasing results in smoother silhouettes, but has no effect - on the materials inside geometry. It provides good results on geometry - silhouettes, where aliasing is often most noticeable and works smoothly with - fast animation. However, it can be expensive to use and does not help with - texture or reflection issues. + The \uicontrol {Background mode} property defines whether the background + of the scene should be cleared as well as the manner of clearing it. + Use the dropdown menu to select one of the available modes: + \table + \header + \li Background Mode + \li Description + \row + \li Transparent + \li The scene is cleared to be transparent, which is useful + for rendering 3D content on top of another item. This mode + has no effect when the \uicontrol View3D component is using + \uicontrol Underlay or \uicontrol Overlay as the render mode. + \row + \li Color + \li The scene is cleared with the color specified by the + \uicontrol {Clear color} property. This mode has no effect + when the \uicontrol View3D component is using the + \uicontrol Underlay or \uicontrol Overlay as the render + mode. + \row + \li SkyBox + \li The scene will not be cleared, but instead a + \uicontrol SkyBox or Skydome will be rendered. Define an + image as a \uicontrol SkyBox using the + \uicontrol Image property in the \uicontrol {Light probe} + section (In Qt 5, the \uicontrol {Light Probe} property in + the \uicontrol {Image-Based Lighting} group. + \endtable - To apply multisample antialiasing, set the number of samples to use per - pixel in the \uicontrol {Multisample AA} field. + To leave the scene uncleared, select \uicontrol {Unspecified} as the + \uicontrol {Background mode}. - \section1 Clearing the Scene Background - - To clear the background of the scene to be transparent, select - \uicontrol Transparent in the \uicontrol {Background mode} field. - To clear the background using a color, select \uicontrol Color, - and select the color in the \uicontrol {Clear Color} field. - - To render a Skybox or Skydome instead of clearing the scene, - select \uicontrol SkyBox. You can specify the image to use as - a value of the \l{SceneEnvironment::lightProbe}{lightProbe} - property in \l{Text Editor}. - - To leave the scene uncleared, select \uicontrol {Unspecified}. - - \section1 Performing Depth Tests - - You can perform depth tests to optimize the scene environment. To skip depth - tests, deselect the \uicontrol {Enable depth test} checkbox. Note that + You can perform depth tests to optimize the scene environment. To skip the + depth tests, deselect the \uicontrol {Enable depth test} checkbox. Note that skipping the tests can cause rendering errors. To have the renderer write to the depth buffer as part of the color pass, - deselect the \uicontrol {Enable depth prepass} checkbox. Disable depth - prepass on GPU's that use a tiled rendering architecture. + deselect the \uicontrol {Enable depth prepass} checkbox. Deselecting the + checkbox disables the depth prepass on any GPU that uses tiled rendering + architecture. - \section1 Ambient Occlusion + The \uicontrol Effect property defines a post-processing effect to the + scene. Use the dropdown menu to select one of the effects that will be + applied to the entire scene. The order of the effects is significant since + the result of each effect is fed to the next. + + The \uicontrol {Tonemap mode} property defines how colors are tonemapped + before rendering. Select \uicontrol ToneMapModeLinear to apply linear + tonemapping, which gamma corrects colors and returns them in sRGB color + space. You can also select \uicontrol ToneMapModeAces to apply Academy Color + Encoding System, \uicontrol ToneMapModeHejlDawson to apply the Hejl-Dawson + tonemapping, or \uicontrol ToneMapModeFilmic to apply filmic tonemapping. + \note The \uicontrol {Tonemap mode} property is not available in Qt 5. + + \section1 Applying Antialiasing + + Antialiasing is used to make curved lines smoother on the screen. In the + \uicontrol Antialiasing section of the \uicontrol Properties view, you can + specify the mode and quality of antialiasing and also enable temporal + antialiasing and define its strength. + + \image studio-3d-scene-environment-antialiasing.png "The Antialiasing properties" + + The \uicontrol {Antialiasing mode} property specifies the mode of + antialiasing applied when the scene is rendered. Select one of the following + modes using the dropdown menu: + \table + \header + \li Mode of Antialiasing + \li Description + \row + \li MSAA + \li Applies multisample antialiasing. The scene is rendered in a + higher resolution and then scaled down to actual resolution. + \row + \li NoAA + \li No antialiasing is applied. + \row + \li SSAA + \li Supersample antialiasing is applied. The edges of geometry + are supersampled, resulting in smoother silhouettes. This + technique has no effect on the materials inside geometry. + \row + \li ProgressiveAA + \li Progressive antialiasing is applied. When the content of the + scene has stopped moving, the camera is jiggled very slightly + between frames, and the result of each new frame is blended + with the previous frames. The more frames you accumulate, + the better looking the result. + \endtable + + The \uicontrol {Antialiasing quality} property sets the level of antialiasing + applied to the scene. Define the quality of antialiasing as \uicontrol Medium, + \uicontrol High, or \uicontrol {Very High}. The effect of the selected + \uicontrol {Antialiasing quality} depends on the selected + \uicontrol {Antialiasing mode}, as you can see from the table below. + In the \uicontrol SSAA mode the selected quality affects the supersampling + resolution, in \uicontrol MSAA it determines the number or samples per + pixel, and in \uicontrol ProgressiveAA it defines the number of frames for + final image. + \table + \header + \li Level of Antialiasing + \li Supersampling Resolution used in SSAA + \li Number of samples per pixel in MSAA + \li Number of frames for final image in ProgressiveAA + \row + \li Medium + \li 1.2x + \li 2 + \li 2 + \row + \li High + \li 1.5x + \li 4 + \li 4 + \row + \li Very High + \li 2.0x + \li 8 + \li 8 + \endtable + + \note With \uicontrol {Antialiasing mode} set to \uicontrol NoAA, + \uicontrol {Antialiasing quality} does not affect antialiasing. + + The \uicontrol {Temporal AA} property enables temporal antialiasing. + This means that the camera is jiggled very slightly between frames, and the + result of each new frame is blended with the previous frame. + \note Temporal antialiasing does not have an effect when the \uicontrol MSAA + mode is used. + \note When combined with \uicontrol ProgressiveAA mode, temporal antialising + is used for animations, and \uicontrol ProgressiveAA is used once + animations stop. + + The \uicontrol {Temporal AA strength} property modifies the amount of + temporal movement in antialiasing. This property only has an effect when + the \uicontrol {Temporal AA} property is set to true. + + \note In Qt 5, the antialiasing properties are located in + \uicontrol Properties > \uicontrol {Scene Environment}. + + \section1 Applying Ambient Occlusion Ambient occlusion is a form of approximated global illumination that causes - non-directional self-shadowing where objects are close together. + non-directional self-shadowing where objects are close together. You can + define the \uicontrol Strength, \uicontrol Distance, \uicontrol Softness, + \uicontrol {Sample rate}, and \uicontrol Bias properties in the + \uicontrol {Ambient Occlusion} section of the \uicontrol Properties view. - You can set the strength of the shadows in the \uicontrol {AO strength} - field. A value of 100 causes full darkness shadows, while lower values - cause the shadowing to appear lighter. A value of 0 disables ambient - occlusion entirely, improving performance at a cost to the visual realism - of 3D objects rendered in the scene. All values other than 0 have the same - impact on performance. + \image studio-3d-scene-environment-ambient-occlusion.png "The Ambient Occlusion properties" - To specify roughly how far ambient occlusion shadows spread away from - objects, select the distance in \uicontrol {AO distance} field. Greater - distances cause increasing impact to performance. + You can set the strength of the shadows using the \uicontrol Strength + property, which defines the amount of ambient occlusion applied. A value of + 100 causes full darkness shadows, while lower values cause the shadowing to + appear lighter. A value of 0 disables ambient occlusion entirely, thus + improving performance at a cost to the visual realism of 3D objects rendered + in the scene. All values other than 0 have the same impact on performance. - To prevent components from exhibiting ambient occlusion at close distances, - set the cutoff distance in the \uicontrol {AO bias} field. The higher the - value, the greater the distance that is required between objects before - ambient occlusion occurs. + The \uicontrol Distance property defines roughly how far the ambient occlusion + shadows spread away from objects. Greater distances cause increasing impact + to performance. - \note If you see ambient occlusion shadowing on objects where there should - be no shadowing, increase the value slightly to clip away close results. - - To specify how smooth the edges of the ambient occlusion shading are, set - the softness in the \uicontrol {AO softness} field. To improve smoothness at - the risk of sometimes producing obvious patterned artifacts, you can scatter - the edges of the ambient occlusion shadow bands by selecting the - \uicontrol {AO dither} check box. - - To specify the ambient occlusion quality, at the expense of performance, - select the number of shades of gray to use in the - \uicontrol {AO sample rate} field. + The \uicontrol Softness property specifies how smooth the edges of the + ambient occlusion shading are. The value set for the property must be + between 0.0 and 50.0. To improve smoothness at the risk of sometimes + producing obvious patterned artifacts, you can scatter the edges of the + ambient occlusion shadow bands by selecting the \uicontrol {Dither} check + box. \note Large distances between the clipping planes of your camera may cause problems with ambient occlusion. If you are seeing odd banding in ambient occlusion, try adjusting the value in the \uicontrol {Clip far} field in the \l{Cameras}{scene camera} properties. - \section1 Using Image-based Lighting + The \uicontrol {Sample rate} property specifies the number of shades of gray, + thus defining the quality of ambient occlusion at the expense of performance. - In the material properties, you can specify an image (preferably - a high-dynamic range image) to use to light the scene, either - instead of or in addition to \l{Lights}{scene lights}. In the - \uicontrol {Probe brightness} field, you can modify the amount of - light emitted by the light probe. + The \uicontrol Bias property defines a cutoff distance preventing objects + from exhibiting ambient occlusion at close distances. The higher the + value, the greater the distance required between objects before ambient + occlusion occurs. + \note If you see ambient occlusion shadowing on objects where there should + be no shadowing, increase the value slightly to clip away close results. - To take shortcuts to approximate the light contributes of the light - probe at the expense of quality, select the \uicontrol {Fast IBL} - check box. + \note In Qt 5, some the ambient occlusion properties are named slightly + differently: \uicontrol {AO strength}, \uicontrol {AO distance}, + \uicontrol {AO softness}, \uicontrol {AO dither}, and \uicontrol {AO bias}. - To add darkness (black) to the bottom half of the environment, force - the lighting to come predominantly from the top of the image, and - remove specific reflections from the lower half, increase the value - of the \uicontrol {Probe horizon} field. + \section1 Setting the Light Probe - To specify the image source field of view when using a camera source as - the light probe, set the angle in the \uicontrol {Probe FOV} field. + In the \uicontrol {Light Probe} section of the \uicontrol Properties view, + you can set the \uicontrol Image, \uicontrol Exposure, \uicontrol Horizon, + and \uicontrol Orientation properties for image-based lighting. + + \image studio-3d-scene-environment-light-probe.png "The Light Probe properties" + + The \uicontrol Image property defines an image used to light the scene + instead of or in addition to standard lights. The image is preferably a + high-dynamic range image or a pre-generated cubemap. Pre-baking provides + significant performance improvements at run time because no time is spent on + filtering and mipmap generation. If the source is a .hdr or other image, + the GPU-based pre-processing happens at run time after loading the image + file, which can be potentially time consuming, in particular on embedded and + mobile hardware. Therefore, it is strongly recommended that applications + pre-process .hdr images at latest at build time, as described here. + + \note In Qt 6, using a \uicontrol Texture component with \uicontrol Image > + \uicontrol Source is not supported in combination with this property. + Pre-filtering of all mip levels for dynamic Qt Quick content is typically not + reasonable in practice due to performance implications. In Qt 5, the + \uicontrol Image property is referred to as \uicontrol {Light probe}, which + defines a texture for overriding or setting an image based lighting texture + for use with the skybox of the scene. + + The \uicontrol Exposure property modifies the amount of light emitted by the + light probe. + + When defined with increasing values, the \uicontrol Horizon property adds + darkness (black) to the bottom half of the environment, thus forcing the + lighting to come predominantly from the top of the image (and removing + specific reflections from the lower half). This property is useful for + accounting for a ground plane that would have the effect of obscuring the + reflection of the light probe from the ground. This is necessary because + light probe contributions come directily from the image without consideration + for the content of the scene. You can set the value of the + \uicontrol Horizon property between 0.0 and 1.0. Using the default value of + the property applies the entire light probe without adjustment. + \note The \uicontrol Horizon property only affects materials lighting and + has no effect on the rendering of the sky box. + \note In Qt 5, the \uicontrol Horizon property is referred to as + \uicontrol {Probe horizon}. + + The \uicontrol Orientation property defines the orientation of the light + probe. Orientation is defined in terms of euler angles in degrees over the + x, y, and z axes. + + \section2 Additional Light Probe Properties in Qt 5 + + The \uicontrol {Probe Brightness} property modifies the amount of light + emitted by the light probe. + + When the \uicontrol {Fast IBL} (Fast image-based lighting) property is + enabled, more shortcuts are taken to approximate the light contribution of + the light probe at the expense of quality. + + The value of the \uicontrol {Probe FOV} property sets the angle of the + image source field of view when using a camera source as the IBL probe. */ diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 51c487a6355..97b4544a50d 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -195,6 +195,7 @@ class DumperBase(): self.qtCustomEventFunc = 0 self.qtCustomEventPltFunc = 0 self.qtPropertyFunc = 0 + self.fallbackQtVersion = 0x50200 self.passExceptions = False self.isTesting = False @@ -247,11 +248,14 @@ class DumperBase(): self.uninitialized = args.get('uninitialized', []) self.uninitialized = list(map(lambda x: self.hexdecode(x), self.uninitialized)) self.partialUpdate = int(args.get('partial', '0')) - self.fallbackQtVersion = 0x50200 #DumperBase.warn('NAMESPACE: "%s"' % self.qtNamespace()) #DumperBase.warn('EXPANDED INAMES: %s' % self.expandedINames) #DumperBase.warn('WATCHERS: %s' % self.watchers) + def setFallbackQtVersion(self, version): + self.warn("got fallback qt version %x" % version) + self.fallbackQtVersion = version + def resetPerStepCaches(self): self.perStepCache = {} pass diff --git a/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json b/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json index 7fbf2d858aa..51bdff39b61 100644 --- a/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json +++ b/share/qtcreator/qml-type-descriptions/qt5QtQuick2-bundle.json @@ -12,29 +12,59 @@ "Qt.labs.folderlistmodel 2.1", "Qt.labs.folderlistmodel 2.2", "Qt.labs.folderlistmodel 2.12", + "Qt.labs.folderlistmodel 2.13", + "Qt.labs.folderlistmodel 2.14", + "Qt.labs.folderlistmodel 2.15", "Qt.labs.settings 1.0", "Qt.labs.settings 1.1", "Qt.labs.platform 1.0", + "Qt.labs.platform 1.1", "Qt.WebSockets 1.0", "Qt.WebSockets 1.1", + "Qt.WebSockets 1.13", + "Qt.WebSockets 1.14", + "Qt.WebSockets 1.15", "Qt3D.Animation 2.9", "Qt3D.Animation 2.12", + "Qt3D.Animation 2.13", + "Qt3D.Animation 2.14", + "Qt3D.Animation 2.15", "Qt3D.Core 2.0", "Qt3D.Core 2.9", "Qt3D.Core 2.12", + "Qt3D.Core 2.13", + "Qt3D.Core 2.14", + "Qt3D.Core 2.15", "Qt3D.Extras 2.0", "Qt3D.Extras 2.9", "Qt3D.Extras 2.12", + "Qt3D.Extras 2.13", + "Qt3D.Extras 2.14", + "Qt3D.Extras 2.15", "Qt3D.Input 2.0", "Qt3D.Input 2.1", "Qt3D.Input 2.12", "Qt3D.Logic 2.0", "Qt3D.Logic 2.12", + "Qt3D.Logic 2.13", + "Qt3D.Logic 2.14", + "Qt3D.Logic 2.15", "Qt3D.Render 2.0", "Qt3D.Render 2.9", "Qt3D.Render 2.12", + "Qt3D.Render 2.13", + "Qt3D.Render 2.14", + "Qt3D.Render 2.15", "Qt3D.Scene2D 2.9", + "Qt3D.Scene2D 2.12", + "Qt3D.Scene2D 2.13", + "Qt3D.Scene2D 2.14", + "Qt3D.Scene2D 2.15", "QtAudioEngine 1.0", + "QtAudioEngine 1.1", + "QtAudioEngine 1.13", + "QtAudioEngine 1.14", + "QtAudioEngine 1.15", "QtBluetooth 5.0", "QtBluetooth 5.2", "QtBluetooth 5.3", @@ -46,12 +76,27 @@ "QtBluetooth 5.9", "QtBluetooth 5.11", "QtBluetooth 5.12", + "QtBluetooth 5.13", + "QtBluetooth 5.14", + "QtBluetooth 5.15", "QtCanvas3D 1.1", "QtCharts 2.3", + "QtCharts 2.13", + "QtCharts 2.14", + "QtCharts 2.15", "QtDataVisualization 1.0", "QtDataVisualization 1.3", + "QtDataVisualization 1.13", + "QtDataVisualization 1.14", + "QtDataVisualization 1.15", "QtGamepad 1.12", + "QtGamepad 1.13", + "QtGamepad 1.14", + "QtGamepad 1.15", "QtGraphicalEffects 1.0", + "QtGraphicalEffects 1.13", + "QtGraphicalEffects 1.14", + "QtGraphicalEffects 1.15", "QtMultimedia 5.0", "QtMultimedia 5.2", "QtMultimedia 5.3", @@ -62,6 +107,9 @@ "QtMultimedia 5.8", "QtMultimedia 5.9", "QtMultimedia 5.12", + "QtMultimedia 5.13", + "QtMultimedia 5.14", + "QtMultimedia 5.15", "QtNfc 5.0", "QtNfc 5.2", "QtNfc 5.3", @@ -73,6 +121,9 @@ "QtNfc 5.9", "QtNfc 5.11", "QtNfc 5.12", + "QtNfc 5.13", + "QtNfc 5.14", + "QtNfc 5.15", "QtPositioning 5.0", "QtPositioning 5.2", "QtPositioning 5.3", @@ -83,6 +134,9 @@ "QtPositioning 5.8", "QtPositioning 5.11", "QtPositioning 5.12", + "QtPositioning 5.13", + "QtPositioning 5.14", + "QtPositioning 5.15", "QtLocation 5.3", "QtLocation 5.5", "QtLocation 5.6", @@ -90,18 +144,30 @@ "QtLocation 5.9", "QtLocation 5.11", "QtLocation 5.12", + "QtLocation 5.13", + "QtLocation 5.14", + "QtLocation 5.15", "QtPurchasing 1.0", "QtPurchasing 1.12", + "QtPurchasing 1.13", + "QtPurchasing 1.14", + "QtPurchasing 1.15", "QtQml 2.0", "QtQml 2.1", "QtQml 2.2", "QtQml 2.3", "QtQml 2.12", + "QtQml 2.13", + "QtQml 2.14", + "QtQml 2.15", "QtQml.Models 2.1", "QtQml.Models 2.2", "QtQml.Models 2.3", "QtQml.Models 2.11", "QtQml.Models 2.12", + "QtQml.Models 2.13", + "QtQml.Models 2.14", + "QtQml.Models 2.15", "QtQuick.Controls 2.0", "QtQuick.Controls 2.1", "QtQuick.Controls 2.2", @@ -109,16 +175,25 @@ "QtQuick.Controls 2.4", "QtQuick.Controls 2.5", "QtQuick.Controls 2.12", + "QtQuick.Controls 2.13", + "QtQuick.Controls 2.14", + "QtQuick.Controls 2.15", "QtQuick.Controls.Material 2.0", "QtQuick.Controls.Material 2.1", "QtQuick.Controls.Material 2.2", "QtQuick.Controls.Material 2.3", "QtQuick.Controls.Material 2.12", + "QtQuick.Controls.Material 2.13", + "QtQuick.Controls.Material 2.14", + "QtQuick.Controls.Material 2.15", "QtQuick.Controls.Universal 2.0", "QtQuick.Controls.Universal 2.1", "QtQuick.Controls.Universal 2.2", "QtQuick.Controls.Universal 2.3", "QtQuick.Controls.Universal 2.12", + "QtQuick.Controls.Universal 2.13", + "QtQuick.Controls.Universal 2.14", + "QtQuick.Controls.Universal 2.15", "QtQuick.Controls.Styles 1.0", "QtQuick.Controls.Styles 1.1", "QtQuick.Controls.Styles 1.2", @@ -127,23 +202,41 @@ "QtQuick.Dialogs 1.0", "QtQuick.Dialogs 1.1", "QtQuick.Dialogs 1.2", + "QtQuick.Dialogs 1.3", "QtQuick.Enterprise.Controls 1.1", + "QtQuick.Enterprise.Controls 1.2", + "QtQuick.Enterprise.Controls 1.3", "QtQuick.Layouts 1.0", "QtQuick.Layouts 1.1", "QtQuick.Layouts 1.2", "QtQuick.Layouts 1.3", "QtQuick.Layouts 1.12", + "QtQuick.Layouts 1.13", + "QtQuick.Layouts 1.14", + "QtQuick.Layouts 1.15", "QtQuick.LocalStorage 2.0", "QtQuick.LocalStorage 2.11", "QtQuick.LocalStorage 2.12", + "QtQuick.LocalStorage 2.13", + "QtQuick.LocalStorage 2.14", + "QtQuick.LocalStorage 2.15", "QtQuick.Particles 2.0", "QtQuick.Particles 2.12", + "QtQuick.Particles 2.13", + "QtQuick.Particles 2.14", + "QtQuick.Particles 2.15", "QtQuick.Shapes 1.12", + "QtQuick.Shapes 1.13", + "QtQuick.Shapes 1.14", + "QtQuick.Shapes 1.15", "QtQuick.Templates 2.0", "QtQuick.Templates 2.1", "QtQuick.Templates 2.2", "QtQuick.Templates 2.5", "QtQuick.Templates 2.12", + "QtQuick.Templates 2.13", + "QtQuick.Templates 2.14", + "QtQuick.Templates 2.15", "QtQuick.Timeline 1.0", "QtQuick.Timeline 1.1", "QtQuick.Window 2.0", @@ -153,8 +246,14 @@ "QtQuick.Window 2.10", "QtQuick.Window 2.11", "QtQuick.Window 2.12", + "QtQuick.Window 2.13", + "QtQuick.Window 2.14", + "QtQuick.Window 2.15", "QtQuick.XmlListModel 2.0", "QtQuick.XmlListModel 2.12", + "QtQuick.XmlListModel 2.13", + "QtQuick.XmlListModel 2.14", + "QtQuick.XmlListModel 2.15", "QtRemoteObjects 5.12", "QtScxml 5.8", "QtSensors 5.0", @@ -169,6 +268,9 @@ "QtSensors 5.9", "QtSensors 5.11", "QtSensors 5.12", + "QtSensors 5.13", + "QtSensors 5.14", + "QtSensors 5.15", "QtQuick 2.0", "QtQuick 2.1", "QtQuick 2.2", @@ -182,12 +284,27 @@ "QtQuick 2.10", "QtQuick 2.11", "QtQuick 2.12", + "QtQuick 2.13", + "QtQuick 2.14", + "QtQuick 2.15", "QtTest 1.0", "QtTest 1.2", "QtTest 1.12", + "QtTest 1.13", + "QtTest 1.14", + "QtTest 1.15", "QtVirtualKeyboard.VirtualKeyboard 2.4", + "QtVirtualKeyboard.VirtualKeyboard 2.13", + "QtVirtualKeyboard.VirtualKeyboard 2.14", + "QtVirtualKeyboard.VirtualKeyboard 2.15", "QtVirtualKeyboard.Settings 2.2", + "QtVirtualKeyboard.Settings 2.13", + "QtVirtualKeyboard.Settings 2.14", + "QtVirtualKeyboard.Settings 2.15", "QtVirtualKeyboard.Styles 2.1", + "QtVirtualKeyboard.Styles 2.13", + "QtVirtualKeyboard.Styles 2.14", + "QtVirtualKeyboard.Styles 2.15", "QtScxml 5.8", "QtWebChannel 1.0", "QtWebEngine 1.0", @@ -199,11 +316,19 @@ "QtWebEngine 1.6", "QtWebEngine 1.7", "QtWebEngine 1.8", + "QtWebEngine 1.9", + "QtWebEngine 1.10", "QtWebSockets 1.1", + "QtWebSockets 1.13", + "QtWebSockets 1.14", + "QtWebSockets 1.15", "QtWebView 1.0", "QtWebView 1.1", "QtWebKit 3.0", - "QtWinExtras 1.0" + "QtWinExtras 1.0", + "QtWinExtras 1.13", + "QtWinExtras 1.14", + "QtWinExtras 1.15" ] } diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json index 2a72449b2c9..8e7fb78b819 100644 --- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json +++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/wizard.json @@ -3,7 +3,7 @@ "supportedProjectTypes": [ "MesonProjectManager.MesonProject","CMakeProjectManager.CMakeProject", "Qt4ProjectManager.Qt4Project", "Qbs.QbsProject" ], "id": "C.QtWidgets", "category": "D.ApplicationQt", - "trDescription": "Creates a Qt application for the desktop. Includes a Qt Designer-based main window.\n\nPreselects a desktop Qt for building the application if available.", + "trDescription": "Creates a widget-based Qt application that contains a Qt Designer-based main window.\n\nPreselects a desktop Qt for building the application if available.", "trDisplayName": "Qt Widgets Application", "trDisplayCategory": "Application (Qt)", "icon": "../../global/guiapplication.png", diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/default.png b/share/qtcreator/templates/wizards/qtquickstyleicons/default.png deleted file mode 100644 index fae98e3c53f..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/default.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/default@2x.png b/share/qtcreator/templates/wizards/qtquickstyleicons/default@2x.png deleted file mode 100644 index ed3199bfb4d..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/default@2x.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/material-dark.png b/share/qtcreator/templates/wizards/qtquickstyleicons/material-dark.png deleted file mode 100644 index bfea2f1fc15..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/material-dark.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/material-dark@2x.png b/share/qtcreator/templates/wizards/qtquickstyleicons/material-dark@2x.png deleted file mode 100644 index 11fcaccb2a7..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/material-dark@2x.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/material-light.png b/share/qtcreator/templates/wizards/qtquickstyleicons/material-light.png deleted file mode 100644 index e6f12fd3dad..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/material-light.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/material-light@2x.png b/share/qtcreator/templates/wizards/qtquickstyleicons/material-light@2x.png deleted file mode 100644 index a6727f70f6e..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/material-light@2x.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-dark.png b/share/qtcreator/templates/wizards/qtquickstyleicons/universal-dark.png deleted file mode 100644 index 3648eb3d6b5..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-dark.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-dark@2x.png b/share/qtcreator/templates/wizards/qtquickstyleicons/universal-dark@2x.png deleted file mode 100644 index 854f0d10408..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-dark@2x.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-light.png b/share/qtcreator/templates/wizards/qtquickstyleicons/universal-light.png deleted file mode 100644 index add8bf1d2f2..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-light.png and /dev/null differ diff --git a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-light@2x.png b/share/qtcreator/templates/wizards/qtquickstyleicons/universal-light@2x.png deleted file mode 100644 index 314a98117f0..00000000000 Binary files a/share/qtcreator/templates/wizards/qtquickstyleicons/universal-light@2x.png and /dev/null differ diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 065f96809e9..dadf791a61e 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1182,10 +1182,16 @@ QString FilePath::calcRelativePath(const QString &absolutePath, const QString &a */ FilePath FilePath::onDevice(const FilePath &deviceTemplate) const { + if (!deviceTemplate.needsDevice()) + return mapToGlobalPath(); + const bool sameDevice = m_scheme == deviceTemplate.m_scheme && m_host == deviceTemplate.m_host; + // TODO: converting paths between different non local devices is still unsupported + QTC_CHECK(!needsDevice() || sameDevice); FilePath res; - res.m_data = m_data; - res.m_host = deviceTemplate.m_host; res.m_scheme = deviceTemplate.m_scheme; + res.m_host = deviceTemplate.m_host; + res.m_data = m_data; + res.m_data = res.mapToDevicePath(); return res; } diff --git a/src/libs/utils/launcherinterface.cpp b/src/libs/utils/launcherinterface.cpp index a5609fd6e7c..74636a6640b 100644 --- a/src/libs/utils/launcherinterface.cpp +++ b/src/libs/utils/launcherinterface.cpp @@ -161,7 +161,7 @@ void LauncherInterfacePrivate::handleProcessError() const QString launcherPathForUser = QDir::toNativeSeparators(QDir::cleanPath(m_process->program())); emit errorOccurred(QCoreApplication::translate("Utils::LauncherSocket", - "Failed to start process launcher at '%1': %2") + "Failed to start process launcher at \"%1\": %2") .arg(launcherPathForUser, m_process->errorString())); } } diff --git a/src/libs/utils/launchersocket.cpp b/src/libs/utils/launchersocket.cpp index 0a932360b1c..28dfee23469 100644 --- a/src/libs/utils/launchersocket.cpp +++ b/src/libs/utils/launchersocket.cpp @@ -296,7 +296,7 @@ void CallerHandle::cancel() break; case QProcess::Starting: m_errorString = QCoreApplication::translate("Utils::LauncherHandle", - "Process canceled before it was started."); + "Process was canceled before it was started."); m_error = QProcess::FailedToStart; if (LauncherInterface::isReady()) // TODO: race condition with m_processState??? sendPacket(StopProcessPacket(m_token)); diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index 1b308039107..27000badf6e 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -320,7 +320,7 @@ QString AndroidAvdManager::findAvd(const QString &avdName) const { QVector devices = m_config.connectedDevices(); foreach (AndroidDeviceInfo device, devices) { - if (device.type != AndroidDeviceInfo::Emulator) + if (device.type != ProjectExplorer::IDevice::Emulator) continue; if (device.avdname == avdName) return device.serialNumber; diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 7bc1c6310d3..65f55080630 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -613,17 +613,18 @@ QVector AndroidConfig::connectedDevices(QString *error) const const QString deviceType = device.mid(device.indexOf('\t')).trimmed(); AndroidDeviceInfo dev; dev.serialNumber = serialNo; - dev.type = serialNo.startsWith(QLatin1String("emulator")) ? AndroidDeviceInfo::Emulator : AndroidDeviceInfo::Hardware; + dev.type = serialNo.startsWith(QLatin1String("emulator")) ? IDevice::Emulator + : IDevice::Hardware; dev.sdk = getSDKVersion(dev.serialNumber); dev.cpuAbi = getAbis(dev.serialNumber); if (deviceType == QLatin1String("unauthorized")) - dev.state = AndroidDeviceInfo::UnAuthorizedState; + dev.state = IDevice::DeviceConnected; else if (deviceType == QLatin1String("offline")) - dev.state = AndroidDeviceInfo::OfflineState; + dev.state = IDevice::DeviceDisconnected; else - dev.state = AndroidDeviceInfo::OkState; + dev.state = IDevice::DeviceReadyToUse; - if (dev.type == AndroidDeviceInfo::Emulator) { + if (dev.type == IDevice::Emulator) { dev.avdname = getAvdName(dev.serialNumber); if (dev.avdname.isEmpty()) dev.avdname = serialNo; diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index ea4ddbf8e16..de8a89e7f76 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -99,6 +99,12 @@ AndroidDeviceWidget::AndroidDeviceWidget(const IDevice::Ptr &device) const auto osString = QString("%1 (SDK %2)").arg(dev->androidVersion()).arg(dev->sdkLevel()); formLayout->addRow(AndroidDevice::tr("OS version:"), new QLabel(osString)); + if (dev->machineType() == IDevice::Hardware) { + const QString authorizedStr = dev->deviceState() == IDevice::DeviceReadyToUse ? tr("Yes") + : tr("No"); + formLayout->addRow(AndroidDevice::tr("Authorized:"), new QLabel(authorizedStr)); + } + if (dev->machineType() == IDevice::Emulator) { const QString targetName = dev->androidTargetName(); formLayout->addRow(AndroidDevice::tr("Android target flavor:"), new QLabel(targetName)); @@ -151,8 +157,9 @@ AndroidDevice::AndroidDevice() setOsType(Utils::OsTypeOtherUnix); setDeviceState(DeviceConnected); - addDeviceAction({tr("Refresh"), [](const IDevice::Ptr &, QWidget *) { - AndroidDeviceManager::instance()->updateDevicesListOnce(); + addDeviceAction({tr("Refresh"), [](const IDevice::Ptr &device, QWidget *parent) { + Q_UNUSED(parent) + AndroidDeviceManager::instance()->updateDeviceState(device); }}); addEmulatorActionsIfNotFound(); @@ -215,14 +222,7 @@ IDevice::Ptr AndroidDevice::create() AndroidDeviceInfo AndroidDevice::androidDeviceInfoFromIDevice(const IDevice *dev) { AndroidDeviceInfo info; - AndroidDeviceInfo::State state; - if (dev->deviceState() == IDevice::DeviceReadyToUse) - state = AndroidDeviceInfo::OkState; - else if (dev->deviceState() == IDevice::DeviceDisconnected) - state = AndroidDeviceInfo::OfflineState; - else if (dev->deviceState() == IDevice::DeviceConnected) - state = AndroidDeviceInfo::UnAuthorizedState; - info.state = state; + info.state = dev->deviceState(); info.avdname = dev->extraData(Constants::AndroidAvdName).toString(); info.serialNumber = dev->extraData(Constants::AndroidSerialNumber).toString(); info.cpuAbi = dev->extraData(Constants::AndroidCpuAbi).toStringList(); @@ -231,18 +231,13 @@ AndroidDeviceInfo AndroidDevice::androidDeviceInfoFromIDevice(const IDevice *dev info.avdSkin = dev->extraData(Constants::AndroidAvdSkin).toString(); info.avdSdcardSize = dev->extraData(Constants::AndroidAvdSdcard).toString(); info.sdk = dev->extraData(Constants::AndroidSdk).toInt(); - info.type = (dev->machineType() == ProjectExplorer::IDevice::Hardware - ? AndroidDeviceInfo::Hardware : AndroidDeviceInfo::Emulator); + info.type = dev->machineType(); return info; } void AndroidDevice::setAndroidDeviceInfoExtras(IDevice *dev, const AndroidDeviceInfo &info) { - dev->setMachineType(info.type == AndroidDeviceInfo::Hardware - ? ProjectExplorer::IDevice::Hardware - : ProjectExplorer::IDevice::Emulator); - dev->setDeviceState(deviceStateFromInfo(info.state)); dev->setExtraData(Constants::AndroidAvdName, info.avdname); dev->setExtraData(Constants::AndroidSerialNumber, info.serialNumber); dev->setExtraData(Constants::AndroidCpuAbi, info.cpuAbi); @@ -255,15 +250,14 @@ void AndroidDevice::setAndroidDeviceInfoExtras(IDevice *dev, const AndroidDevice QString AndroidDevice::displayNameFromInfo(const AndroidDeviceInfo &info) { - return info.type == AndroidDeviceInfo::Hardware + return info.type == IDevice::Hardware ? AndroidConfigurations::currentConfig().getProductModel(info.serialNumber) : info.avdname; } Utils::Id AndroidDevice::idFromDeviceInfo(const AndroidDeviceInfo &info) { - const QString id = (info.type == AndroidDeviceInfo::Hardware ? info.serialNumber - : info.avdname); + const QString id = (info.type == IDevice::Hardware ? info.serialNumber : info.avdname); return Utils::Id(Constants::ANDROID_DEVICE_ID).withSuffix(':' + id); } @@ -272,15 +266,6 @@ Utils::Id AndroidDevice::idFromAvdInfo(const CreateAvdInfo &info) return Utils::Id(Constants::ANDROID_DEVICE_ID).withSuffix(':' + info.name); } -IDevice::DeviceState AndroidDevice::deviceStateFromInfo(AndroidDeviceInfo::State state) -{ - if (state == AndroidDeviceInfo::OkState) - return IDevice::DeviceReadyToUse; - if (state == AndroidDeviceInfo::OfflineState) - return IDevice::DeviceDisconnected; - return IDevice::DeviceConnected; -} - QStringList AndroidDevice::supportedAbis() const { return extraData(Constants::AndroidCpuAbi).toStringList(); @@ -448,6 +433,28 @@ void AndroidDeviceManager::updateDevicesListOnce() } } +void AndroidDeviceManager::updateDeviceState(const ProjectExplorer::IDevice::Ptr &device) +{ + const AndroidDevice *dev = static_cast(device.data()); + const QString serial = dev->serialNumber(); + DeviceManager *const devMgr = DeviceManager::instance(); + const Utils::Id id = dev->id(); + if (serial.isEmpty() && dev->machineType() == IDevice::Emulator) { + devMgr->setDeviceState(id, IDevice::DeviceConnected); + return; + } + + const QStringList args = AndroidDeviceInfo::adbSelector(serial) << "shell" << "echo" << "1"; + const SdkToolResult result = AndroidManager::runAdbCommand(args); + const int success = result.success(); + if (success) + devMgr->setDeviceState(id, IDevice::DeviceReadyToUse); + else if (dev->machineType() == IDevice::Emulator || result.stdErr().contains("unauthorized")) + devMgr->setDeviceState(id, IDevice::DeviceConnected); + else + devMgr->setDeviceState(id, IDevice::DeviceDisconnected); +} + void AndroidDeviceManager::startAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent) { Q_UNUSED(parent) @@ -573,7 +580,7 @@ void AndroidDeviceManager::devicesListUpdated() if (dev->machineType() == IDevice::Emulator && !runningAvds.contains(displayName)) newState = IDevice::DeviceConnected; else - newState = AndroidDevice::deviceStateFromInfo(item.state); + newState = item.state; if (dev->deviceState() != newState) { qCDebug(androidDeviceLog, "Device id \"%s\" changed its state.", dev->id().toString().toUtf8().data()); @@ -591,6 +598,8 @@ void AndroidDeviceManager::devicesListUpdated() AndroidDevice *newDev = new AndroidDevice(); newDev->setupId(IDevice::AutoDetected, deviceId); newDev->setDisplayName(displayName); + newDev->setMachineType(item.type); + newDev->setDeviceState(item.state); AndroidDevice::setAndroidDeviceInfoExtras(newDev, item); qCDebug(androidDeviceLog, "Registering new Android device id \"%s\".", newDev->id().toString().toUtf8().data()); @@ -637,7 +646,7 @@ AndroidDeviceFactory::AndroidDeviceFactory() : ProjectExplorer::IDeviceFactory(Constants::ANDROID_DEVICE_TYPE), m_androidConfig(AndroidConfigurations::currentConfig()) { - setDisplayName(AndroidDevice::tr("Android Virtual Device")); + setDisplayName(AndroidDevice::tr("Android Device")); setCombinedIcon(":/android/images/androiddevicesmall.png", ":/android/images/androiddevice.png"); setConstructionFunction(&AndroidDevice::create); diff --git a/src/plugins/android/androiddevice.h b/src/plugins/android/androiddevice.h index 31249e84808..e99d8bd4cec 100644 --- a/src/plugins/android/androiddevice.h +++ b/src/plugins/android/androiddevice.h @@ -55,7 +55,6 @@ public: static QString displayNameFromInfo(const AndroidDeviceInfo &info); static Utils::Id idFromDeviceInfo(const AndroidDeviceInfo &info); static Utils::Id idFromAvdInfo(const CreateAvdInfo &info); - static IDevice::DeviceState deviceStateFromInfo(AndroidDeviceInfo::State state); QStringList supportedAbis() const; bool canSupportAbis(const QStringList &abis) const; @@ -101,6 +100,7 @@ public: void setupDevicesWatcher(); void updateDevicesList(); void updateDevicesListOnce(); + void updateDeviceState(const ProjectExplorer::IDevice::Ptr &device); void startAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent = nullptr); void eraseAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent = nullptr); diff --git a/src/plugins/android/androiddeviceinfo.cpp b/src/plugins/android/androiddeviceinfo.cpp index 817f64a362e..752a710c14d 100644 --- a/src/plugins/android/androiddeviceinfo.cpp +++ b/src/plugins/android/androiddeviceinfo.cpp @@ -43,7 +43,7 @@ bool AndroidDeviceInfo::operator<(const AndroidDeviceInfo &other) const if (serialNumber.contains("????") != other.serialNumber.contains("????")) return !serialNumber.contains("????"); if (type != other.type) - return type == AndroidDeviceInfo::Hardware; + return type == ProjectExplorer::IDevice::Hardware; if (sdk != other.sdk) return sdk < other.sdk; if (avdname != other.avdname) @@ -57,15 +57,15 @@ bool AndroidDeviceInfo::operator==(const AndroidDeviceInfo &other) const return serialNumber == other.serialNumber && avdname == other.avdname && cpuAbi == other.cpuAbi && avdTarget == other.avdTarget && avdDevice == other.avdDevice && avdSkin == other.avdSkin && avdSdcardSize == other.avdSdcardSize && sdk == other.sdk - && state == other.state && unauthorized == other.unauthorized && type == other.type; + && state == other.state && type == other.type; } QDebug &operator<<(QDebug &stream, const AndroidDeviceInfo &device) { - stream << "Type:" << (device.type == AndroidDeviceInfo::Emulator ? "Emulator" : "Device") + stream << "Type:" << (device.type == ProjectExplorer::IDevice::Emulator ? "Emulator" : "Device") << ", ABI:" << device.cpuAbi << ", Serial:" << device.serialNumber << ", Name:" << device.avdname << ", API:" << device.sdk - << ", Authorised:" << !device.unauthorized; + << ", Authorised:" << (device.state == IDevice::DeviceReadyToUse); return stream; } diff --git a/src/plugins/android/androiddeviceinfo.h b/src/plugins/android/androiddeviceinfo.h index 9c8e6c30ea1..b43cbc63426 100644 --- a/src/plugins/android/androiddeviceinfo.h +++ b/src/plugins/android/androiddeviceinfo.h @@ -30,6 +30,10 @@ #include #include +#include + +using namespace ProjectExplorer; + namespace Android { class AndroidDeviceInfo @@ -42,13 +46,9 @@ public: QString avdDevice; QString avdSkin; QString avdSdcardSize; - int sdk = -1; - enum State { OkState, UnAuthorizedState, OfflineState }; - State state = OfflineState; - bool unauthorized = false; - enum AndroidDeviceType { Hardware, Emulator }; - AndroidDeviceType type = Emulator; + IDevice::DeviceState state = IDevice::DeviceDisconnected; + IDevice::MachineType type = IDevice::Emulator; static QStringList adbSelector(const QString &serialNumber); diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index e8944fba17f..16ff0dc5139 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -268,7 +268,20 @@ FilePath AndroidManager::buildDirectory(const Target *target) { if (const BuildSystem *bs = target->buildSystem()) { const QString buildKey = target->activeBuildKey(); - const FilePath buildDir = bs->buildTarget(target->activeBuildKey()).workingDirectory; + + // Get the target build dir based on the settings file path + FilePath buildDir; + const ProjectNode *node = target->project()->findNodeForBuildKey(buildKey); + if (node) { + const QString settingsFile = node->data(Constants::AndroidDeploySettingsFile).toString(); + buildDir = FilePath::fromUserInput(settingsFile).parentDir(); + } + + if (!buildDir.isEmpty()) + return buildDir; + + // Otherwise fallback to target working dir + buildDir = bs->buildTarget(target->activeBuildKey()).workingDirectory; if (isQt5CmakeProject(target)) { // Return the main build dir and not the android libs dir const QString libsDir = QString(Constants::ANDROID_BUILD_DIRECTORY) + "/libs"; @@ -558,7 +571,7 @@ void AndroidManager::installQASIPackage(Target *target, const FilePath &packageP return; QString deviceSerialNumber = info.serialNumber; - if (info.type == AndroidDeviceInfo::Emulator) { + if (info.type == IDevice::Emulator) { deviceSerialNumber = AndroidAvdManager().startAvd(info.avdname); if (deviceSerialNumber.isEmpty()) Core::MessageManager::writeDisrupting(tr("Starting Android virtual device failed.")); diff --git a/src/plugins/android/androidpackageinstallationstep.cpp b/src/plugins/android/androidpackageinstallationstep.cpp index e1eb82e0ccc..17e641443ae 100644 --- a/src/plugins/android/androidpackageinstallationstep.cpp +++ b/src/plugins/android/androidpackageinstallationstep.cpp @@ -67,10 +67,6 @@ public: AndroidPackageInstallationStep(BuildStepList *bsl, Id id); QString nativeAndroidBuildPath() const; - - Utils::FilePath androidBuildDirectory() const; - Utils::FilePath buildDirectory() const; - private: bool init() final; void setupOutputFormatter(OutputFormatter *formatter) final; @@ -108,7 +104,7 @@ bool AndroidPackageInstallationStep::init() processParameters()->setCommandLine(cmd); // This is useful when running an example target from a Qt module project. - processParameters()->setWorkingDirectory(buildDirectory()); + processParameters()->setWorkingDirectory(AndroidManager::buildDirectory(target())); m_androidDirsToClean.clear(); // don't remove gradle's cache, it takes ages to rebuild it. @@ -120,7 +116,7 @@ bool AndroidPackageInstallationStep::init() QString AndroidPackageInstallationStep::nativeAndroidBuildPath() const { - QString buildPath = androidBuildDirectory().toString(); + QString buildPath = AndroidManager::androidBuildDirectory(target()).toString(); if (HostOsInfo::isWindowsHost()) if (buildEnvironment().searchInPath("sh.exe").isEmpty()) buildPath = QDir::toNativeSeparators(buildPath); @@ -128,18 +124,6 @@ QString AndroidPackageInstallationStep::nativeAndroidBuildPath() const return buildPath; } -FilePath AndroidPackageInstallationStep::androidBuildDirectory() const -{ - return buildDirectory() / Constants::ANDROID_BUILD_DIRECTORY; -} - -FilePath AndroidPackageInstallationStep::buildDirectory() const -{ - if (const BuildSystem *bs = buildSystem()) - return bs->buildTarget(target()->activeBuildKey()).workingDirectory; - return {}; -} - void AndroidPackageInstallationStep::setupOutputFormatter(OutputFormatter *formatter) { formatter->addLineParser(new GnuMakeParser); diff --git a/src/plugins/android/androidsdkmanagerwidget.cpp b/src/plugins/android/androidsdkmanagerwidget.cpp index 0fe8b83d31d..96824298eed 100644 --- a/src/plugins/android/androidsdkmanagerwidget.cpp +++ b/src/plugins/android/androidsdkmanagerwidget.cpp @@ -168,7 +168,7 @@ void AndroidSdkManagerWidget::installEssentials() if (!m_sdkModel->missingEssentials().isEmpty()) { QMessageBox::warning(this, tr("Android SDK Changes"), - tr("%1 couldn't find the following essential packages: \"%2\".\n" + tr("%1 cannot find the following essential packages: \"%2\".\n" "Install them manually after the current operation is done.\n") .arg(Core::Constants::IDE_DISPLAY_NAME) .arg(m_sdkModel->missingEssentials().join("\", \""))); @@ -277,7 +277,7 @@ void AndroidSdkManagerWidget::onLicenseCheckResult(const AndroidSdkManager::Oper } else { // Assertion was found. Provide user workflow to accept licenses. QString warningMessage = tr("Review Android SDK package licenses that have not been " - "accepted?\nPlease note that the installation and use of " + "accepted?\nNote that the installation and use of " "Android SDK packages may fail if respective licenses are not " "accepted."); int userSelection = QMessageBox::question(this, tr("Android SDK Licenses"), warningMessage, diff --git a/src/plugins/android/avdmanageroutputparser.cpp b/src/plugins/android/avdmanageroutputparser.cpp index ac758f41c7c..2cb8a9ac0b1 100644 --- a/src/plugins/android/avdmanageroutputparser.cpp +++ b/src/plugins/android/avdmanageroutputparser.cpp @@ -134,10 +134,10 @@ AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorP } } else if (Utils::optional avd = parseAvd(avdInfo)) { // armeabi-v7a devices can also run armeabi code - if (avd->cpuAbi.contains(ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)) - avd->cpuAbi << ProjectExplorer::Constants::ANDROID_ABI_ARMEABI; - avd->state = AndroidDeviceInfo::OkState; - avd->type = AndroidDeviceInfo::Emulator; + if (avd->cpuAbi.contains(Constants::ANDROID_ABI_ARMEABI_V7A)) + avd->cpuAbi << Constants::ANDROID_ABI_ARMEABI; + avd->state = IDevice::DeviceConnected; + avd->type = IDevice::Emulator; return AvdResult(*avd); } else { qCDebug(avdOutputParserLog) << "Avd Parsing: Parsing failed: " << avdInfo; diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 2b6044f3ac3..c65d8ee95c9 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -997,7 +997,8 @@ public: HelpItem::Category category = HelpItem::Unknown, const QString &type = {}); - void handleSemanticTokens(TextDocument *doc, const QList &tokens); + void handleSemanticTokens(TextDocument *doc, const QList &tokens, + int version); enum class AstCallbackMode { SyncIfPossible, AlwaysAsync }; using TextDocOrFile = const Utils::variant; @@ -1177,8 +1178,9 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir) const auto hideDiagsHandler = []{ ClangDiagnosticManager::clearTaskHubIssues(); }; setDiagnosticsHandlers(textMarkCreator, hideDiagsHandler); setSymbolStringifier(displayNameFromDocumentSymbol); - setSemanticTokensHandler([this](TextDocument *doc, const QList &tokens) { - d->handleSemanticTokens(doc, tokens); + setSemanticTokensHandler([this](TextDocument *doc, const QList &tokens, + int version) { + d->handleSemanticTokens(doc, tokens, version); }); hoverHandler()->setHelpItemProvider([this](const HoverRequest::Response &response, const DocumentUri &uri) { @@ -2454,18 +2456,29 @@ static void semanticHighlighter(QFutureInterface &future, // Sometimes we have no choice, as for #include directives, which appear neither // in the semantic tokens nor in the AST. void ClangdClient::Private::handleSemanticTokens(TextDocument *doc, - const QList &tokens) + const QList &tokens, + int version) { SubtaskTimer t(highlightingTimer); - qCDebug(clangdLog()) << "handling LSP tokens" << doc->filePath() << tokens.size(); + qCDebug(clangdLog) << "handling LSP tokens" << doc->filePath() << tokens.size(); + if (version != q->documentVersion(doc->filePath())) { + qCDebug(clangdLogHighlight) << "LSP tokens outdated; aborting highlighting procedure" + << version << q->documentVersion(doc->filePath()); + return; + } for (const ExpandedSemanticToken &t : tokens) qCDebug(clangdLogHighlight()) << '\t' << t.line << t.column << t.length << t.type << t.modifiers; - const auto astHandler = [this, tokens, doc](const AstNode &ast, const MessageId &) { + const auto astHandler = [this, tokens, doc, version](const AstNode &ast, const MessageId &) { FinalizingSubtaskTimer t(highlightingTimer); if (!q->documentOpen(doc)) return; + if (version != q->documentVersion(doc->filePath())) { + qCDebug(clangdLogHighlight) << "AST not up to date; aborting highlighting procedure" + << version << q->documentVersion(doc->filePath()); + return; + } if (clangdLogAst().isDebugEnabled()) ast.print(); diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 94a44085056..2461120d9af 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -37,6 +37,8 @@ #include #include +#include + #include #include #include @@ -271,10 +273,7 @@ void ClangEditorDocumentProcessor::updateHighlighting( emit ifdefedOutBlocksUpdated(documentRevision, skippedPreprocessorBlocks); m_semanticHighlighter.setHighlightingRunner( - [tokenInfos]() { - auto *reporter = new HighlightingResultReporter(tokenInfos); - return reporter->start(); - }); + [tokenInfos]() { return highlightResults(tokenInfos); }); m_semanticHighlighter.run(); } } diff --git a/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp b/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp index 03070208ee8..149fb30c8b7 100644 --- a/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp +++ b/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp @@ -25,12 +25,13 @@ #include "clanghighlightingresultreporter.h" +#include #include +#include #include +#include #include -#include - namespace { TextEditor::TextStyle toTextStyle(ClangBackEnd::HighlightingType type) @@ -161,78 +162,62 @@ TextEditor::HighlightingResult toHighlightingResult( return result; } -} // anonymous - -namespace ClangCodeModel { -namespace Internal { - -HighlightingResultReporter::HighlightingResultReporter( - const QVector &tokenInfos) - : m_tokenInfos(tokenInfos) +void highlightResultsImpl(QFutureInterface &fi, + const QVector &tokenInfos, + int chunkSize) { - m_chunksToReport.reserve(m_chunkSize + 1); -} - -void HighlightingResultReporter::reportChunkWise( - const TextEditor::HighlightingResult &highlightingResult) -{ - if (m_chunksToReport.size() >= m_chunkSize) { - if (m_flushRequested && highlightingResult.line != m_flushLine) { - reportAndClearCurrentChunks(); - } else if (!m_flushRequested) { - m_flushRequested = true; - m_flushLine = highlightingResult.line; - } - } - - m_chunksToReport.append(highlightingResult); -} - -void HighlightingResultReporter::reportAndClearCurrentChunks() -{ - m_flushRequested = false; - m_flushLine = 0; - - if (!m_chunksToReport.isEmpty()) { - reportResults(m_chunksToReport); - m_chunksToReport.erase(m_chunksToReport.begin(), m_chunksToReport.end()); - } -} - -void HighlightingResultReporter::setChunkSize(int chunkSize) -{ - m_chunkSize = chunkSize; -} - -void HighlightingResultReporter::run() -{ - run_internal(); - reportFinished(); -} - -void HighlightingResultReporter::run_internal() -{ - if (isCanceled()) + if (fi.isCanceled()) return; - using ClangBackEnd::HighlightingType; + QVector chunksToReport; + chunksToReport.reserve(chunkSize + 1); - for (const auto &tokenInfo : qAsConst(m_tokenInfos)) + using ClangBackEnd::HighlightingType; + bool flushRequested = false; + int flushLine = 0; + + auto reportAndClearCurrentChunks = [&] { + flushRequested = false; + flushLine = 0; + + if (!chunksToReport.isEmpty()) { + fi.reportResults(chunksToReport); + chunksToReport.erase(chunksToReport.begin(), chunksToReport.end()); + } + }; + + auto reportChunkWise = [&](const TextEditor::HighlightingResult &highlightingResult) { + if (chunksToReport.size() >= chunkSize) { + if (flushRequested && highlightingResult.line != flushLine) { + reportAndClearCurrentChunks(); + } else if (!flushRequested) { + flushRequested = true; + flushLine = highlightingResult.line; + } + } + + chunksToReport.append(highlightingResult); + }; + + for (const auto &tokenInfo : tokenInfos) reportChunkWise(toHighlightingResult(tokenInfo)); - if (isCanceled()) + if (fi.isCanceled()) return; reportAndClearCurrentChunks(); } -QFuture HighlightingResultReporter::start() +} // anonymous + +namespace ClangCodeModel { +namespace Internal { + +QFuture highlightResults( + const QVector &tokenInfos, + int chunkSize) { - this->setRunnable(this); - this->reportStarted(); - QFuture future = this->future(); - QThreadPool::globalInstance()->start(this, QThread::LowestPriority); - return future; + return Utils::runAsync(highlightResultsImpl, tokenInfos, chunkSize); } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clanghighlightingresultreporter.h b/src/plugins/clangcodemodel/clanghighlightingresultreporter.h index b3755fd264c..4999a7d77f1 100644 --- a/src/plugins/clangcodemodel/clanghighlightingresultreporter.h +++ b/src/plugins/clangcodemodel/clanghighlightingresultreporter.h @@ -25,48 +25,18 @@ #pragma once -#include -#include -#include -#include +#include +#include -#include - -#include +namespace TextEditor { class HighlightingResult; } +namespace ClangBackEnd { class TokenInfoContainer; } namespace ClangCodeModel { namespace Internal { -class HighlightingResultReporter: - public QObject, - public QRunnable, - public QFutureInterface -{ - Q_OBJECT - -public: - HighlightingResultReporter(const QVector &tokenInfos); - - void setChunkSize(int chunkSize); - - QFuture start(); - -private: - void run() override; - void run_internal(); - - void reportChunkWise(const TextEditor::HighlightingResult &highlightingResult); - void reportAndClearCurrentChunks(); - -private: - QVector m_tokenInfos; - QVector m_chunksToReport; - - int m_chunkSize = 100; - - bool m_flushRequested = false; - int m_flushLine = 0; -}; +QFuture highlightResults( + const QVector &tokenInfos, + int chunkSize = 100); } // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index d1c6b0d0ce3..c06d8a8fff7 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -134,6 +134,12 @@ ClangModelManagerSupport::ClangModelManagerSupport() this, &ClangModelManagerSupport::onProjectPartsUpdated); connect(modelManager, &CppEditor::CppModelManager::projectPartsRemoved, this, &ClangModelManagerSupport::onProjectPartsRemoved); + connect(modelManager, &CppModelManager::fallbackProjectPartUpdated, this, [this] { + if (ClangdClient * const fallbackClient = clientForProject(nullptr)) { + LanguageClientManager::shutdownClient(fallbackClient); + claimNonProjectSources(createClient(nullptr, {})); + } + }); auto *sessionManager = ProjectExplorer::SessionManager::instance(); connect(sessionManager, &ProjectExplorer::SessionManager::projectAdded, diff --git a/src/plugins/clangtools/clangfixitsrefactoringchanges.cpp b/src/plugins/clangtools/clangfixitsrefactoringchanges.cpp index e622567dde7..5aaedbf9daa 100644 --- a/src/plugins/clangtools/clangfixitsrefactoringchanges.cpp +++ b/src/plugins/clangtools/clangfixitsrefactoringchanges.cpp @@ -36,11 +36,11 @@ #include #include -#include #include #include #include +#include #include #include @@ -81,39 +81,43 @@ bool FixitsRefactoringFile::apply() ICodeStylePreferencesFactory *factory = TextEditorSettings::codeStyleFactory( CppEditor::Constants::CPP_SETTINGS_ID); - // Apply changes - std::unique_ptr indenter; - QString lastFilename; - ReplacementOperations operationsForFile; + QHash> operationsByFile; - for (int i=0; i < m_replacementOperations.size(); ++i) { + for (int i = 0; i < m_replacementOperations.size(); ++i) { ReplacementOperation &op = *m_replacementOperations[i]; - if (op.apply) { - // Check for permissions - if (!QFileInfo(op.fileName).isWritable()) - return false; // Error file not writable + if (!op.apply) + continue; - qCDebug(fixitsLog) << " " << i << "Applying" << op; + const FilePath filePath = FilePath::fromString(op.fileName); - // Shift subsequent operations that are affected - shiftAffectedReplacements(op, i + 1); + // Check for permissions + if (!filePath.isWritableFile()) + return false; - // Apply - QTextDocument *doc = document(op.fileName); - if (lastFilename != op.fileName) { - if (indenter) - format(*indenter, doc, operationsForFile, i); - operationsForFile.clear(); - indenter = std::unique_ptr(factory->createIndenter(doc)); - indenter->setFileName(Utils::FilePath::fromString(op.fileName)); - } + qCDebug(fixitsLog) << " " << i << "Applying" << op; - QTextCursor cursor(doc); - cursor.setPosition(op.pos); - cursor.setPosition(op.pos + op.length, QTextCursor::KeepAnchor); - cursor.insertText(op.text); - operationsForFile.push_back(&op); - } + // Shift subsequent operations that are affected + shiftAffectedReplacements(op, i + 1); + + // Apply + QTextDocument * const doc = document(op.fileName); + QTextCursor cursor(doc); + cursor.setPosition(op.pos); + cursor.setPosition(op.pos + op.length, QTextCursor::KeepAnchor); + cursor.insertText(op.text); + auto &opsForFile = operationsByFile[filePath]; + opsForFile.first.push_back(&op); + opsForFile.second = i; + } + + // Format + for (auto it = operationsByFile.cbegin(); it != operationsByFile.cend(); ++it) { + QTextDocument * const doc = document(it.key().toString()); + const std::unique_ptr indenter(factory->createIndenter(doc)); + if (!indenter) + continue; + indenter->setFileName(it.key()); + format(*indenter, doc, it.value().first, it.value().second); } // Write file diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index 0656dbd8783..8b1c4c85612 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -437,17 +437,14 @@ CompilationDatabaseProject::CompilationDatabaseProject(const Utils::FilePath &pr Utils::FilePath CompilationDatabaseProject::rootPathFromSettings() const { -#ifdef WITH_TESTS - return Utils::FilePath::fromString(projectDirectory().fileName()); -#else - auto rootPath = Utils::FilePath::fromString( + Utils::FilePath rootPath; +#ifndef WITH_TESTS + rootPath = Utils::FilePath::fromString( namedSettings(ProjectExplorer::Constants::PROJECT_ROOT_PATH_KEY).toString()); - - if (rootPath.isEmpty()) - rootPath = Utils::FilePath::fromString(projectDirectory().fileName()); - - return rootPath; #endif + if (rootPath.isEmpty()) + rootPath = projectDirectory(); + return rootPath; } void CompilationDatabaseProject::configureAsExampleProject(Kit *kit) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp index fba6ca246b9..37216a48878 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp @@ -138,9 +138,9 @@ void CompilationDbParser::stop() QList CompilationDbParser::scannedFiles() const { + const bool canceled = m_treeScanner->future().isCanceled(); const TreeScanner::Result result = m_treeScanner->release(); - return m_treeScanner && !m_treeScanner->future().isCanceled() ? result.allFiles - : QList(); + return !canceled ? result.allFiles : QList(); } void CompilationDbParser::parserJobFinished() diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp index 4ddd690b42a..b87e1098da1 100644 --- a/src/plugins/cppeditor/cppmodelmanager.cpp +++ b/src/plugins/cppeditor/cppmodelmanager.cpp @@ -196,6 +196,7 @@ public: bool m_enableGC; QTimer m_delayedGcTimer; + QTimer m_fallbackProjectPartTimer; // Refactoring using REHash = QMap; @@ -692,12 +693,16 @@ CppModelManager::CppModelManager() connect(Core::ICore::instance(), &Core::ICore::coreAboutToClose, this, &CppModelManager::onCoreAboutToClose); - connect(KitManager::instance(), &KitManager::kitsChanged, this, - &CppModelManager::setupFallbackProjectPart); - connect(this, &CppModelManager::projectPartsRemoved, this, - &CppModelManager::setupFallbackProjectPart); - connect(this, &CppModelManager::projectPartsUpdated, this, - &CppModelManager::setupFallbackProjectPart); + d->m_fallbackProjectPartTimer.setSingleShot(true); + d->m_fallbackProjectPartTimer.setInterval(5000); + connect(&d->m_fallbackProjectPartTimer, &QTimer::timeout, + this, &CppModelManager::setupFallbackProjectPart); + connect(KitManager::instance(), &KitManager::kitsChanged, + &d->m_fallbackProjectPartTimer, qOverload<>(&QTimer::start)); + connect(this, &CppModelManager::projectPartsRemoved, + &d->m_fallbackProjectPartTimer, qOverload<>(&QTimer::start)); + connect(this, &CppModelManager::projectPartsUpdated, + &d->m_fallbackProjectPartTimer, qOverload<>(&QTimer::start)); setupFallbackProjectPart(); qRegisterMetaType("CPlusPlus::Document::Ptr"); @@ -1581,8 +1586,11 @@ void CppModelManager::setupFallbackProjectPart() } const auto part = ProjectPart::create({}, rpp, {}, {}, {}, langExtensions, {}, tcInfo); - QMutexLocker locker(&d->m_fallbackProjectPartMutex); - d->m_fallbackProjectPart = part; + { + QMutexLocker locker(&d->m_fallbackProjectPartMutex); + d->m_fallbackProjectPart = part; + } + emit fallbackProjectPartUpdated(); } void CppModelManager::GC() diff --git a/src/plugins/cppeditor/cppmodelmanager.h b/src/plugins/cppeditor/cppmodelmanager.h index 3a05368e15a..e6dc746a1f1 100644 --- a/src/plugins/cppeditor/cppmodelmanager.h +++ b/src/plugins/cppeditor/cppmodelmanager.h @@ -263,6 +263,7 @@ signals: const QString &sourcePath, const QByteArray &contents); void abstractEditorSupportRemoved(const QString &filePath); + void fallbackProjectPartUpdated(); public slots: void updateModifiedSourceFiles(); diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index 95b2441e68e..7cfe3206915 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -3236,6 +3236,8 @@ void QuickfixTest::testGenerateGetterSetterOnlySetter() QList testDocuments; QByteArray original; QByteArray expected; + QuickFixSettings s; + s->setterAsSlot = true; // To be ignored, as we don't have QObjects here. // Header File original = @@ -3263,7 +3265,6 @@ void QuickfixTest::testGenerateGetterSetterOnlySetter() "}\n"; testDocuments << CppTestDocument::create("file.cpp", original, expected); - QuickFixSettings s; s->setterInCppFileFrom = 1; s->setterParameterNameTemplate = "value"; @@ -3547,10 +3548,12 @@ void QuickfixTest::testInsertQtPropertyMembers_data() QTest::addColumn("expected"); QTest::newRow("InsertQtPropertyMembers") - << _("struct XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "struct XmarksTheSpot : public QObject {\n" " @Q_PROPERTY(int it READ getIt WRITE setIt RESET resetIt NOTIFY itChanged)\n" "};\n") - << _("struct XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "struct XmarksTheSpot : public QObject {\n" " Q_PROPERTY(int it READ getIt WRITE setIt RESET resetIt NOTIFY itChanged)\n" "\n" "public:\n" @@ -3582,10 +3585,12 @@ void QuickfixTest::testInsertQtPropertyMembers_data() "}\n"); QTest::newRow("InsertQtPropertyMembersResetWithoutSet") - << _("struct XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "struct XmarksTheSpot : public QObject {\n" " @Q_PROPERTY(int it READ getIt RESET resetIt NOTIFY itChanged)\n" "};\n") - << _("struct XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "struct XmarksTheSpot : public QObject {\n" " Q_PROPERTY(int it READ getIt RESET resetIt NOTIFY itChanged)\n" "\n" "public:\n" @@ -3615,10 +3620,12 @@ void QuickfixTest::testInsertQtPropertyMembers_data() "}\n"); QTest::newRow("InsertQtPropertyMembersResetWithoutSetAndNotify") - << _("struct XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "struct XmarksTheSpot : public QObject {\n" " @Q_PROPERTY(int it READ getIt RESET resetIt)\n" "};\n") - << _("struct XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "struct XmarksTheSpot : public QObject {\n" " Q_PROPERTY(int it READ getIt RESET resetIt)\n" "\n" "public:\n" @@ -3642,13 +3649,15 @@ void QuickfixTest::testInsertQtPropertyMembers_data() "}\n"); QTest::newRow("InsertQtPropertyMembersPrivateBeforePublic") - << _("class XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "class XmarksTheSpot : public QObject {\n" "private:\n" " @Q_PROPERTY(int it READ getIt WRITE setIt NOTIFY itChanged)\n" "public:\n" " void find();\n" "};\n") - << _("class XmarksTheSpot {\n" + << _("struct QObject { void connect(); }\n" + "class XmarksTheSpot : public QObject {\n" "private:\n" " Q_PROPERTY(int it READ getIt WRITE setIt NOTIFY itChanged)\n" " int m_it;\n" diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 91974761c28..6f5d9d07d17 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -3971,9 +3971,20 @@ void GetterSetterRefactoringHelper::performGeneration(ExistingGetterSetterData d } // setter declaration - const InsertionPointLocator::AccessSpec setterAccessSpec = m_settings->setterAsSlot - ? InsertionPointLocator::PublicSlot - : InsertionPointLocator::Public; + InsertionPointLocator::AccessSpec setterAccessSpec = InsertionPointLocator::Public; + if (m_settings->setterAsSlot) { + const QByteArray connectName = "connect"; + const Identifier connectId(connectName.data(), connectName.size()); + const QList items = m_operation->context().lookup(&connectId, data.clazz); + for (const LookupItem &item : items) { + if (item.declaration() && item.declaration()->enclosingClass() + && overview.prettyName(item.declaration()->enclosingClass()->name()) + == "QObject") { + setterAccessSpec = InsertionPointLocator::PublicSlot; + break; + } + } + } const auto createSetterBodyWithSignal = [this, &getSetTemplate, &data] { QString body; QTextStream setter(&body); diff --git a/src/plugins/cppeditor/semantichighlighter.cpp b/src/plugins/cppeditor/semantichighlighter.cpp index eb6e90fb2b9..6a02566981a 100644 --- a/src/plugins/cppeditor/semantichighlighter.cpp +++ b/src/plugins/cppeditor/semantichighlighter.cpp @@ -225,7 +225,7 @@ void SemanticHighlighter::onHighlighterResultAvailable(int from, int to) } else if (result.kind == DoubleAngleBracketClose) { Parenthesis extraParen = {Parenthesis::Closed, '>', result.column - 1}; extraParen.source = parenSource(); - parentheses.second.append(extraParen); + insertSorted(parentheses.second, extraParen); paren = {Parenthesis::Closed, '>', result.column}; } else if (result.kind == TernaryIf) { paren = {Parenthesis::Opened, '?', result.column - 1}; diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 23e0e2208ea..58d0ef0b050 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -2753,7 +2753,7 @@ void CdbEngine::setupScripting(const DebuggerResponse &response) return; } - QString dumperPath = Core::ICore::resourcePath("debugger").toUserOutput(); + QString dumperPath = runParameters().dumperPath.toUserOutput(); dumperPath.replace('\\', "\\\\"); runCommand({"sys.path.insert(1, '" + dumperPath + "')", ScriptCommand}); runCommand({"from cdbbridge import Dumper", ScriptCommand}); @@ -2772,6 +2772,8 @@ void CdbEngine::setupScripting(const DebuggerResponse &response) runCommand({command, ScriptCommand}); } + const QString qtVersion = QString::number(runParameters().fallbackQtVersion, 16); + runCommand({"theDumper.setFallbackQtVersion(0x" + qtVersion + ")", ScriptCommand}); runCommand({"theDumper.loadDumpers(None)", ScriptCommand, [this](const DebuggerResponse &response) { watchHandler()->addDumpers(response.data["result"]["dumpers"]); diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 87d52ad74b1..f2dd9f09a00 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1056,6 +1056,8 @@ void DebuggerEngine::setRunTool(DebuggerRunTool *runTool) d->m_device = runControl->device(); if (!d->m_device) d->m_device = d->m_runParameters.inferior.device; + if (d->m_device) + d->m_runParameters.dumperPath = d->m_device->debugDumperPath(); d->m_terminalRunner = runTool->terminalRunner(); validateRunParameters(d->m_runParameters); diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 2099bc2f959..810e00448a6 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -203,6 +203,9 @@ public: int testCase = 0; QStringList validationErrors; + + Utils::FilePath dumperPath; + int fallbackQtVersion = 0x50200; }; class UpdateParameters diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 8b92c7d31dc..daa8749e021 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -538,7 +538,7 @@ void DebuggerRunTool::start() default: if (!m_runParameters.isQmlDebugging) { reportFailure(noEngineMessage() + '\n' + - DebuggerPlugin::tr("Please select a Debugger Setting from the Run page of the project mode.")); + DebuggerPlugin::tr("Specify Debugger settings in Projects > Run.")); return; } // Can happen for pure Qml. @@ -946,6 +946,14 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, AllowTerminal allowTerm m_engine = createPdbEngine(); } } + + m_runParameters.dumperPath = Core::ICore::resourcePath("debugger/"); + if (QtSupport::BaseQtVersion *baseQtVersion = QtSupport::QtKitAspect::qtVersion(kit)) { + QtSupport::QtVersionNumber qtVersion = baseQtVersion->qtVersion(); + m_runParameters.fallbackQtVersion = 0x10000 * int(qtVersion.majorVersion) + + 0x100 * int(qtVersion.minorVersion) + + int(qtVersion.patchVersion); + } } void DebuggerRunTool::startRunControl() diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2251f4d9e6b..90740c5b2f2 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3989,7 +3989,6 @@ void GdbEngine::setupEngine() // We need to guarantee a roundtrip before the adapter proceeds. // Make sure this stays the last command in startGdb(). // Don't use ConsoleCommand, otherwise Mac won't markup the output. - const QString dumperSourcePath = ICore::resourcePath("debugger/").toString(); //if (terminal()->isUsable()) // runCommand({"set inferior-tty " + QString::fromUtf8(terminal()->slaveDevice())}); @@ -3997,7 +3996,7 @@ void GdbEngine::setupEngine() const QString uninstalledData = rp.debugger.command.executable().pathAppended("data-directory/python").path(); - runCommand({"python sys.path.insert(1, '" + dumperSourcePath + "')"}); + runCommand({"python sys.path.insert(1, '" + rp.dumperPath.path() + "')"}); runCommand({"python sys.path.append('" + uninstalledData + "')"}); runCommand({"python from gdbbridge import *"}); @@ -4012,6 +4011,7 @@ void GdbEngine::setupEngine() if (!commands.isEmpty()) runCommand({commands}); + runCommand({"setFallbackQtVersion(0x" + QString::number(rp.fallbackQtVersion, 16) + ")"}); runCommand({"loadDumpers", CB(handlePythonSetup)}); // Reload peripheral register description. diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 26816ce5469..200579b6dd5 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -237,9 +237,9 @@ void LldbEngine::setupEngine() showStatusMessage(tr("Setting up inferior...")); - const QByteArray dumperSourcePath = ICore::resourcePath("debugger/").toString().toLocal8Bit(); + const DebuggerRunParameters &rp = runParameters(); - executeCommand("script sys.path.insert(1, '" + dumperSourcePath + "')"); + executeCommand("script sys.path.insert(1, '" + rp.dumperPath.path().toLocal8Bit() + "')"); // This triggers reportState("enginesetupok") or "enginesetupfailed": executeCommand("script from lldbbridge import *"); @@ -262,14 +262,16 @@ void LldbEngine::setupEngine() runCommand(cmd); } + DebuggerCommand cmd0("setFallbackQtVersion"); + cmd0.arg("version", "0x" + QString::number(rp.fallbackQtVersion, 16)); + runCommand(cmd0); + DebuggerCommand cmd1("loadDumpers"); cmd1.callback = [this](const DebuggerResponse &response) { watchHandler()->addDumpers(response.data["dumpers"]); }; runCommand(cmd1); - const DebuggerRunParameters &rp = runParameters(); - const SourcePathMap sourcePathMap = mergePlatformQtPath(rp, debuggerSettings()->sourcePathMap.value()); for (auto it = sourcePathMap.constBegin(), cend = sourcePathMap.constEnd(); diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 4461c7a1e86..10df7546ff2 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -147,7 +147,10 @@ void DockerDeviceProcess::start(const Runnable &runnable) disconnect(&m_process); - m_process.setCommand(runnable.command); + CommandLine command = runnable.command; + command.setExecutable( + command.executable().withNewPath(dockerDevice->mapToDevicePath(command.executable()))); + m_process.setCommand(command); m_process.setEnvironment(runnable.environment); m_process.setWorkingDirectory(runnable.workingDirectory); connect(&m_process, &QtcProcess::errorOccurred, this, &DeviceProcess::error); @@ -158,7 +161,7 @@ void DockerDeviceProcess::start(const Runnable &runnable) this, &DeviceProcess::readyReadStandardError); connect(&m_process, &QtcProcess::started, this, &DeviceProcess::started); - LOG("Running process:" << runnable.command.toUserOutput() + LOG("Running process:" << command.toUserOutput() << "in" << runnable.workingDirectory.toUserOutput()); dockerDevice->runProcess(m_process); } @@ -353,7 +356,7 @@ public: DockerDeviceData &data = dockerDevice->data(); - auto idLabel = new QLabel(tr("Image Id:")); + auto idLabel = new QLabel(tr("Image ID:")); m_idLineEdit = new QLineEdit; m_idLineEdit->setText(data.imageId); m_idLineEdit->setEnabled(false); @@ -365,8 +368,8 @@ public: auto daemonStateLabel = new QLabel(tr("Daemon state:")); m_daemonReset = new QToolButton; - m_daemonReset->setToolTip(tr("Clear detected daemon state. " - "It will be automatically re-evaluated next time an access is needed.")); + m_daemonReset->setToolTip(tr("Clears detected daemon state. " + "It will be automatically re-evaluated next time access is needed.")); m_daemonState = new QLabel; updateDaemonStateTexts(); @@ -377,7 +380,7 @@ public: }); m_runAsOutsideUser = new QCheckBox(tr("Run as outside user")); - m_runAsOutsideUser->setToolTip(tr("Use user ID and group ID of the user running Qt Creator " + m_runAsOutsideUser->setToolTip(tr("Uses user ID and group ID of the user running Qt Creator " "in the Docker container.")); m_runAsOutsideUser->setChecked(data.useLocalUidGid); m_runAsOutsideUser->setEnabled(HostOsInfo::isLinuxHost()); @@ -387,7 +390,7 @@ public: }); m_usePathMapping = new QCheckBox(tr("Use local file path mapping")); - m_usePathMapping->setToolTip(tr("Map docker filesystem to a local directory.")); + m_usePathMapping->setToolTip(tr("Maps docker filesystem to a local directory.")); m_usePathMapping->setChecked(data.useFilePathMapping); m_usePathMapping->setEnabled(HostOsInfo::isLinuxHost()); connect(m_usePathMapping, &QCheckBox::toggled, this, [&, dockerDevice](bool on) { @@ -396,7 +399,7 @@ public: }); m_pathsListEdit = new PathListEditor; - m_pathsListEdit->setToolTip(tr("Paths in this list will be mapped one-to-one into the " + m_pathsListEdit->setToolTip(tr("Maps paths in this list one-to-one to the " "Docker container.")); m_pathsListEdit->setPathList(data.mounts); @@ -836,6 +839,9 @@ void DockerDevicePrivate::startContainer() mount = q->mapToDevicePath(FilePath::fromUserInput(mount)); dockerCreate.addArgs({"-v", mount + ':' + mount}); } + FilePath dumperPath = FilePath::fromString("/tmp/qtcreator/debugger"); + dockerCreate.addArgs({"-v", q->debugDumperPath().toUserOutput() + ':' + dumperPath.path()}); + q->setDebugDumperPath(dumperPath); dockerCreate.addArgs({"--entrypoint", "/bin/sh", m_data.imageId}); @@ -925,8 +931,8 @@ void DockerDevicePrivate::tryCreateLocalFileAccess() MessageManager::writeFlashing( tr("Local read access to Docker container %1 unavailable through directory \"%2\".") .arg(m_container, m_mergedDir) - + '\n' + tr("Output: '%1'").arg(out) - + '\n' + tr("Error: '%1'").arg(proc.stdErr())); + + '\n' + tr("Output: \"%1\"").arg(out) + + '\n' + tr("Error: \"%1\"").arg(proc.stdErr())); if (HostOsInfo::isWindowsHost()) { // Disabling merged layer access. This is not supported and anything // related to accessing merged layers on Windows fails due to the need diff --git a/src/plugins/help/textbrowserhelpviewer.cpp b/src/plugins/help/textbrowserhelpviewer.cpp index fd6c36c4d4a..6447190ca96 100644 --- a/src/plugins/help/textbrowserhelpviewer.cpp +++ b/src/plugins/help/textbrowserhelpviewer.cpp @@ -372,6 +372,7 @@ void TextBrowserHelpWidget::wheelEvent(QWheelEvent *e) // view in a broken way. We handle it properly through the sequence: // HelpViewer::wheelEvent() -> LocalHelpManager::setFontZoom() -> // HelpViewer::setFontZoom() -> TextBrowserHelpViewer::setFontAndScale(). + e->ignore(); return; } } diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp index 24fb346ff0b..a1b43729d4a 100644 --- a/src/plugins/languageclient/semantichighlightsupport.cpp +++ b/src/plugins/languageclient/semantichighlightsupport.cpp @@ -192,8 +192,9 @@ void SemanticTokenSupport::reloadSemanticTokens(TextDocument *textDocument) return; const Utils::FilePath filePath = textDocument->filePath(); const TextDocumentIdentifier docId(DocumentUri::fromFilePath(filePath)); - auto responseCallback = [this, filePath](const SemanticTokensFullRequest::Response &response){ - handleSemanticTokens(filePath, response.result().value_or(nullptr)); + auto responseCallback = [this, filePath, documentVersion = m_client->documentVersion(filePath)]( + const SemanticTokensFullRequest::Response &response) { + handleSemanticTokens(filePath, response.result().value_or(nullptr), documentVersion); }; /*if (supportedRequests.testFlag(SemanticRequestType::Range)) { const int start = widget->firstVisibleBlockNumber(); @@ -223,15 +224,18 @@ void SemanticTokenSupport::updateSemanticTokens(TextDocument *textDocument) const SemanticRequestTypes supportedRequests = supportedSemanticRequests(textDocument); if (supportedRequests.testFlag(SemanticRequestType::FullDelta)) { const Utils::FilePath filePath = textDocument->filePath(); - const QString &previousResultId = m_tokens.value(filePath).resultId().value_or(QString()); + const QString &previousResultId = m_tokens.value(filePath).tokens.resultId().value_or(QString()); if (!previousResultId.isEmpty()) { SemanticTokensDeltaParams params; params.setTextDocument(TextDocumentIdentifier(DocumentUri::fromFilePath(filePath))); params.setPreviousResultId(previousResultId); SemanticTokensFullDeltaRequest request(params); request.setResponseCallback( - [this, filePath](const SemanticTokensFullDeltaRequest::Response &response) { - handleSemanticTokensDelta(filePath, response.result().value_or(nullptr)); + [this, filePath, documentVersion = m_client->documentVersion(filePath)]( + const SemanticTokensFullDeltaRequest::Response &response) { + handleSemanticTokensDelta(filePath, + response.result().value_or(nullptr), + documentVersion); }); m_client->sendContent(request); return; @@ -369,10 +373,11 @@ SemanticRequestTypes SemanticTokenSupport::supportedSemanticRequests(TextDocumen } void SemanticTokenSupport::handleSemanticTokens(const Utils::FilePath &filePath, - const SemanticTokensResult &result) + const SemanticTokensResult &result, + int documentVersion) { if (auto tokens = Utils::get_if(&result)) { - m_tokens[filePath] = *tokens; + m_tokens[filePath] = {*tokens, documentVersion}; highlight(filePath); } else { m_tokens.remove(filePath); @@ -380,11 +385,14 @@ void SemanticTokenSupport::handleSemanticTokens(const Utils::FilePath &filePath, } void SemanticTokenSupport::handleSemanticTokensDelta( - const Utils::FilePath &filePath, const LanguageServerProtocol::SemanticTokensDeltaResult &result) + const Utils::FilePath &filePath, + const LanguageServerProtocol::SemanticTokensDeltaResult &result, + int documentVersion) { if (auto tokens = Utils::get_if(&result)) { - m_tokens[filePath] = *tokens; + m_tokens[filePath] = {*tokens, documentVersion}; } else if (auto tokensDelta = Utils::get_if(&result)) { + m_tokens[filePath].version = documentVersion; QList edits = tokensDelta->edits(); if (edits.isEmpty()) { highlight(filePath); @@ -393,7 +401,7 @@ void SemanticTokenSupport::handleSemanticTokensDelta( Utils::sort(edits, &SemanticTokensEdit::start); - SemanticTokens &tokens = m_tokens[filePath]; + SemanticTokens &tokens = m_tokens[filePath].tokens; const QList &data = tokens.data(); int newDataSize = data.size(); @@ -443,8 +451,9 @@ void SemanticTokenSupport::highlight(const Utils::FilePath &filePath) SyntaxHighlighter *highlighter = doc->syntaxHighlighter(); if (!highlighter) return; - const QList tokens = m_tokens.value(filePath).toTokens(m_tokenTypes, - m_tokenModifiers); + const VersionedTokens versionedTokens = m_tokens.value(filePath); + const QList tokens = versionedTokens.tokens + .toTokens(m_tokenTypes, m_tokenModifiers); if (m_tokensHandler) { int line = 1; int column = 1; @@ -469,7 +478,7 @@ void SemanticTokenSupport::highlight(const Utils::FilePath &filePath) expandedToken.length = token.length; expandedTokens << expandedToken; }; - m_tokensHandler(doc, expandedTokens); + m_tokensHandler(doc, expandedTokens, versionedTokens.version); return; } int line = 1; diff --git a/src/plugins/languageclient/semantichighlightsupport.h b/src/plugins/languageclient/semantichighlightsupport.h index 03fc2445fa1..1a90101b3e8 100644 --- a/src/plugins/languageclient/semantichighlightsupport.h +++ b/src/plugins/languageclient/semantichighlightsupport.h @@ -48,8 +48,8 @@ public: QString type; QStringList modifiers; }; -using SemanticTokensHandler = std::function &)>; +using SemanticTokensHandler = std::function &, int)>; namespace SemanticHighligtingSupport { @@ -86,16 +86,23 @@ private: LanguageServerProtocol::SemanticRequestTypes supportedSemanticRequests( TextEditor::TextDocument *document) const; void handleSemanticTokens(const Utils::FilePath &filePath, - const LanguageServerProtocol::SemanticTokensResult &result); + const LanguageServerProtocol::SemanticTokensResult &result, + int documentVersion); void handleSemanticTokensDelta(const Utils::FilePath &filePath, - const LanguageServerProtocol::SemanticTokensDeltaResult &result); + const LanguageServerProtocol::SemanticTokensDeltaResult &result, + int documentVersion); void highlight(const Utils::FilePath &filePath); void updateFormatHash(); void currentEditorChanged(); Client *m_client = nullptr; - QHash m_tokens; + struct VersionedTokens + { + LanguageServerProtocol::SemanticTokens tokens; + int version; + }; + QHash m_tokens; QList m_tokenTypes; QList m_tokenModifiers; QHash m_formatHash; diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index a30f02bea4b..7a68c276c3d 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -253,9 +253,8 @@ FilePath BuildConfiguration::buildDirectory() const path = path.cleanPath(); const FilePath projectDir = target()->project()->projectDirectory(); - const FilePath buildDir = projectDir.resolvePath(path); - return mapFromBuildDeviceToGlobalPath(buildDir); + return projectDir.resolvePath(path); } FilePath BuildConfiguration::rawBuildDirectory() const diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp index f1bedcc4416..746890a6cae 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp @@ -33,6 +33,7 @@ #include "../kitinformation.h" #include "../runconfiguration.h" +#include #include #include #include @@ -153,6 +154,7 @@ public: QSsh::SshConnectionParameters sshParameters; PortList freePorts; FilePath debugServerPath; + FilePath debugDumperPath = Core::ICore::resourcePath("debugger/"); FilePath qmlRunCommand; bool emptyCommandAllowed = false; @@ -763,6 +765,16 @@ void IDevice::setDebugServerPath(const FilePath &path) d->debugServerPath = path; } +FilePath IDevice::debugDumperPath() const +{ + return d->debugDumperPath; +} + +void IDevice::setDebugDumperPath(const Utils::FilePath &path) +{ + d->debugDumperPath = path; +} + FilePath IDevice::qmlRunCommand() const { return d->qmlRunCommand; diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h index 56bdbb5bd28..978c08a25a6 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.h +++ b/src/plugins/projectexplorer/devicesupport/idevice.h @@ -217,6 +217,9 @@ public: Utils::FilePath debugServerPath() const; void setDebugServerPath(const Utils::FilePath &path); + Utils::FilePath debugDumperPath() const; + void setDebugDumperPath(const Utils::FilePath &path); + Utils::FilePath qmlRunCommand() const; void setQmlRunCommand(const Utils::FilePath &path); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp index e9cba27c293..3963b4b71f6 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp @@ -270,7 +270,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsIconList() QJsonObject{ {"trKey", "item no1"}, {"condition", true}, - {"icon", iconInsideResource("templates/wizards/qtquickstyleicons/default.png")} + {"icon", iconInsideResource("templates/wizards/global/lib.png")} }, QJsonObject{ {"trKey", "item no2"}, @@ -282,7 +282,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsIconList() {"trKey", "item no3"}, {"condition", true}, {"trToolTip", "MyToolTip"}, - {"icon", iconInsideResource("templates/wizards/qtquickstyleicons/default.png")} + {"icon", iconInsideResource("templates/wizards/global/lib.png")} } }); diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index dbd060cfe8d..af4a900946d 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -502,11 +502,13 @@ void ToolChainKitAspect::setup(Kit *k) [abi, l](const ToolChain *t) { return t->targetAbi().toString() == abi && t->language() == l; }); - Utils::sort(possibleTcs, [](const ToolChain *tc1, const ToolChain *tc2) { - return tc1->hostPrefersToolchain() && !tc2->hostPrefersToolchain(); - }); - if (!possibleTcs.isEmpty()) - setToolChain(k, possibleTcs.first()); + ToolChain *bestTc = nullptr; + for (ToolChain *tc : possibleTcs) { + if (!bestTc || tc->priority() > bestTc->priority()) + bestTc = tc; + } + if (bestTc) + setToolChain(k, bestTc); else clearToolChain(k, l); } diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 691bb82eed4..ca93d5582b7 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -67,7 +68,7 @@ static const char varsBatKeyC[] = KEY_ROOT "VarsBat"; static const char varsBatArgKeyC[] = KEY_ROOT "VarsBatArg"; static const char environModsKeyC[] = KEY_ROOT "environmentModifications"; -enum { debug = 0 }; +static Q_LOGGING_CATEGORY(Log, "qtc.projectexplorer.toolchain.msvc", QtWarningMsg); namespace ProjectExplorer { namespace Internal { @@ -754,16 +755,6 @@ void MsvcToolChain::environmentModifications( outEnv.set(envIter.key(), expandedValue); } - if (debug) { - const QStringList newVars = outEnv.toStringList(); - const QStringList oldVars = inEnv.toStringList(); - QDebug nsp = qDebug().nospace(); - foreach (const QString &n, newVars) { - if (!oldVars.contains(n)) - nsp << n << '\n'; - } - } - diff = inEnv.diff(outEnv, true); for (int i = diff.size() - 1; i >= 0; --i) { if (diff.at(i).name.startsWith(QLatin1Char('='))) { // Exclude "=C:", "=EXITCODE" @@ -794,9 +785,16 @@ void MsvcToolChain::updateEnvironmentModifications(Utils::EnvironmentItems modif { Utils::EnvironmentItem::sort(&modifications); if (modifications != m_environmentModifications) { + if (Log().isDebugEnabled()) { + qCDebug(Log) << "Update environment for " << displayName(); + for (const EnvironmentItem &item : qAsConst(modifications)) + qCDebug(Log) << '\t' << item; + } m_environmentModifications = modifications; rescanForCompiler(); toolChainUpdated(); + } else { + qCDebug(Log) << "No updates for " << displayName(); } } @@ -1138,8 +1136,7 @@ void MsvcToolChain::addToEnvironment(Utils::Environment &env) const { // We cache the full environment (incoming + modifications by setup script). if (!m_resultEnvironment.size() || env != m_lastEnvironment) { - if (debug) - qDebug() << "addToEnvironment: " << displayName(); + qCDebug(Log) << "addToEnvironment: " << displayName(); m_lastEnvironment = env; m_resultEnvironment = readEnvironmentSetting(env); } @@ -1749,6 +1746,11 @@ bool ClangClToolChain::operator==(const ToolChain &other) const return m_clangPath == clangClTc->m_clangPath; } +int ClangClToolChain::priority() const +{ + return MsvcToolChain::priority() - 1; +} + Macros ClangClToolChain::msvcPredefinedMacros(const QStringList &cxxflags, const Utils::Environment &env) const { @@ -2053,6 +2055,11 @@ bool MsvcToolChain::operator==(const ToolChain &other) const && m_varsBatArg == msvcTc->m_varsBatArg; } +int MsvcToolChain::priority() const +{ + return hostPrefersToolchain() ? PriorityHigh : PriorityNormal; +} + void MsvcToolChain::cancelMsvcToolChainDetection() { envModThreadPool()->clear(); @@ -2103,8 +2110,7 @@ Utils::optional MsvcToolChain::generateEnvironmentSettings(const Utils: cmdPath = env.searchInPath(QLatin1String("cmd.exe")); // Windows SDK setup scripts require command line switches for environment expansion. CommandLine cmd(cmdPath, {"/E:ON", "/V:ON", "/c", saver.filePath().toUserOutput()}); - if (debug) - qDebug() << "readEnvironmentSetting: " << call << cmd.toUserOutput() + qCDebug(Log) << "readEnvironmentSetting: " << call << cmd.toUserOutput() << " Env: " << runEnv.size(); run.setCodec(QTextCodec::codecForName("UTF-8")); run.setCommand(cmd); diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 2e42a163da5..34894d78397 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -98,6 +98,8 @@ public: bool isJobCountSupported() const override { return false; } + int priority() const override; + static void cancelMsvcToolChainDetection(); static Utils::optional generateEnvironmentSettings(const Utils::Environment &env, const QString &batchFile, @@ -187,6 +189,8 @@ public: bool operator==(const ToolChain &) const override; + int priority() const override; + private: QString m_clangPath; }; diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index 72c1b388bb9..b305bf00551 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -172,6 +172,14 @@ public: static Utils::LanguageVersion cxxLanguageVersion(const QByteArray &cplusplusMacroValue); static Utils::LanguageVersion languageVersion(const Utils::Id &language, const Macros ¯os); + enum Priority { + PriorityLow = 0, + PriorityNormal = 10, + PriorityHigh = 20, + }; + + virtual int priority() const { return PriorityNormal; } + protected: explicit ToolChain(Utils::Id typeId); diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index fc92b2e83b8..d0f3687d51e 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -417,10 +417,7 @@ void ToolChainOptionsWidget::redetectToolchains() if (knownTcs.contains(tc) || toDelete.contains(tc)) continue; const auto matchItem = [tc](const ToolChainTreeItem *item) { - return item->toolChain->compilerCommand() == tc->compilerCommand() - && item->toolChain->typeId() == tc->typeId() - && item->toolChain->language() == tc->language() - && item->toolChain->targetAbi() == tc->targetAbi(); + return *item->toolChain == *tc; }; ToolChainTreeItem * const item = findOrDefault(itemsToRemove, matchItem); if (item) { diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index b9c048764ed..95b634a8f36 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -1194,7 +1194,7 @@ QmakeProFile::~QmakeProFile() void QmakeProFile::setupFutureWatcher() { - m_parseFutureWatcher = new QFutureWatcher; + m_parseFutureWatcher = new QFutureWatcher; QObject::connect(m_parseFutureWatcher, &QFutureWatcherBase::finished, [this]() { applyAsyncEvaluate(true); }); @@ -1292,10 +1292,10 @@ void QmakeProFile::asyncUpdate() m_readerExact->setExact(false); m_parseFutureWatcher->waitForFinished(); QmakeEvalInput input = evalInput(); - QFuture future = Utils::runAsync(ProjectExplorerPlugin::sharedThreadPool(), - QThread::LowestPriority, - &QmakeProFile::asyncEvaluate, - this, input); + QFuture future = Utils::runAsync(ProjectExplorerPlugin::sharedThreadPool(), + QThread::LowestPriority, + &QmakeProFile::asyncEvaluate, + this, input); m_parseFutureWatcher->setFuture(future); } @@ -1375,9 +1375,9 @@ static bool evaluateOne(const QmakeEvalInput &input, ProFile *pro, return true; } -QmakeEvalResult *QmakeProFile::evaluate(const QmakeEvalInput &input) +QmakeEvalResultPtr QmakeProFile::evaluate(const QmakeEvalInput &input) { - auto *result = new QmakeEvalResult; + QmakeEvalResultPtr result(new QmakeEvalResult); QtSupport::ProFileReader *exactBuildPassReader = nullptr; QtSupport::ProFileReader *cumulativeBuildPassReader = nullptr; ProFile *pro; @@ -1635,10 +1635,9 @@ QmakeEvalResult *QmakeProFile::evaluate(const QmakeEvalInput &input) return result; } -void QmakeProFile::asyncEvaluate(QFutureInterface &fi, QmakeEvalInput input) +void QmakeProFile::asyncEvaluate(QFutureInterface &fi, QmakeEvalInput input) { - QmakeEvalResult *evalResult = evaluate(input); - fi.reportResult(evalResult); + fi.reportResult(evaluate(input)); } void QmakeProFile::applyAsyncEvaluate(bool apply) @@ -1653,9 +1652,8 @@ bool sortByParserNodes(Node *a, Node *b) return a->filePath() < b->filePath(); } -void QmakeProFile::applyEvaluate(QmakeEvalResult *evalResult) +void QmakeProFile::applyEvaluate(const QmakeEvalResultPtr &result) { - QScopedPointer result(evalResult); if (!m_readerExact) return; @@ -1664,7 +1662,7 @@ void QmakeProFile::applyEvaluate(QmakeEvalResult *evalResult) return; } - foreach (const QString &error, evalResult->errors) + foreach (const QString &error, result->errors) QmakeBuildSystem::proFileParseError(error, filePath()); // we are changing what is executed in that case diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h index 9a4a22690e2..a894a11cc4c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h @@ -116,6 +116,7 @@ namespace Internal { Q_DECLARE_LOGGING_CATEGORY(qmakeNodesLog) class QmakeEvalInput; class QmakeEvalResult; +using QmakeEvalResultPtr = std::shared_ptr; // FIXME: Use unique_ptr once we require Qt 6 class QmakePriFileEvalResult; } // namespace Internal; @@ -358,10 +359,11 @@ private: void setupReader(); Internal::QmakeEvalInput evalInput() const; - static Internal::QmakeEvalResult *evaluate(const Internal::QmakeEvalInput &input); - void applyEvaluate(Internal::QmakeEvalResult *parseResult); + static Internal::QmakeEvalResultPtr evaluate(const Internal::QmakeEvalInput &input); + void applyEvaluate(const Internal::QmakeEvalResultPtr &parseResult); - void asyncEvaluate(QFutureInterface &fi, Internal::QmakeEvalInput input); + void asyncEvaluate(QFutureInterface &fi, + Internal::QmakeEvalInput input); void cleanupProFileReaders(); void updateGeneratedFiles(const Utils::FilePath &buildDir); @@ -400,7 +402,7 @@ private: QMap m_wildcardDirectoryContents; // Async stuff - QFutureWatcher *m_parseFutureWatcher = nullptr; + QFutureWatcher *m_parseFutureWatcher = nullptr; QtSupport::ProFileReader *m_readerExact = nullptr; QtSupport::ProFileReader *m_readerCumulative = nullptr; }; diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index 002c49f7fc0..79935c1c00a 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -240,7 +240,7 @@ void QtKitAspect::fix(Kit *k) return true; if (!tc1ExactMatch && tc2ExactMatch) return false; - return tc1->hostPrefersToolchain() && !tc2->hostPrefersToolchain(); + return tc1->priority() > tc2->priority(); }); const QList goodTcs = Utils::filtered(possibleTcs, diff --git a/src/plugins/qtsupport/screenshotcropper.cpp b/src/plugins/qtsupport/screenshotcropper.cpp index 4595e411434..4997be926f0 100644 --- a/src/plugins/qtsupport/screenshotcropper.cpp +++ b/src/plugins/qtsupport/screenshotcropper.cpp @@ -82,17 +82,20 @@ QImage ScreenshotCropper::croppedImage(const QImage &sourceImage, const QString { const QRect areaOfInterest = welcomeScreenAreas()->areas.value(fileNameForPath(filePath)); + QImage result; if (areaOfInterest.isValid()) { const QRect cropRect = cropRectForAreaOfInterest(sourceImage.size(), cropSize, areaOfInterest); const QSize cropRectSize = cropRect.size(); - const QImage result = sourceImage.copy(cropRect); - if (cropRectSize.width() > cropSize.width() || cropRectSize.height() > cropSize.height()) - return result.scaled(cropSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - else + result = sourceImage.copy(cropRect); + if (cropRectSize.width() <= cropSize.width() && cropRectSize.height() <= cropSize.height()) return result; + } else { + result = sourceImage; } - return sourceImage.scaled(cropSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (result.format() != QImage::Format_ARGB32) + result = result.convertToFormat(QImage::Format_ARGB32); + return result.scaled(cropSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); } static int areaAttribute(const QXmlStreamAttributes &attributes, const QString &name) diff --git a/src/tools/clangbackend/source/tokeninfo.cpp b/src/tools/clangbackend/source/tokeninfo.cpp index e8ece9c06de..1535eb2cc24 100644 --- a/src/tools/clangbackend/source/tokeninfo.cpp +++ b/src/tools/clangbackend/source/tokeninfo.cpp @@ -607,7 +607,11 @@ void TokenInfo::punctuationOrOperatorKind() && m_types.mixinHighlightingTypes.empty() && kind != CXCursor_OverloadedDeclRef && kind != CXCursor_InclusionDirective - && kind != CXCursor_PreprocessingDirective) { + && kind != CXCursor_PreprocessingDirective + && kind != CXCursor_MacroDefinition + && kind != CXCursor_DeclStmt + && kind != CXCursor_CompoundStmt + && kind != CXCursor_FirstInvalid) { const ClangString spelling = m_token->spelling(); if (spelling == "<") m_types.mixinHighlightingTypes.push_back(HighlightingType::AngleBracketOpen); diff --git a/src/tools/iconlister/iconlister.cpp b/src/tools/iconlister/iconlister.cpp index a0283bacb2b..8a896647f64 100644 --- a/src/tools/iconlister/iconlister.cpp +++ b/src/tools/iconlister/iconlister.cpp @@ -1081,16 +1081,6 @@ void IconLister::addWizardIcons() ""}, {QIcon(wizardsPath + "projects/vcs/subversion/icon.png"), "subversion_vcs", prefix, ""}, - {QIcon(wizardsPath + "qtquickstyleicons/default.png"), "default_qtquickstyle", prefix, - ""}, - {QIcon(wizardsPath + "qtquickstyleicons/material-dark.png"), "material-dark_qtquickstyle", prefix, - ""}, - {QIcon(wizardsPath + "qtquickstyleicons/material-light.png"), "material-light_qtquickstyle", prefix, - ""}, - {QIcon(wizardsPath + "qtquickstyleicons/universal-dark.png"), "universal-dark_qtquickstyle", prefix, - ""}, - {QIcon(wizardsPath + "qtquickstyleicons/universal-light.png"), "universal-light_qtquickstyle", prefix, - ""}, }; m_icons.append(icons); } diff --git a/tests/auto/android/tst_avdmanageroutputparser.cpp b/tests/auto/android/tst_avdmanageroutputparser.cpp index 004ec1b6a61..ca3dcda19c5 100644 --- a/tests/auto/android/tst_avdmanageroutputparser.cpp +++ b/tests/auto/android/tst_avdmanageroutputparser.cpp @@ -63,9 +63,8 @@ void tst_AvdManagerOutputParser::parse_data() "", "512 MB", -1, - AndroidDeviceInfo::OkState, - false, - AndroidDeviceInfo::Emulator}}) + IDevice::DeviceConnected, + IDevice::Emulator}}) << QStringList(); QTest::newRow("two") << "Available Android Virtual Devices:\n" @@ -90,9 +89,8 @@ void tst_AvdManagerOutputParser::parse_data() "", "512 MB", -1, - AndroidDeviceInfo::OkState, - false, - AndroidDeviceInfo::Emulator}, + IDevice::DeviceConnected, + IDevice::Emulator}, {"", "TestTablet", {"x86"}, @@ -101,9 +99,8 @@ void tst_AvdManagerOutputParser::parse_data() "", "256 MB", -1, - AndroidDeviceInfo::OkState, - false, - AndroidDeviceInfo::Emulator}}) + IDevice::DeviceConnected, + IDevice::Emulator}}) << QStringList(); } diff --git a/tests/unit/unittest/data/highlightingmarks.cpp b/tests/unit/unittest/data/highlightingmarks.cpp index 7631534d35f..57f4586daba 100644 --- a/tests/unit/unittest/data/highlightingmarks.cpp +++ b/tests/unit/unittest/data/highlightingmarks.cpp @@ -794,3 +794,18 @@ const char *cyrillic = "б"; struct foo { #define blubb }; + +#define test_micro(A,B) ((A##B>1?A:B)) + +int a = (a1 > 0); + +int func() { + int a = (a1 > 0); +} + +namespace std { + template struct pair; + template struct vector; +} + +static std::vector> pvr; diff --git a/tests/unit/unittest/highlightingresultreporter-test.cpp b/tests/unit/unittest/highlightingresultreporter-test.cpp index dd2001e02ff..f7651f5134c 100644 --- a/tests/unit/unittest/highlightingresultreporter-test.cpp +++ b/tests/unit/unittest/highlightingresultreporter-test.cpp @@ -43,7 +43,6 @@ using ClangBackEnd::Document; using ClangBackEnd::Documents; using ClangBackEnd::UnsavedFiles; using ClangBackEnd::ChunksReportedMonitor; -using ClangCodeModel::Internal::HighlightingResultReporter; namespace { @@ -87,9 +86,7 @@ QVector generateTokenInfos(uint count) TEST_F(HighlightingResultReporter, StartAndFinish) { - auto reporter = new ::HighlightingResultReporter(noTokenInfos()); - - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(noTokenInfos()); future.waitForFinished(); ASSERT_THAT(future.isFinished(), true); @@ -97,9 +94,7 @@ TEST_F(HighlightingResultReporter, StartAndFinish) TEST_F(HighlightingResultReporter, ReportNothingIfNothingToReport) { - auto reporter = new ::HighlightingResultReporter(generateTokenInfos(0)); - - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(generateTokenInfos(0)); ChunksReportedMonitor monitor(future); ASSERT_THAT(monitor.resultsReadyCounter(), 0L); @@ -107,10 +102,7 @@ TEST_F(HighlightingResultReporter, ReportNothingIfNothingToReport) TEST_F(HighlightingResultReporter, ReportSingleResultAsOneChunk) { - auto reporter = new ::HighlightingResultReporter(generateTokenInfos(1)); - reporter->setChunkSize(1); - - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(generateTokenInfos(1), 1); ChunksReportedMonitor monitor(future); ASSERT_THAT(monitor.resultsReadyCounter(), 1L); @@ -118,11 +110,7 @@ TEST_F(HighlightingResultReporter, ReportSingleResultAsOneChunk) TEST_F(HighlightingResultReporter, ReportRestIfChunkSizeNotReached) { - auto reporter = new ::HighlightingResultReporter(generateTokenInfos(1)); - const int notReachedChunkSize = 100; - reporter->setChunkSize(notReachedChunkSize); - - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(generateTokenInfos(1), 100); ChunksReportedMonitor monitor(future); ASSERT_THAT(monitor.resultsReadyCounter(), 1L); @@ -130,10 +118,7 @@ TEST_F(HighlightingResultReporter, ReportRestIfChunkSizeNotReached) TEST_F(HighlightingResultReporter, ReportChunksWithoutRest) { - auto reporter = new ::HighlightingResultReporter(generateTokenInfos(4)); - reporter->setChunkSize(1); - - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(generateTokenInfos(4), 1); ChunksReportedMonitor monitor(future); ASSERT_THAT(monitor.resultsReadyCounter(), 2L); @@ -141,10 +126,7 @@ TEST_F(HighlightingResultReporter, ReportChunksWithoutRest) TEST_F(HighlightingResultReporter, ReportSingleChunkAndRest) { - auto reporter = new ::HighlightingResultReporter(generateTokenInfos(5)); - reporter->setChunkSize(2); - - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(generateTokenInfos(5), 2); ChunksReportedMonitor monitor(future); ASSERT_THAT(monitor.resultsReadyCounter(), 2L); @@ -159,10 +141,8 @@ TEST_F(HighlightingResultReporter, ReportCompleteLines) TokenInfoContainer(1, 2, 1, types), TokenInfoContainer(2, 1, 1, types), }; - auto reporter = new ::HighlightingResultReporter(tokenInfos); - reporter->setChunkSize(1); - auto future = reporter->start(); + auto future = ClangCodeModel::Internal::highlightResults(tokenInfos, 1); ChunksReportedMonitor monitor(future); ASSERT_THAT(monitor.resultsReadyCounter(), 2L); diff --git a/tests/unit/unittest/tokenprocessor-test.cpp b/tests/unit/unittest/tokenprocessor-test.cpp index ade12cb1fcf..0a6106569f7 100644 --- a/tests/unit/unittest/tokenprocessor-test.cpp +++ b/tests/unit/unittest/tokenprocessor-test.cpp @@ -1794,11 +1794,10 @@ TEST_F(TokenProcessor, TemplateSeparateDeclDef) ASSERT_THAT(infos[37], IsHighlightingMark(764u, 5u, 9u, HighlightingType::GlobalVariable)); } -TEST_F(TokenProcessor, NestedTemplate) +TEST_F(TokenProcessor, NestedTemplateIncorrect) { const auto infos = translationUnit.tokenInfosInRange(sourceRange(773, 44)); - ASSERT_THAT(infos[12], HasTwoTypes(HighlightingType::Punctuation, - HighlightingType::DoubleAngleBracketClose)); + ASSERT_THAT(infos[12], HasOnlyType(HighlightingType::Punctuation)); } TEST_F(TokenProcessor, OperatorInTemplate) @@ -1819,6 +1818,32 @@ TEST_F(TokenProcessor, PreProcessorInStruct) ASSERT_THAT(infos[1], HasOnlyType(HighlightingType::Preprocessor)); } +TEST_F(TokenProcessor, DefinitionWithComparison) +{ + const auto infos = translationUnit.tokenInfosInRange(sourceRange(798, 39)); + ASSERT_THAT(infos[13], HasOnlyType(HighlightingType::Punctuation)); +} + +TEST_F(TokenProcessor, GlobalVariableWithComparison) +{ + const auto infos = translationUnit.tokenInfosInRange(sourceRange(800, 18)); + ASSERT_THAT(infos[5], HasOnlyType(HighlightingType::Punctuation)); +} + +TEST_F(TokenProcessor, VariableWithComparison) +{ + const auto infos = translationUnit.tokenInfosInRange(sourceRange(803, 22)); + ASSERT_THAT(infos[5], HasOnlyType(HighlightingType::Punctuation)); +} + + +TEST_F(TokenProcessor, NestedTemplate) +{ + const auto infos = translationUnit.tokenInfosInRange(sourceRange(811, 44)); + ASSERT_THAT(infos[12], HasTwoTypes(HighlightingType::Punctuation, + HighlightingType::DoubleAngleBracketClose)); +} + Data *TokenProcessor::d; void TokenProcessor::SetUpTestCase()