From cd7a0bbef5e0a419f70f225433da3219546d8bb7 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Mon, 14 Mar 2022 14:02:22 +0100 Subject: [PATCH 01/26] Docker: Inform user early if adding device fails When retrieving the list of images there is no indicator when something failed, so add one. Change-Id: I2e0cde4ba33527e1b2abeecb5b3a06507dabf472 Reviewed-by: hjk --- src/plugins/docker/dockerdevice.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 25770163e35..78456c50888 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -1859,12 +1860,19 @@ public: m_log = new QTextBrowser; m_log->setVisible(false); + const QString fail = QString{"Docker: "} + + QCoreApplication::translate("Debugger::Internal::GdbEngine", + "Process failed to start."); + auto errorLabel = new Utils::InfoLabel(fail, Utils::InfoLabel::Error, this); + errorLabel->setVisible(false); + m_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); using namespace Layouting; Column { m_view, m_log, + errorLabel, m_buttons, }.attachTo(this); @@ -1902,6 +1910,13 @@ public: m_log->append(DockerDevice::tr("Error: %1").arg(out)); }); + connect(m_process, &Utils::QtcProcess::finished, + this, [this, errorLabel]() { + if (m_process->exitCode() != 0) { + errorLabel->setVisible(true); + } + }); + connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, [this] { const QModelIndexList selectedRows = m_view->selectionModel()->selectedRows(); QTC_ASSERT(selectedRows.size() == 1, return); From 82534fc979a7710e460815de87a7f21becd05f05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Mon, 14 Mar 2022 19:21:24 +0100 Subject: [PATCH 02/26] Squish: Explicitly use qmake-based projects in suite_APTW Creator's default build system is CMake now which broke the tests. Change-Id: I901b44dd4545a297d0100da5d92aa1bea79e41d3 Reviewed-by: Christian Stenger --- tests/system/shared/project.py | 21 ++++++++++++++------- tests/system/suite_APTW/tst_APTW01/test.py | 4 ++-- tests/system/suite_APTW/tst_APTW02/test.py | 4 ++-- tests/system/suite_APTW/tst_APTW03/test.py | 7 ++++--- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index e5f4c4bc6b6..a5b9cd2dedf 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (C) 2016 The Qt Company Ltd. +# Copyright (C) 2022 The Qt Company Ltd. # Contact: https://www.qt.io/licensing/ # # This file is part of Qt Creator. @@ -224,15 +224,19 @@ def __modifyAvailableTargets__(available, requiredQt, asStrings=False): if Qt5Path.toVersionTuple(found.group(1)) < Qt5Path.toVersionTuple(requiredQt): available.discard(currentItem) + # Creates a Qt GUI project # param path specifies where to create the project # param projectName is the name for the new project # param checks turns tests in the function on if set to True -def createProject_Qt_GUI(path, projectName, checks = True, addToVersionControl = ""): +# param addToVersionControl selects the specified VCS from Creator's wizard +# param buildSystem selects the specified build system from Creator's wizard +def createProject_Qt_GUI(path, projectName, checks=True, addToVersionControl="", + buildSystem=None): template = "Qt Widgets Application" available = __createProjectOrFileSelectType__(" Application (Qt)", template) __createProjectSetNameAndPath__(path, projectName, checks) - buildSystem = __handleBuildSystem__(None) + buildSystem = __handleBuildSystem__(buildSystem) if checks: exp_filename = "mainwindow" @@ -375,7 +379,8 @@ def createNewNonQtProject(workingDir, projectName, target, plainC=False, buildSy __createProjectHandleLastPage__() return projectName -def createNewCPPLib(projectDir, projectName, className, target, isStatic): + +def createNewCPPLib(projectDir, projectName, className, target, isStatic, buildSystem=None): available = __createProjectOrFileSelectType__(" Library", "C++ Library", False, True) if isStatic: libType = LibType.STATIC @@ -384,7 +389,7 @@ def createNewCPPLib(projectDir, projectName, className, target, isStatic): if projectDir == None: projectDir = tempDir() projectName = __createProjectSetNameAndPath__(projectDir, projectName, False) - __handleBuildSystem__(None) + __handleBuildSystem__(buildSystem) selectFromCombo(waitForObject("{name='Type' type='QComboBox' visible='1' " "window=':New_ProjectExplorer::JsonWizard'}"), LibType.getStringForLib(libType)) @@ -396,10 +401,12 @@ def createNewCPPLib(projectDir, projectName, className, target, isStatic): __createProjectHandleLastPage__() return projectName, className -def createNewQtPlugin(projectDir, projectName, className, target, baseClass="QGenericPlugin"): + +def createNewQtPlugin(projectDir, projectName, className, target, baseClass="QGenericPlugin", + buildSystem=None): available = __createProjectOrFileSelectType__(" Library", "C++ Library", False, True) projectName = __createProjectSetNameAndPath__(projectDir, projectName, False) - __handleBuildSystem__(None) + __handleBuildSystem__(buildSystem) selectFromCombo(waitForObject("{name='Type' type='QComboBox' visible='1' " "window=':New_ProjectExplorer::JsonWizard'}"), LibType.getStringForLib(LibType.QT_PLUGIN)) diff --git a/tests/system/suite_APTW/tst_APTW01/test.py b/tests/system/suite_APTW/tst_APTW01/test.py index ac833cffc93..cb03f38e1b8 100644 --- a/tests/system/suite_APTW/tst_APTW01/test.py +++ b/tests/system/suite_APTW/tst_APTW01/test.py @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (C) 2016 The Qt Company Ltd. +# Copyright (C) 2022 The Qt Company Ltd. # Contact: https://www.qt.io/licensing/ # # This file is part of Qt Creator. @@ -31,7 +31,7 @@ def main(): # warnings from the clang code model in "issues" view if not startCreatorVerifyingClang(False): return - createProject_Qt_GUI(tempDir(), "SampleApp") + createProject_Qt_GUI(tempDir(), "SampleApp", buildSystem="qmake") # run project for debug and release and verify results runVerify() #close Qt Creator diff --git a/tests/system/suite_APTW/tst_APTW02/test.py b/tests/system/suite_APTW/tst_APTW02/test.py index bff30f84e4e..e4f9a6d6ea1 100644 --- a/tests/system/suite_APTW/tst_APTW02/test.py +++ b/tests/system/suite_APTW/tst_APTW02/test.py @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (C) 2016 The Qt Company Ltd. +# Copyright (C) 2022 The Qt Company Ltd. # Contact: https://www.qt.io/licensing/ # # This file is part of Qt Creator. @@ -30,7 +30,7 @@ def main(): startQC() if not startedWithoutPluginError(): return - createNewQtQuickApplication(tempDir(), "SampleApp") + createNewQtQuickApplication(tempDir(), "SampleApp", buildSystem="qmake") # run project for debug and release and verify results runVerify() #close Qt Creator diff --git a/tests/system/suite_APTW/tst_APTW03/test.py b/tests/system/suite_APTW/tst_APTW03/test.py index 2a7c78bdde1..735073f2152 100644 --- a/tests/system/suite_APTW/tst_APTW03/test.py +++ b/tests/system/suite_APTW/tst_APTW03/test.py @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (C) 2016 The Qt Company Ltd. +# Copyright (C) 2022 The Qt Company Ltd. # Contact: https://www.qt.io/licensing/ # # This file is part of Qt Creator. @@ -65,7 +65,7 @@ def handleInsertVirtualFunctions(expected, toAdd): def checkSimpleCppLib(projectName, static): projectName, className = createNewCPPLib(tempDir(), projectName, "MyClass", Targets.desktopTargetClasses(), - static) + static, buildSystem="qmake") for kit, config in iterateBuildConfigs("Release"): verifyBuildConfig(kit, config, False, True) invokeMenuItem('Build', 'Build Project "%s"' % projectName) @@ -87,7 +87,8 @@ def main(): checkSimpleCppLib("SampleApp2", True) pluginTargets = (Targets.DESKTOP_5_10_1_DEFAULT, Targets.DESKTOP_5_14_1_DEFAULT) - projectName, className = createNewQtPlugin(tempDir(), "SampleApp3", "MyPlugin", pluginTargets) + projectName, className = createNewQtPlugin(tempDir(), "SampleApp3", "MyPlugin", pluginTargets, + buildSystem="qmake") virtualFunctionsAdded = False for kit, config in iterateBuildConfigs("Debug"): verifyBuildConfig(kit, config, True, True) From 72e4287ac34b86bf5dbda5b162eef4c8e2f64e3d Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 14 Mar 2022 16:07:47 +0200 Subject: [PATCH 03/26] QmlDesigner: Fix navigator preview of Models Now we resolve absolute source url for our preview model, so it will always find the custom mesh files. Also always use the Node type preview if the instance is a component, even if the root node is Model. This ensures the preview works properly in case there are child nodes inside the component. Fixes: QDS-6204 Change-Id: I48ef273e5a5dca13abe25816b5edf0be7dd217ff Reviewed-by: Reviewed-by: Mahmoud Badri Reviewed-by: Thomas Hartmann --- .../qmlpuppet/mockfiles/qt6/ModelNodeView.qml | 4 ++-- .../qml2puppet/editor3d/generalhelper.cpp | 21 +++++++++++++++++++ .../qml2puppet/editor3d/generalhelper.h | 2 ++ .../qt5informationnodeinstanceserver.cpp | 12 ++++++++--- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNodeView.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNodeView.qml index d6574f660ca..19b3c4c35d7 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNodeView.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNodeView.qml @@ -37,7 +37,7 @@ View3D { function fitToViewPort() { // The magic number is the distance from camera default pos to origin - _generalHelper.calculateNodeBoundsAndFocusCamera(theCamera, importScene, root, + _generalHelper.calculateNodeBoundsAndFocusCamera(theCamera, sourceModel, root, 1040); } @@ -65,7 +65,7 @@ View3D { Model { id: model - source: sourceModel.source + source: _generalHelper.resolveAbsoluteSourceUrl(sourceModel) geometry: sourceModel.geometry materials: [ diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp index 66cd2d80b8e..dcd0a98549b 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -93,6 +94,26 @@ QString GeneralHelper::generateUniqueName(const QString &nameRoot) return QStringLiteral("%1_%2").arg(nameRoot).arg(count); } +// Resolves absolute model source path +QUrl GeneralHelper::resolveAbsoluteSourceUrl(const QQuick3DModel *sourceModel) +{ + if (!sourceModel) + return {}; + + const QUrl source = sourceModel->source(); + if (source.hasFragment()) { + // Fragment is part of the url separated by '#', check if it is an index or primitive + bool isNumber = false; + source.fragment().toInt(&isNumber); + // If it wasn't an index, then it was a primitive and we can return it as-is + if (!isNumber) + return source; + } + + const QQmlContext *context = qmlContext(sourceModel); + return context ? context->resolvedUrl(source) : source; +} + void GeneralHelper::orbitCamera(QQuick3DCamera *camera, const QVector3D &startRotation, const QVector3D &lookAtPoint, const QVector3D &pressPos, const QVector3D ¤tPos) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h index ac67172ab32..562848c7720 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,7 @@ public: Q_INVOKABLE void requestOverlayUpdate(); Q_INVOKABLE QString generateUniqueName(const QString &nameRoot); + Q_INVOKABLE QUrl resolveAbsoluteSourceUrl(const QQuick3DModel *sourceModel); Q_INVOKABLE void orbitCamera(QQuick3DCamera *camera, const QVector3D &startRotation, const QVector3D &lookAtPoint, const QVector3D &pressPos, diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 9656e0e5e89..0d6c069faec 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -1091,9 +1091,15 @@ void Qt5InformationNodeInstanceServer::doRenderModelNode3DImageView() m_modelNode3DImageViewData.window->resize(renderSize); m_modelNode3DImageViewData.rootItem->setSize(renderSize); - QMetaObject::invokeMethod( - m_modelNode3DImageViewData.rootItem, "createViewForObject", - Q_ARG(QVariant, objectToVariant(instanceObj))); + if (createdFromComponent) { + QMetaObject::invokeMethod( + m_modelNode3DImageViewData.rootItem, "createViewForNode", + Q_ARG(QVariant, objectToVariant(instanceObj))); + } else { + QMetaObject::invokeMethod( + m_modelNode3DImageViewData.rootItem, "createViewForObject", + Q_ARG(QVariant, objectToVariant(instanceObj))); + } // Need to render twice, first render updates spatial nodes for (int i = 0; i < 2; ++i) { From f487143848ccddd9825f7782adae76622c61d92c Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Fri, 11 Mar 2022 18:17:00 +0100 Subject: [PATCH 04/26] qds: extra code to handle license in about dialog Change-Id: If9b493a4c9582b1fefac3dcaf31d34ef08eb6e6d Reviewed-by: Reviewed-by: Eike Ziller --- src/plugins/qmldesigner/dynamiclicensecheck.h | 57 +++++++++++++------ src/plugins/qmldesigner/qmldesignerplugin.cpp | 17 ++++-- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/plugins/qmldesigner/dynamiclicensecheck.h b/src/plugins/qmldesigner/dynamiclicensecheck.h index 8cc7982895c..fb1e3661b85 100644 --- a/src/plugins/qmldesigner/dynamiclicensecheck.h +++ b/src/plugins/qmldesigner/dynamiclicensecheck.h @@ -42,27 +42,48 @@ enum FoundLicense { enterprise }; -FoundLicense checkLicense() { +namespace Internal { +ExtensionSystem::IPlugin *licenseCheckerPlugin() +{ const ExtensionSystem::PluginSpec *pluginSpec = Utils::findOrDefault( ExtensionSystem::PluginManager::plugins(), Utils::equal(&ExtensionSystem::PluginSpec::name, QString("LicenseChecker"))); - if (!pluginSpec) - return community; - - ExtensionSystem::IPlugin *plugin = pluginSpec->plugin(); - - if (!plugin) - return community; - - bool retVal = false; - bool success = QMetaObject::invokeMethod(plugin, - "qdsEnterpriseLicense", - Qt::DirectConnection, - Q_RETURN_ARG(bool, retVal)); - if (success && retVal) - return enterprise; - - return professional; + if (pluginSpec) + return pluginSpec->plugin(); + return nullptr; } +} // namespace Internal + + +FoundLicense checkLicense() +{ + if (auto plugin = Internal::licenseCheckerPlugin()) { + bool retVal = false; + bool success = QMetaObject::invokeMethod(plugin, + "qdsEnterpriseLicense", + Qt::DirectConnection, + Q_RETURN_ARG(bool, retVal)); + if (success && retVal) + return enterprise; + else + return professional; + } + return community; +} + +QString licensee() +{ + if (auto plugin = Internal::licenseCheckerPlugin()) { + QString retVal; + bool success = QMetaObject::invokeMethod(plugin, + "licensee", + Qt::DirectConnection, + Q_RETURN_ARG(QString, retVal)); + if (success) + return retVal; + } + return {}; +} + } // namespace Utils diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index b9ea5c5107b..8b35c6f917c 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -35,6 +35,7 @@ #include "qmldesignerconstants.h" #include "qmldesignerprojectmanager.h" #include "settingspage.h" +#include "dynamiclicensecheck.h" #include #include @@ -312,14 +313,22 @@ bool QmlDesignerPlugin::delayedInitialize() d->viewManager.registerFormEditorTool(std::make_unique()); if (QmlProjectManager::QmlProject::isQtDesignStudio()) { + d->mainWidget.initialize(); + emitUsageStatistics("StandaloneMode"); if (QmlProjectManager::QmlProject::isQtDesignStudioStartedFromQtC()) emitUsageStatistics("QDSlaunchedFromQtC"); - emitUsageStatistics("QDSstartupCount"); - } + emitUsageStatistics("QDSstartupCount"); - if (QmlProjectManager::QmlProject::isQtDesignStudio()) - d->mainWidget.initialize(); + FoundLicense license = checkLicense(); + if (license == FoundLicense::enterprise) + Core::ICore::appendAboutInformation(tr("License: Enterprise")); + else if (license == FoundLicense::professional) + Core::ICore::appendAboutInformation(tr("License: Professional")); + + if (!licensee().isEmpty()) + Core::ICore::appendAboutInformation(tr("Licensee: %1").arg(licensee())); + } return true; } From ec55793a225a9959eaacf6d68676b19c42ff4ea4 Mon Sep 17 00:00:00 2001 From: Samuel Ghinet Date: Thu, 10 Mar 2022 13:42:51 +0200 Subject: [PATCH 05/26] New Project Dialog: Use hover states for interactive items Also, changed the "Save Preset" dialog so that, when the user presses Enter, the dialog will be accept-ed. Task-number: QDS-5741 Change-Id: I7056d1184a3d9d400ac718c8d434cf2ad36ed35e Reviewed-by: Mahmoud Badri Reviewed-by: Thomas Hartmann --- .../newprojectdialog/NewProjectDialog.qml | 15 ++- .../imports/NewProjectDialog/Details.qml | 116 +++++++++--------- .../imports/NewProjectDialog/Styles.qml | 19 ++- 3 files changed, 85 insertions(+), 65 deletions(-) diff --git a/share/qtcreator/qmldesigner/newprojectdialog/NewProjectDialog.qml b/share/qtcreator/qmldesigner/newprojectdialog/NewProjectDialog.qml index 4cc82bc79cc..f895cdd8c40 100644 --- a/share/qtcreator/qmldesigner/newprojectdialog/NewProjectDialog.qml +++ b/share/qtcreator/qmldesigner/newprojectdialog/NewProjectDialog.qml @@ -204,11 +204,22 @@ Item { font.weight: Font.DemiBold font.pixelSize: DialogValues.viewHeaderPixelSize verticalAlignment: Text.AlignVCenter - color: tabBarRow.currIndex === index ? DialogValues.textColorInteraction - : DialogValues.textColor + + color: { + var color = tabBarRow.currIndex === index + ? DialogValues.textColorInteraction + : DialogValues.textColor + + return tabItemMouseArea.containsMouse + ? Qt.darker(color, 1.5) + : color + } + Behavior on color { ColorAnimation { duration: tabBar.animDur } } MouseArea { + id: tabItemMouseArea + hoverEnabled: true anchors.fill: parent onClicked: { tabBar.selectTab(index) diff --git a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml index b348a6da350..1f154810b00 100644 --- a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml +++ b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Details.qml @@ -286,12 +286,8 @@ Item { realStepSize: 10 font.pixelSize: DialogValues.defaultPixelSize - onRealValueChanged: { - if (widthField.realValue >= heightField.realValue) - orientationButton.setHorizontal() - else - orientationButton.setVertical() - } + onRealValueChanged: orientationButton.isHorizontal = + widthField.realValue >= heightField.realValue } // Width Text Field Binding { @@ -311,12 +307,8 @@ Item { realStepSize: 10 font.pixelSize: DialogValues.defaultPixelSize - onRealValueChanged: { - if (widthField.realValue >= heightField.realValue) - orientationButton.setHorizontal() - else - orientationButton.setVertical() - } + onRealValueChanged: orientationButton.isHorizontal = + widthField.realValue >= heightField.realValue } // Height Text Field Binding { @@ -327,69 +319,69 @@ Item { Item { Layout.fillWidth: true } - Button { + Item { id: orientationButton implicitWidth: 100 implicitHeight: 50 - checked: false - hoverEnabled: false - background: Rectangle { - width: parent.width - height: parent.height - color: "transparent" + property bool isHorizontal: false - Row { - Item { - width: orientationButton.width / 2 - height: orientationButton.height - Rectangle { - id: horizontalBar - color: "white" - width: parent.width - height: orientationButton.height / 2 - anchors.verticalCenter: parent.verticalCenter - radius: 3 - } + Row { + spacing: orientationButton.width / 4 + + function computeColor(barId) { + var color = DialogValues.textColor + + if (barId === horizontalBar) { + color = orientationButton.isHorizontal + ? DialogValues.textColorInteraction + : DialogValues.textColor + } else { + color = orientationButton.isHorizontal + ? DialogValues.textColor + : DialogValues.textColorInteraction } - Item { - width: orientationButton.width / 4 - height: orientationButton.height - } + if (orientationButtonMouseArea.containsMouse) + color = Qt.darker(color, 1.5) - Rectangle { - id: verticalBar - width: orientationButton.width / 4 - height: orientationButton.height - color: "white" - radius: 3 - } + return color + } + + Rectangle { + id: horizontalBar + color: parent.computeColor(horizontalBar) + width: orientationButton.width / 2 + height: orientationButton.height / 2 + anchors.verticalCenter: parent.verticalCenter + radius: 3 + } + + Rectangle { + id: verticalBar + color: parent.computeColor(verticalBar) + width: orientationButton.width / 4 + height: orientationButton.height + radius: 3 } } - onClicked: { - if (widthField.realValue && heightField.realValue) { - [widthField.realValue, heightField.realValue] = [heightField.realValue, widthField.realValue] - orientationButton.checked = !orientationButton.checked + MouseArea { + id: orientationButtonMouseArea + anchors.fill: parent + hoverEnabled: true - if (widthField.realValue === heightField.realValue) - orientationButton.checked ? setVertical() : setHorizontal() + onClicked: { + if (widthField.realValue && heightField.realValue) { + [widthField.realValue, heightField.realValue] = [heightField.realValue, widthField.realValue] + + if (widthField.realValue === heightField.realValue) + orientationButton.isHorizontal = !orientationButton.isHorizontal + else + orientationButton.isHorizontal = widthField.realValue > heightField.realValue + } } } - - function setHorizontal() { - orientationButton.checked = false - horizontalBar.color = DialogValues.textColorInteraction - verticalBar.color = "white" - } - - function setVertical() { - orientationButton.checked = true - horizontalBar.color = "white" - verticalBar.color = DialogValues.textColorInteraction - } } // Orientation button - } // GridLayout: orientation + width + height Rectangle { @@ -507,6 +499,8 @@ Item { presetNameTextField.text = text.trim() presetNameTextField.text = text.replace(/\s+/g, " ") } + + onAccepted: savePresetDialog.accept() } Binding { diff --git a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Styles.qml b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Styles.qml index 72be983e33a..2f8da50c6c3 100644 --- a/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Styles.qml +++ b/share/qtcreator/qmldesigner/newprojectdialog/imports/NewProjectDialog/Styles.qml @@ -160,8 +160,17 @@ Item { + 2 * DialogValues.styleImageBorderWidth height: DialogValues.styleImageHeight + 2 * DialogValues.styleImageBorderWidth - border.color: index === stylesList.currentIndex ? DialogValues.textColorInteraction : "transparent" - border.width: index === stylesList.currentIndex ? DialogValues.styleImageBorderWidth : 0 + + border.color: itemRectMouseArea.containsMouse + ? DialogValues.textColor + : (index === stylesList.currentIndex + ? DialogValues.textColorInteraction + : "transparent") + + border.width: index === stylesList.currentIndex || itemRectMouseArea.containsMouse + ? DialogValues.styleImageBorderWidth + : 0 + color: "transparent" Image { @@ -173,6 +182,12 @@ Item { asynchronous: false source: "image://newprojectdialog_library/" + BackendApi.styleModel.iconId(model.index) } + + MouseArea { + id: itemRectMouseArea + anchors.fill: parent + hoverEnabled: true + } } // Rectangle Text { From 59a721c0ea918a66260e49e88ce4329062d830b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Tue, 15 Mar 2022 13:31:15 +0100 Subject: [PATCH 06/26] QmlDesigner: Compile fix for Qt 5.15 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit error: passing ‘const QQmlContext’ as ‘this’ argument discards qualifiers Change-Id: I4fa9ed0098f5bd63925534459d1171d7c9430897 Reviewed-by: Miikka Heikkinen --- .../qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp index dcd0a98549b..1b1788e4acf 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp @@ -110,7 +110,7 @@ QUrl GeneralHelper::resolveAbsoluteSourceUrl(const QQuick3DModel *sourceModel) return source; } - const QQmlContext *context = qmlContext(sourceModel); + QQmlContext *context = qmlContext(sourceModel); return context ? context->resolvedUrl(source) : source; } From 6c9ded9461d749b80b221b2d2b24e2a796fb8116 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 8 Mar 2022 15:57:19 +0200 Subject: [PATCH 07/26] QmlDesigner: Block starting drag when clicking on non-draggable node Fixes: QDS-6415 Change-Id: I328e7715d2837d1126506a6fbbf4d1bf52cc250f Reviewed-by: Thomas Hartmann Reviewed-by: Mahmoud Badri Reviewed-by: --- .../components/navigator/navigatortreeview.cpp | 16 ++++++++++++++++ .../components/navigator/navigatortreeview.h | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp index 2d1ef6f554d..d679e6017d4 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp @@ -281,4 +281,20 @@ bool NavigatorTreeView::viewportEvent(QEvent *event) return QTreeView::viewportEvent(event); } +void NavigatorTreeView::mousePressEvent(QMouseEvent *event) +{ + // Block drag from starting if press was on an item that is not draggable. + // This is necessary as it is the selected items that are dragged and the pressed item may not + // be a selected item, e.g. when pressing on locked item, leading to unexpected drags. + m_dragAllowed = model()->flags(indexAt(event->pos())) & Qt::ItemIsDragEnabled; + + QTreeView::mousePressEvent(event); +} + +void NavigatorTreeView::startDrag(Qt::DropActions supportedActions) +{ + if (m_dragAllowed) + QTreeView::startDrag(supportedActions); +} + } diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.h b/src/plugins/qmldesigner/components/navigator/navigatortreeview.h index 227746e207d..6f2211f82bd 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.h +++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.h @@ -40,8 +40,13 @@ public: static void drawSelectionBackground(QPainter *painter, const QStyleOption &option); bool viewportEvent(QEvent *event) override; +protected: + void mousePressEvent(QMouseEvent *event) override; + void startDrag(Qt::DropActions supportedActions) override; + private: PreviewToolTip *m_previewToolTip = nullptr; qint32 m_previewToolTipNodeId = -1; + bool m_dragAllowed = true; }; } From e7772949d2b58b6af4abe2da13a384327de2807e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 14 Mar 2022 17:27:22 +0100 Subject: [PATCH 08/26] Update changelog for 7.0.0 Change-Id: I51a2cbe1530fbcea4adbb0a429bac3021397d704 Reviewed-by: Reviewed-by: Leena Miettinen --- dist/changes-7.0.0.md | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/dist/changes-7.0.0.md b/dist/changes-7.0.0.md index a9c98815a54..991e52926a6 100644 --- a/dist/changes-7.0.0.md +++ b/dist/changes-7.0.0.md @@ -22,6 +22,8 @@ General * Added `Tools > Debug Qt Creator > Show Logs` for viewing Qt Creator debug logs * Moved C++ code model and language client inspectors to `Tools > Debug Qt Creator` +* Fixed persistence of `Show Folders on Top` in `File System` + (QTCREATORBUG-27131) Editing ------- @@ -30,23 +32,33 @@ Editing * Added support for choosing external editor as default editor (QTCREATORBUG-13880) * Fixed copy action in text editing macros (QTCREATORBUG-26363) +* Fixed cursor position after backspace and going up or down + (QTCREATORBUG-27035) ### C++ +* Switched to LLVM 14 in binary packages * Switched to Clangd by default (QTCREATORBUG-22917) * Fixed that compilation errors appeared below code model errors in `Issues` pane (QTCREATORBUG-23655) * Fixed that duplication files did not adapt header guard (QTCREATORBUG-26654) * Fixed highlighting and indentation of raw string literals (QTCREATORBUG-26211) * Fixed performance issue in global indexer (QTCREATORBUG-26841) +* Fixed tiny refactoring icon on HiDPI screens (QTCREATORBUG-26905) +* Fixed dot to arrow conversion with extra characters (QTCREATORBUG-27034) * clang-format * Moved settings to `Code Style` editor * Added synchronization between `clang-format` settings and custom code style * Clangd + * Added support for parse contexts (QTCREATORBUG-27009) * Added memory usage inspector to language client inspector * Added highlighting of `Q_PROPERTY` declarations * Improved display of diagnostic messages * Fixed access type categorization for functions + * Fixed highlighting issues (QTCREATORBUG-27059, QTCREATORBUG-27111) + * Fixed generating `Q_PROPERTY` members (QTCREATORBUG-27063) + * Fixed display of outdated diagnostics (QTCREATORBUG-26585) + * Fixed that `Unknown argument` diagnostics were shown (QTCREATORBUG-27113) ### QML @@ -64,6 +76,7 @@ Editing (QTCREATORBUG-26624) * Fixed that outdated diagnostic could be shown (QTCREATORBUG-26585) * Fixed issue with re-highlighting (QTCREATORBUG-26624) +* Fixed crash when rapidly closing documents (QTCREATORBUG-26534) ### FakeVim @@ -76,7 +89,11 @@ Projects * Added multiple selection to `Issues` pane (QTCREATORBUG-25547, QTCREATORBUG-26720) * Improved automatic (re-)detection of toolchains (QTCREATORBUG-26460) +* Changed default C++ standard for project wizards to C++17 (QTCREATORBUG-27045) * Fixed unnecessary toolchain calls at startup +* Fixed warning that file is not part of any project (QTCREATORBUG-26987) +* Fixed that leading spaces could break custom output parsers + (QTCREATORBUG-26892) ### CMake @@ -92,6 +109,12 @@ Projects * Added context menu actions for resolving mismatches between kit, initial and current configuration * Added `Help` to context menu for variable names +* Fixed that CMake was unnecessarily run after Kit update +* Fixed crash when Kit has no toolchain (QTCREATORBUG-26777) + +### Qbs + +* Fixed that `cpp.cFlags` and `cpp.cxxFlags` were not considered for code model ### Generic @@ -101,6 +124,10 @@ Projects * Fixed parsing of `SUBDIRS` +### Mercurial + +* Fixed saving of settings (QTCREATORBUG-27091) + Debugging --------- @@ -143,11 +170,23 @@ Test Integration Platforms --------- +### Windows + +* Fixed auto-detection of MinGW compiler (QTCREATORBUG-27057) +* Fixed missing compile `Issues` for MSVC (QTCREATORBUG-27056) +* Fixed wrong path separator when using `-client` (QTCREATORBUG-27075) + +### Linux + +* Added Wayland backend (QTCREATORBUG-26867) + ### macOS * Fixed that macOS dark mode was not used for dark themes (QTCREATORBUG-22477) * Fixed that user applications inherited access permissions from Qt Creator (QTCREATORBUG-26743) +* Fixed key repeat (QTCREATORBUG-26925) +* Fixed environment when opening `Terminal` with `zsh` ### Android @@ -159,10 +198,14 @@ Platforms (QTCREATORBUG-26709) * Fixed detection of available NDK platforms for recent NDKs (QTCREATORBUG-26772) +* Fixed naming of devices that are connected via USB and WiFi at the same time +* Fixed deployment if Kit fails to determine ABI (QTCREATORBUG-27103) ### Remote Linux * Fixed UI state after stopping remote applications (QTCREATORBUG-26848) +* Fixed missing error message in `Application Output` when remote application + crashes (QTCREATORBUG-27007) ### WebAssembly @@ -181,20 +224,26 @@ Platforms Credits for these changes go to: -------------------------------- Aaron Barany +Aleksei German Alessandro Portale Alexander Drozdov Allan Sandfeld Jensen +Andre Hartmann André Pönitz Anton Alimoff +Antti Määttä Artem Sokolovskii Assam Boudjelthia +Björn Schäpers Christiaan Janssen Christian Kandeler Christian Stenger +Christian Strømme Cristian Adam Cristián Maureira-Fredes David Schulz Eike Ziller +Erik Verbruggen Fawzi Mohamed Henning Gruendl Huixiong Cao @@ -209,20 +258,28 @@ Knud Dollereder Leena Miettinen Mahmoud Badri Marco Bubke +Mats Honkamaa Maximilian Goldstein Miikka Heikkinen Morten Johan Sørvig Orgad Shaneh +Oswald Buddenhagen Petar Perisin Piotr Mikolajczyk +Piotr Mućko +Rafael Roquetto Robert Löhning Samuel Ghinet +Tapani Mattila Tasuku Suzuki +Thiago Macieira Thomas Hartmann Tim Jenssen Tony Leinonen Topi Reinio Tor Arne Vestbø +Tuomo Pelkonen Ulf Hermann Ville Nummela +Xiaofeng Wang XutaxKamay From 2907d60973a89e2097129710a344e7c1c182f528 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 15 Mar 2022 13:10:12 +0100 Subject: [PATCH 09/26] Squish: Handle build systems more appropriately MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I43e89d76c4199a741a5606dd0d6de2165b8133c6 Reviewed-by: Robert Löhning Reviewed-by: Christian Stenger --- tests/system/shared/project.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index a5b9cd2dedf..e0b79316b81 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -224,6 +224,11 @@ def __modifyAvailableTargets__(available, requiredQt, asStrings=False): if Qt5Path.toVersionTuple(found.group(1)) < Qt5Path.toVersionTuple(requiredQt): available.discard(currentItem) +def __getProjectFileName__(projectName, buildSystem): + if buildSystem is None or buildSystem == "CMake": + return "CMakeLists.txt" + else: + return projectName + (".pro" if buildSystem == "qmake" else ".qbs") # Creates a Qt GUI project # param path specifies where to create the project @@ -243,7 +248,7 @@ def createProject_Qt_GUI(path, projectName, checks=True, addToVersionControl=" Date: Tue, 15 Mar 2022 13:22:50 +0100 Subject: [PATCH 10/26] Squish: Adapt to changes ui text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I03187ddecb7a5737a87a626135584458795aa633 Reviewed-by: Robert Löhning --- tests/system/shared/debugger.py | 2 +- tests/system/suite_debugger/tst_debug_empty_main/test.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/system/shared/debugger.py b/tests/system/shared/debugger.py index daf67db6aaf..39ef5832eec 100644 --- a/tests/system/shared/debugger.py +++ b/tests/system/shared/debugger.py @@ -84,7 +84,7 @@ def setBreakpointsForCurrentProject(filesAndLines): editor = getEditorForFileSuffix(curFile, True) if not placeCursorToLine(editor, curLine, True): return None - invokeMenuItem("Debug", "Toggle Breakpoint") + invokeMenuItem("Debug", "Enable or Disable Breakpoint") filePath = str(waitForObjectExists(":Qt Creator_FilenameQComboBox").toolTip) breakPointList.append({filePath:lineNumberWithCursor(editor)}) test.log('Set breakpoint in %s' % curFile, curLine) diff --git a/tests/system/suite_debugger/tst_debug_empty_main/test.py b/tests/system/suite_debugger/tst_debug_empty_main/test.py index 3e0e456e921..974c91f8c66 100644 --- a/tests/system/suite_debugger/tst_debug_empty_main/test.py +++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py @@ -111,7 +111,7 @@ def performDebugging(projectName): editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget") placeCursorToLine(editor, "int main.*", True) type(editor, "") - invokeMenuItem("Debug", "Toggle Breakpoint") + invokeMenuItem("Debug", "Enable or Disable Breakpoint") clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton")) handleDebuggerWarnings(config, isMsvc) clickButton(waitForObject(":*Qt Creator.Continue_Core::Internal::FancyToolButton")) From 5cf4510da5509d05d1d638461af6b09a72a55d7d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 15 Mar 2022 15:42:01 +0100 Subject: [PATCH 11/26] Fix context menu of snippet editor The snippet editor is a TextEditorWidget, but the special context menu of that doesn't make sense in the context of the snippet settings. Get the default context menu back. Fixes: QTCREATORBUG-27176 Change-Id: I9681482f83fe32d15be0b1386e2fb26870b955e2 Reviewed-by: Reviewed-by: David Schulz --- src/plugins/texteditor/snippets/snippeteditor.cpp | 5 +++++ src/plugins/texteditor/snippets/snippeteditor.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/plugins/texteditor/snippets/snippeteditor.cpp b/src/plugins/texteditor/snippets/snippeteditor.cpp index 63ca32273a9..01e3757182d 100644 --- a/src/plugins/texteditor/snippets/snippeteditor.cpp +++ b/src/plugins/texteditor/snippets/snippeteditor.cpp @@ -61,4 +61,9 @@ void SnippetEditorWidget::focusOutEvent(QFocusEvent *event) TextEditorWidget::focusOutEvent(event); } +void SnippetEditorWidget::contextMenuEvent(QContextMenuEvent *e) +{ + QPlainTextEdit::contextMenuEvent(e); +} + } // namespace diff --git a/src/plugins/texteditor/snippets/snippeteditor.h b/src/plugins/texteditor/snippets/snippeteditor.h index 8bb972cf685..f422c09bb5f 100644 --- a/src/plugins/texteditor/snippets/snippeteditor.h +++ b/src/plugins/texteditor/snippets/snippeteditor.h @@ -42,6 +42,7 @@ signals: protected: void focusOutEvent(QFocusEvent *event) override; + void contextMenuEvent(QContextMenuEvent *e) override; int extraAreaWidth(int * /* markWidthPtr */ = nullptr) const override { return 0; } }; From cc51e32b2dcde66b5b265c15761c019483737ba4 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 14 Mar 2022 13:17:41 +0100 Subject: [PATCH 12/26] Docker: Add a warning when the mount path list is empty The common use case shares project sources between host and docker container, in that case, not sharing anything will not be useful. Change-Id: I44b12089579ead008023caf5134c613fc145b8c7 Reviewed-by: Christian Stenger Reviewed-by: Eike Ziller Reviewed-by: --- src/plugins/docker/dockerdevice.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 78456c50888..a89eca89c3c 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -362,13 +362,26 @@ public: }); #endif + m_pathsListLabel = new InfoLabel(tr("Paths to mount:")); + // FIXME: 8.0: use + //m_pathsListLabel->setToolTip(tr("Source directory list should not be empty")); + m_pathsListEdit = new PathListEditor; + // FIXME: 8.0: use + //m_pathsListEdit->setPlaceholderText(tr("Host directories to mount into the container")); m_pathsListEdit->setToolTip(tr("Maps paths in this list one-to-one to the " "docker container.")); m_pathsListEdit->setPathList(data.mounts); - connect(m_pathsListEdit, &PathListEditor::changed, this, [dockerDevice, this]() { + auto markupMounts = [this] { + const bool isEmpty = m_pathsListEdit->pathList().isEmpty(); + m_pathsListLabel->setType(isEmpty ? InfoLabel::Warning : InfoLabel::None); + }; + markupMounts(); + + connect(m_pathsListEdit, &PathListEditor::changed, this, [dockerDevice, markupMounts, this] { dockerDevice->setMounts(m_pathsListEdit->pathList()); + markupMounts(); }); auto logView = new QTextBrowser; @@ -384,6 +397,8 @@ public: searchDirsComboBox->addItem(tr("Search in Selected Directories")); auto searchDirsLineEdit = new FancyLineEdit; + // FIXME: 8.0: use + //searchDirsLineEdit->setPlaceholderText(tr("Semicolon-separated list of directories")); searchDirsLineEdit->setToolTip( tr("Select the paths in the docker image that should be scanned for kit entries.")); searchDirsLineEdit->setHistoryCompleter("DockerMounts", true); @@ -438,7 +453,7 @@ public: m_usePathMapping, Break(), #endif Column { - new QLabel(tr("Paths to mount:")), + m_pathsListLabel, m_pathsListEdit, }, Break(), Column { @@ -481,7 +496,8 @@ private: #ifdef ALLOW_LOCAL_ACCESS QCheckBox *m_usePathMapping; #endif - Utils::PathListEditor *m_pathsListEdit; + InfoLabel *m_pathsListLabel; + PathListEditor *m_pathsListEdit; KitDetector m_kitItemDetector; }; From 7607f6dc069bc0547166aec121c599b445a01da9 Mon Sep 17 00:00:00 2001 From: Mats Honkamaa Date: Thu, 10 Mar 2022 10:59:46 +0200 Subject: [PATCH 13/26] Doc: Update presets documentation - Add info about custom presets - Some cleaning up, naming, etc Task-number: QDS-6369 Change-Id: I4c8cd1109111231948c26b04f7706d122e94a9b2 Reviewed-by: Samuel Ghinet Reviewed-by: Leena Miettinen --- .../images/studio-project-wizards.png | Bin 98163 -> 104223 bytes .../components/qtquick-mcu-support.qdocinc | 2 +- .../src/qtdesignstudio-projects.qdoc | 64 ++++++++++++------ .../qtdesignstudio-3d-particles.qdoc | 2 +- 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/doc/qtdesignstudio/images/studio-project-wizards.png b/doc/qtdesignstudio/images/studio-project-wizards.png index a6cd93f15e2c658b45c9640c1b8db6bd8914fcf3..3a329bd16e4742e60e56b170e2b163df74eecf6f 100644 GIT binary patch literal 104223 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 X@y-7h8FMl)Ffe$!`njxgN@xNAB~I1J diff --git a/doc/qtdesignstudio/src/components/qtquick-mcu-support.qdocinc b/doc/qtdesignstudio/src/components/qtquick-mcu-support.qdocinc index 87ed1b95662..4b9608fcf36 100644 --- a/doc/qtdesignstudio/src/components/qtquick-mcu-support.qdocinc +++ b/doc/qtdesignstudio/src/components/qtquick-mcu-support.qdocinc @@ -34,7 +34,7 @@ development. In this manual, we indicate which components are supported at the time of writing. - To develop for MCUs, \l{Using Project Wizards}{create an MCU project}. Only + To develop for MCUs, \l{Creating a Project}{create an MCU project}. Only the components available on MCUs are displayed in \l Components. Only a subset of properties is supported for the supported components. The properties that are not available on MCUs are marked in the \l Properties diff --git a/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc index 96a392322ed..2de6f69cde2 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-projects.qdoc @@ -37,35 +37,27 @@ Creating a project enables you to: \list - \li Group files together + \li Group files together. \li Include \l{UI Files}{UI files} (.ui.qml), component files (.qml), - and assets files - \li Specify settings for previewing UIs + and assets files. + \li Specify settings for previewing UIs. \endlist - Setting up a new project in \QDS is aided by a wizard that guides you - step-by-step through the project creation process. The wizard templates - prompt you to enter the settings needed for a particular type of project - and create the necessary files for you. + Setting up a new project in \QDS is aided by a wizard with a set of + presets that you can choose from. You can adjust project settings and save + custom presets. When you create a project, all necessary files are created. - To test how well your designs work, you can preview the - UIs on the desktop, embedded Linux devices, or Android devices. For more - information, see \l{Validating with Target Hardware}. - - \image studio-project-wizards.png "A list of project wizards" - - You can export designs from other design tools and import them to projects - or create them from scratch using the following wizard presets: + The following presets are available: \table \header \li Category - \li Wizard Preset + \li Preset \li Purpose \row \li Recents \li - \li Lists the most recent presets that you have used. + \li Lists your most recently used presets. \row \li {1,2} General \li Empty @@ -100,15 +92,30 @@ \li Launcher \li Creates a project that uses default components such as rectangles, images, and text, and defines a launcher application. + \row + \li Custom + \li + \li Lists your saved custom presets. + \note This tab is not visible if there are no saved custom presets. \endtable - \section1 Using Project Wizards + \image studio-project-wizards.png "The Create Project wizard" - To create a new project: + To test how well your designs work, you can preview the + UIs on the desktop, embedded Linux devices, or Android devices. For more + information, see \l{Validating with Target Hardware}. + + You can export designs from other design tools and import them to projects. + For more information, see \l{Exporting from Design Tools} and + \l{Importing Designs From Other Design Tools}. + + \section1 Creating a Project + + To create a project: \list 1 \li Select \uicontrol File > \uicontrol {New Project}. - \li In the \uicontrol Presets tab, select a wizard preset. + \li In the \uicontrol Presets tab, select a preset. \li In the \uicontrol Details tab: \list \li Enter a name for the project. Keep in mind that projects @@ -167,9 +174,24 @@ \uicontrol Assets > \inlineimage icons/plus.png . + \section1 Using Custom Presets + + You can save project settings as custom presets. All saved custom presets + are available on the \uicontrol Custom tab in the + \uicontrol {Create Project} wizard. You cannot modify custom presets once + you have created them. + + To create a custom preset: + \list 1 + \li In the \uicontrol {Create Project} wizard, set the details and style + that you want to use. + \li Select \uicontrol {Save Custom Preset} and give a name for the custom + preset. + \endlist + \section1 Adding Files to Projects - You can use wizard templates also to add individual files to projects. + You can use wizard templates to add individual files to projects. The wizard templates in the \uicontrol {Qt Quick Controls} category create stylable versions of the components in the \uicontrol {Qt Quick Controls} diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-particles.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-particles.qdoc index e3561b33346..7f81f8f2de4 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-particles.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-particles.qdoc @@ -130,7 +130,7 @@ \li \l {Textures}{Texture} (four instances) \endlist - We start by creating a \l{Using Project Wizards}{Qt Quick 3D Application} + We start by creating a \l{Creating a Project}{Qt Quick 3D Application} project and adding the assets to it. We then follow the instructions above to add the \uicontrol {Particle System} component instance, which provides us with our first \uicontrol Emitter, \uicontrol {Sprite Particle}, and From 42d7a96a675687c112a072a9fc6a72be6d938c6a Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 9 Mar 2022 12:16:32 +0100 Subject: [PATCH 14/26] Docker: Add some example for boot2qt kit setup Change-Id: Ib4dfc474eee19d7e0f66bf5a76cd6c808df15efc Reviewed-by: Reviewed-by: Samuli Piippo --- tests/manual/docker/boot2qt/build.sh | 124 ++++++++++++++++++++++++++- 1 file changed, 122 insertions(+), 2 deletions(-) diff --git a/tests/manual/docker/boot2qt/build.sh b/tests/manual/docker/boot2qt/build.sh index 9d8c87a8240..7365a4477f3 100755 --- a/tests/manual/docker/boot2qt/build.sh +++ b/tests/manual/docker/boot2qt/build.sh @@ -28,9 +28,15 @@ uid=$(id -u) gid=$(id -g) +repo=b2qt-qemuarm64 +tag=6.0.0 +tcdir=/opt/toolchain +envfile=environment-setup-skylake-64-poky-linux +qtcconf=configure-qtcreator.sh + if [ ! -e toolchain.sh ]; then host=http://ci-files02-hki.intra.qt.io - dir=/packages/jenkins/enterprise/b2qt/yocto/6.2/ + dir=/packages/jenkins/enterprise/b2qt/yocto/dev/intel-skylake-64 file=b2qt-x86_64-meta-toolchain-b2qt-embedded-qt6-sdk-intel-skylake-64.sh curl $host/$dir/$file -o $file || exit 1 ln -s $file toolchain.sh @@ -38,4 +44,118 @@ fi sed -e "s//${uid}/" -e "s//${gid}/" Dockerfile.in > Dockerfile -docker build -f Dockerfile . -t b2qt-qemuarm64:6.0.0 +docker build -f Dockerfile . -t $repo:$tag + + +ABI="x86-linux-poky-elf-64bit" + +OECORE_NATIVE_SYSROOT=/opt/toolchain/sysroots/x86_64-pokysdk-linux +PREFIX="docker://$repo:$tag/opt/toolchain/sysroots/x86_64-pokysdk-linux" + +CC="${PREFIX}/usr/bin/x86_64-poky-linux/x86_64-poky-linux-gcc" +CXX="${PREFIX}/usr/bin/x86_64-poky-linux/x86_64-poky-linux-g++" +GDB="${PREFIX}/usr/bin/x86_64-poky-linux/x86_64-poky-linux-gdb" +QMAKE="${PREFIX}/usr/bin/qmake" +CMAKE="${PREFIX}/usr/bin/cmake" + +SDKTOOL="../../../../libexec/qtcreator/sdktool" + +MACHINE="intel-skylake-64" + +if [ ! -x ${SDKTOOL} ]; then + echo "Cannot find 'sdktool' from QtCreator" + exit 1 +fi + + +#MKSPEC=$(qmake -query QMAKE_XSPEC) +MKSPEC=linux-oe-g++ + +#RELEASE=$(qmake -query QT_VERSION) +RELEASE=$tag + +NAME=${NAME:-"Custom Qt ${RELEASE} ${MACHINE}"} +BASEID="byos.${RELEASE}.${MACHINE}" + +${SDKTOOL} rmKit --id ${BASEID}.kit 2>/dev/null || true +${SDKTOOL} rmQt --id ${BASEID}.qt || true +${SDKTOOL} rmTC --id ProjectExplorer.ToolChain.Gcc:${BASEID}.gcc || true +${SDKTOOL} rmTC --id ProjectExplorer.ToolChain.Gcc:${BASEID}.g++ || true +${SDKTOOL} rmDebugger --id ${BASEID}.gdb 2>/dev/null || true +${SDKTOOL} rmCMake --id ${BASEID}.cmake 2>/dev/null || true +${SDKTOOL} rmDev --id "$repo:$tag" 2>/dev/null || true + +if [ -n "${REMOVEONLY}" ]; then + echo "Kit removed: ${NAME}" + exit 0 +fi + +${SDKTOOL} addAbiFlavor \ + --flavor poky \ + --oses linux 2>/dev/null || true + +${SDKTOOL} addDev \ + --id "$repo:$tag" \ + --type 1 \ + --name "Docker $repo:$tag" \ + --dockerRepo $repo \ + --dockerTag $tag \ + --dockerMappedPaths '/data' \ + --osType DockerDeviceType + +${SDKTOOL} addTC \ + --id "ProjectExplorer.ToolChain.Gcc:${BASEID}.gcc" \ + --name "GCC ${NAME}" \ + --path "${CC}" \ + --abi "${ABI}" \ + --language C + +${SDKTOOL} addTC \ + --id "ProjectExplorer.ToolChain.Gcc:${BASEID}.g++" \ + --name "G++ ${NAME}" \ + --path "${CXX}" \ + --abi "${ABI}" \ + --language Cxx + +${SDKTOOL} addDebugger \ + --id "${BASEID}.gdb" \ + --name "GDB ${NAME}" \ + --engine 1 \ + --binary "${GDB}" \ + --abis "${ABI}" + +${SDKTOOL} addQt \ + --id "${BASEID}.qt" \ + --name "${NAME}" \ + --type "Qdb.EmbeddedLinuxQt" \ + --qmake ${QMAKE} \ + --abis "${ABI}" + +${SDKTOOL} addCMake \ + --id "${BASEID}.cmake" \ + --name "CMake ${NAME}" \ + --path ${CMAKE} + +${SDKTOOL} addKit \ + --id "${BASEID}.kit" \ + --name "${NAME}" \ + --qt "${BASEID}.qt" \ + --debuggerid "${BASEID}.gdb" \ + --sysroot "docker://$repo:$tag/opt/toolchain/sysroots/skylake-64-poky-linux" \ + --devicetype "DockerDeviceType" \ + --device "$repo:$tag" \ + --builddevice "$repo:$tag" \ + --Ctoolchain "ProjectExplorer.ToolChain.Gcc:${BASEID}.gcc" \ + --Cxxtoolchain "ProjectExplorer.ToolChain.Gcc:${BASEID}.g++" \ + --icon ":/boot2qt/images/B2Qt_QtC_icon.png" \ + --mkspec "" \ + --cmake "${BASEID}.cmake" \ + --cmake-config "CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}" \ + --cmake-config "CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}" \ + --cmake-config "CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}" \ + --cmake-config "QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}" \ + --cmake-config "CMAKE_TOOLCHAIN_FILE:FILEPATH=${OECORE_NATIVE_SYSROOT}/usr/lib/cmake/Qt6/qt.toolchain.cmake" \ + --cmake-config "CMAKE_MAKE_PROGRAM:FILEPATH=ninja" \ + --cmake-generator "Ninja" + +echo "Configured Qt Creator with new kit: ${NAME}" From f43348c4f28b43ec38de1606675a1a3551640370 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 15 Mar 2022 15:34:22 +0100 Subject: [PATCH 15/26] Squish: More corrections due to change of default build system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia221e1e84784f5218d14258fcc24dcac900d60ad Reviewed-by: Robert Löhning --- tests/system/objects.map | 4 --- tests/system/shared/build_utils.py | 28 +++++++++++++------ tests/system/shared/debugger.py | 20 +++++++++++-- tests/system/suite_APTW/tst_APTW03/test.py | 4 +-- .../tst_debug_empty_main/test.py | 2 +- .../suite_debugger/tst_simple_debug/test.py | 4 +-- 6 files changed, 42 insertions(+), 20 deletions(-) diff --git a/tests/system/objects.map b/tests/system/objects.map index a222860aadc..074fc19ae7e 100644 --- a/tests/system/objects.map +++ b/tests/system/objects.map @@ -22,7 +22,6 @@ :Add Bookmark_BookmarkDialog {name='BookmarkDialog' type='BookmarkDialog' visible='1' windowTitle='Add Bookmark'} :Add to Version Control.No_QPushButton {text='No' type='QPushButton' unnamed='1' visible='1' window=':Add to Version Control_QMessageBox'} :Add to Version Control_QMessageBox {text~='Add the file.*to version control (.*)?' type='QMessageBox' unnamed='1' visible='1'} -:Additional arguments:_QWidget {buddy=':Qt Creator.Additional arguments:_QLabel' type='QWidget' unnamed='1' visible='1'} :Analyzer Toolbar.AnalyzerManagerToolBox_QComboBox {container=':DebugModeWidget.Toolbar_QDockWidget' name='PerspectiveChooser' type='QComboBox' visible='1'} :Analyzer Toolbar.Clear_QToolButton {container=':DebugModeWidget.Toolbar_QDockWidget' toolTip='Discard data' type='QToolButton' unnamed='1' visible='1'} :Analyzer Toolbar.Elapsed:_QLabel {container=':DebugModeWidget.Toolbar_QDockWidget' text~='Elapsed: \\\\d+.\\\\d s' type='QLabel' unnamed='1' visible='1'} @@ -118,15 +117,12 @@ :QML Debugging.No_QPushButton {text='No' type='QPushButton' unnamed='1' visible='1' window=':QML Debugging_QMessageBox'} :QML Debugging_QMessageBox {text='The option will only take effect if the project is recompiled. Do you want to recompile now?' type='QMessageBox' unnamed='1' visible='1'} :Qt Creator.Add Bookmark_QToolButton {text='Add Bookmark' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} -:Qt Creator.Additional arguments:_QLabel {text='Additional arguments:' type='QLabel' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.CloseDoc_QToolButton {toolTip?='Close Document *' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.CloseFind_QToolButton {name='close' type='QToolButton' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.Compile Output_Core::OutputWindow {type='Core::OutputWindow' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Compile Output'} :Qt Creator.Configure Project_QPushButton {text='Configure Project' type='QPushButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.DebugModeWidget_QSplitter {name='DebugModeWidget' type='QSplitter' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.DragDoc_QToolButton {toolTip='Drag to drag documents between splits' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} -:Qt Creator.Effective qmake call:_QLabel {text='Effective qmake call:' type='QLabel' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} -:Qt Creator.Effective qmake call:_QTextEdit {aboveWidget=':Additional arguments:_QWidget' leftWidget=':Qt Creator.Effective qmake call:_QLabel' type='QTextEdit' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.Events_QDockWidget {name='QmlProfiler.Statistics.DockDockWidget' type='QDockWidget' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.Events_QTabBar {aboveWidget=':Qt Creator.Events_QDockWidget' type='QTabBar' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'} :Qt Creator.Issues_QListView {type='QListView' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Issues'} diff --git a/tests/system/shared/build_utils.py b/tests/system/shared/build_utils.py index f74bea0df10..a58a1fa93d7 100644 --- a/tests/system/shared/build_utils.py +++ b/tests/system/shared/build_utils.py @@ -163,13 +163,17 @@ def selectBuildConfig(wantedKit, configName, afterSwitchTo=ViewConstants.EDIT): test.warning("Don't know where you trying to switch to (%s)" % afterSwitchTo) # This will not trigger a rebuild. If needed, caller has to do this. -def verifyBuildConfig(currentTarget, configName, shouldBeDebug=False, enableShadowBuild=False, enableQmlDebug=False): +def verifyBuildConfig(currentTarget, configName, shouldBeDebug=False, enableShadowBuild=False, + enableQmlDebug=False, buildSystem=None): selectBuildConfig(currentTarget, configName, None) ensureChecked(waitForObject(":scrollArea.Details_Utils::DetailsButton")) - ensureChecked("{leftWidget={text='Shadow build:' type='QLabel' unnamed='1' visible='1' " - "window=':Qt Creator_Core::Internal::MainWindow'} " - "type='QCheckBox' unnamed='1' visible='1' " - "window=':Qt Creator_Core::Internal::MainWindow'}", enableShadowBuild) + + if buildSystem == "qmake": + ensureChecked("{leftWidget={text='Shadow build:' type='QLabel' unnamed='1' visible='1' " + "window=':Qt Creator_Core::Internal::MainWindow'} " + "type='QCheckBox' unnamed='1' visible='1' " + "window=':Qt Creator_Core::Internal::MainWindow'}", enableShadowBuild) + buildCfCombo = waitForObject("{leftWidget=':scrollArea.Edit build configuration:_QLabel' " "type='QComboBox' unnamed='1' visible='1'}") if shouldBeDebug: @@ -184,11 +188,15 @@ def verifyBuildConfig(currentTarget, configName, shouldBeDebug=False, enableShad pass # Since waitForObject waits for the object to be enabled, # it will wait here until compilation of the debug libraries has finished. + runCMakeButton = ("{type='QPushButton' text='Run CMake' unnamed='1' " + "window=':Qt Creator_Core::Internal::MainWindow'}") if currentTarget not in (Targets.DESKTOP_4_8_7_DEFAULT, Targets.EMBEDDED_LINUX): qmlDebuggingCombo = findObject(':Qt Creator.QML debugging and profiling:_QComboBox') if selectFromCombo(qmlDebuggingCombo, 'Enable'): - # Don't rebuild now - clickButton(waitForObject(":QML Debugging.No_QPushButton", 5000)) + if buildSystem is None or buildSystem == "CMake": # re-run cmake to apply + clickButton(waitForObject(runCMakeButton)) + elif buildSystem == "qmake": # Don't rebuild now + clickButton(waitForObject(":QML Debugging.No_QPushButton", 5000)) try: problemFound = waitForObject("{window=':Qt Creator_Core::Internal::MainWindow' " "type='QLabel' name='problemLabel' visible='1'}", 1000) @@ -201,8 +209,10 @@ def verifyBuildConfig(currentTarget, configName, shouldBeDebug=False, enableShad qmlDebuggingCombo = findObject(':Qt Creator.QML debugging and profiling:_QComboBox') if selectFromCombo(qmlDebuggingCombo, "Disable"): test.log("Qml debugging libraries are available - unchecked qml debugging.") - # Don't rebuild now - clickButton(waitForObject(":QML Debugging.No_QPushButton", 5000)) + if buildSystem is None or buildSystem == "CMake": # re-run cmake to apply + clickButton(waitForObject(runCMakeButton)) + elif buildSystem == "qmake": # Don't rebuild now + clickButton(waitForObject(":QML Debugging.No_QPushButton", 5000)) clickButton(waitForObject(":scrollArea.Details_Utils::DetailsButton")) switchViewTo(ViewConstants.EDIT) diff --git a/tests/system/shared/debugger.py b/tests/system/shared/debugger.py index 39ef5832eec..39b184146e4 100644 --- a/tests/system/shared/debugger.py +++ b/tests/system/shared/debugger.py @@ -175,8 +175,24 @@ def doSimpleDebugging(currentKit, currentConfigName, expectedBPOrder=[], enableQ def isMsvcConfig(currentKit): switchViewTo(ViewConstants.PROJECTS) switchToBuildOrRunSettingsFor(currentKit, ProjectSettings.BUILD) - clickButton(waitForObject(":scrollArea.Details_Utils::DetailsButton")) - isMsvc = " -spec win32-msvc" in str(waitForObject(":Qt Creator.Effective qmake call:_QTextEdit").plainText) + + waitForObject(":Projects.ProjectNavigationTreeView") + bAndRIndex = getQModelIndexStr("text='Build & Run'", ":Projects.ProjectNavigationTreeView") + wantedKitName = Targets.getStringForTarget(currentKit) + wantedKitIndexString = getQModelIndexStr("text='%s'" % wantedKitName, bAndRIndex) + if not test.verify(__kitIsActivated__(findObject(wantedKitIndexString)), + "Verifying target '%s' is enabled." % wantedKitName): + raise Exception("Kit '%s' is not activated in the project." % wantedKitName) + index = waitForObject(wantedKitIndexString) + toolTip = str(index.data(Qt.ToolTipRole).toString()) + compilerPattern = re.compile("Compiler:(?P.+)") + match = compilerPattern.search(toolTip) + if match is None: + test.warning("UI seems to have changed - failed to check for compiler.") + return False + + compiler = str(match.group("compiler")) + isMsvc = compiler.startswith("MSVC") or compiler.startswith("Microsoft Visual C") switchViewTo(ViewConstants.EDIT) return isMsvc diff --git a/tests/system/suite_APTW/tst_APTW03/test.py b/tests/system/suite_APTW/tst_APTW03/test.py index 735073f2152..e18b67ea978 100644 --- a/tests/system/suite_APTW/tst_APTW03/test.py +++ b/tests/system/suite_APTW/tst_APTW03/test.py @@ -67,7 +67,7 @@ def checkSimpleCppLib(projectName, static): Targets.desktopTargetClasses(), static, buildSystem="qmake") for kit, config in iterateBuildConfigs("Release"): - verifyBuildConfig(kit, config, False, True) + verifyBuildConfig(kit, config, False, True, buildSystem="qmake") invokeMenuItem('Build', 'Build Project "%s"' % projectName) waitForCompile(10000) checkCompile() @@ -91,7 +91,7 @@ def main(): buildSystem="qmake") virtualFunctionsAdded = False for kit, config in iterateBuildConfigs("Debug"): - verifyBuildConfig(kit, config, True, True) + verifyBuildConfig(kit, config, True, True, buildSystem="qmake") invokeMenuItem('Build', 'Build Project "%s"' % projectName) waitForCompile(10000) if not virtualFunctionsAdded: diff --git a/tests/system/suite_debugger/tst_debug_empty_main/test.py b/tests/system/suite_debugger/tst_debug_empty_main/test.py index 974c91f8c66..4a2bd938288 100644 --- a/tests/system/suite_debugger/tst_debug_empty_main/test.py +++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py @@ -98,7 +98,7 @@ def __handleAppOutputWaitForDebuggerFinish__(): def performDebugging(projectName): for kit, config in iterateBuildConfigs("Debug"): test.log("Selecting '%s' as build config" % config) - verifyBuildConfig(kit, config, True, True) + verifyBuildConfig(kit, config, True, True, buildSystem="qmake") waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton") selectFromLocator("t rebuild", "Rebuild (Rebuild All Projects)") waitForCompile() diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py index 7237e00aae0..8c9c71a8fc2 100644 --- a/tests/system/suite_debugger/tst_simple_debug/test.py +++ b/tests/system/suite_debugger/tst_simple_debug/test.py @@ -44,8 +44,8 @@ def main(): 'onTriggered: console.log("Break here")']) invokeMenuItem("File", "Save All") filesAndLines = [ - { "%s.Sources.main\\.cpp" % projectName : "QQmlApplicationEngine engine;" }, - { "%s.Resources.qml\.qrc./.main\\.qml" % projectName : 'onTriggered.*' } + { "%s.%s.Source Files.main\\.cpp" % (projectName, projectName) : "QQmlApplicationEngine engine;" }, + { "%s.%s.qml\.qrc./.main\\.qml" % (projectName, projectName) : 'onTriggered.*' } ] test.log("Setting breakpoints") expectedBreakpointsOrder = setBreakpointsForCurrentProject(filesAndLines) From 36f18487d91552d97e4ad40ed3caab3cae9ffdfb Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 10 Mar 2022 11:52:32 +0100 Subject: [PATCH 16/26] LSP: Fix workspace folder change capabilities Change-Id: I096dd26744acbb0296b1731403c05903209770d8 Reviewed-by: Christian Stenger Reviewed-by: Qt CI Bot --- src/libs/languageserverprotocol/servercapabilities.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/languageserverprotocol/servercapabilities.cpp b/src/libs/languageserverprotocol/servercapabilities.cpp index 4a15153bd77..125972567d0 100644 --- a/src/libs/languageserverprotocol/servercapabilities.cpp +++ b/src/libs/languageserverprotocol/servercapabilities.cpp @@ -282,11 +282,11 @@ Utils::optional > ServerCapabilities::WorkspaceServerCapabilities::WorkspaceFoldersCapabilities::changeNotifications() const { using RetType = Utils::variant; - const QJsonValue &provider = value(implementationProviderKey); - if (provider.isUndefined()) + const QJsonValue &change = value(changeNotificationsKey); + if (change.isUndefined()) return Utils::nullopt; - return Utils::make_optional(provider.isBool() ? RetType(provider.toBool()) - : RetType(provider.toString())); + return Utils::make_optional(change.isBool() ? RetType(change.toBool()) + : RetType(change.toString())); } void ServerCapabilities::WorkspaceServerCapabilities::WorkspaceFoldersCapabilities::setChangeNotifications( From 9976f938e8f0a43d62746c2972d54a77120d43ac Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 15 Mar 2022 16:43:44 +0100 Subject: [PATCH 17/26] fix warning qtcreator/src/libs/utils/tooltip/tips.cpp:91:31: warning: suggest braces around initialization of subobject [-Wmissing-braces] } qt_meta_stringdata = { 8, sizeof("QTipLabel"), "QTipLabel" }; ^~~~~~~~~~~~~~~~~~~~~~ { } 1 warning generated. Change-Id: Ic9672543a16be9cf02316efd379344a26567f5e0 Reviewed-by: Reviewed-by: Eike Ziller --- src/libs/utils/tooltip/tips.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/tooltip/tips.cpp b/src/libs/utils/tooltip/tips.cpp index 2a1f4f8093f..e8c3cae6df6 100644 --- a/src/libs/utils/tooltip/tips.cpp +++ b/src/libs/utils/tooltip/tips.cpp @@ -88,7 +88,7 @@ const QMetaObject *TipLabel::metaObject() const struct qt_meta_stringdata_Utils_t { const uint offsetsAndSize[2]; char stringdata0[24]; - } qt_meta_stringdata = { 8, sizeof("QTipLabel"), "QTipLabel" }; + } qt_meta_stringdata = { {8, sizeof("QTipLabel")}, "QTipLabel" }; static const QMetaObject tipMetaObject { &QLabel::staticMetaObject, // SuperData superdata From bed1d5dbf508d5ba62ce4f20c325c0004e9d6cdc Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Mar 2022 14:40:49 +0100 Subject: [PATCH 18/26] QmlDesigner: Fix cmake template for Android Task-number: QDS-6420 Change-Id: Iac4286b20d763debef082b48e266da121c43ff4b Reviewed-by: Thomas Hartmann --- .../studio_templates/projects/common/CMakeLists.main.txt.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl index 6221e10ea61..a9e002ccfe2 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl @@ -6,7 +6,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 COMPONENTS Gui Qml Quick) -add_executable(%{ProjectExecutableName} src/main.cpp) +qt_add_executable(%{ProjectExecutableName} src/main.cpp) qt_add_resources(%{ProjectExecutableName} "configuration" PREFIX "/" From 12923a433fc1962c70dff7401e4e520b1fe9bbc1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Mar 2022 14:54:27 +0100 Subject: [PATCH 19/26] QmlDesigner: Add App postfix to project name in cmakelists.txt Change-Id: Idae3a257ce8b93b7f172fe4a64d548cde54ab7ef Reviewed-by: Thomas Hartmann --- .../studio_templates/projects/common/CMakeLists.main.txt.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl index a9e002ccfe2..f105c83c553 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/common/CMakeLists.main.txt.tpl @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.18) -project(%{ProjectName} LANGUAGES CXX) +project(%{ProjectName}App LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) From 51b51f882615b2dab3d190411b2e0ff3db136d26 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Mar 2022 13:54:29 +0100 Subject: [PATCH 20/26] QmlDesigner: Fix crash Fix raise condition when the global metainfo is initialized Task-number: QDS-6429 Change-Id: I9cbeaecb440855f44b469dae5a3ef41c9ae7d8a8 Reviewed-by: Brook Cronin Reviewed-by: Tim Jenssen Reviewed-by: --- src/plugins/qmldesigner/qmldesignerplugin.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 8b35c6f917c..d23575a8395 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -330,6 +330,8 @@ bool QmlDesignerPlugin::delayedInitialize() Core::ICore::appendAboutInformation(tr("Licensee: %1").arg(licensee())); } + MetaInfo::global(); + return true; } From e9074792d2c0bcb1c3e46cf0cd05113b532d7ba7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 16 Mar 2022 14:20:43 +0100 Subject: [PATCH 21/26] QmlDesigner: Add mutex Creating models can trigger this initialization potentially from multiple threads. Task-number: QDS-6429 Change-Id: I1e9f715c150e37e6381c3f4e94fe6de1aaec7556 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp index 14f1982b72d..c49a8c5035b 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp @@ -32,9 +32,9 @@ #include #include "pluginmanager/widgetpluginmanager.h" - #include #include +#include enum { debug = false @@ -107,6 +107,7 @@ void MetaInfoPrivate::parseItemLibraryDescriptions() using QmlDesigner::Internal::MetaInfoPrivate; MetaInfo MetaInfo::s_global; +QMutex s_lock; QStringList MetaInfo::s_pluginDirs; @@ -157,6 +158,8 @@ ItemLibraryInfo *MetaInfo::itemLibraryInfo() const */ MetaInfo MetaInfo::global() { + QMutexLocker locker(&s_lock); + if (!s_global.m_p->m_isInitialized) { s_global.m_p = QSharedPointer(new MetaInfoPrivate(&s_global)); s_global.m_p->initialize(); From 66c5b1e11e1f80c4113bea940302ea79926a0c13 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 4 Mar 2022 13:44:20 +0100 Subject: [PATCH 22/26] RemoteLinux: Avoid unexpected password dialog in tests Make the test depend on environment variables and give some hint how to run the test correctly. Beside this make the test work on Windows and share the setup with ssh unit test. Change-Id: I6bbf1ec863449512646ca2c51d13fec537beedbc Reviewed-by: hjk --- src/libs/ssh/ssh.qbs | 8 +- src/libs/ssh/sshconnection.cpp | 91 ++++++++++++++++++ src/libs/ssh/sshconnection.h | 13 +++ .../remotelinux/filesystemaccess_test.cpp | 47 ++++++---- .../remotelinux/filesystemaccess_test.h | 1 + tests/auto/ssh/CMakeLists.txt | 1 + tests/auto/ssh/ssh.qbs | 1 + tests/auto/ssh/tst_ssh.cpp | 93 ++++--------------- 8 files changed, 163 insertions(+), 92 deletions(-) diff --git a/src/libs/ssh/ssh.qbs b/src/libs/ssh/ssh.qbs index 36c69c7ee72..cd306d0c4a3 100644 --- a/src/libs/ssh/ssh.qbs +++ b/src/libs/ssh/ssh.qbs @@ -4,7 +4,13 @@ Project { name: "QtcSsh" QtcLibrary { - cpp.defines: base.concat("QTCSSH_LIBRARY") + cpp.defines: { + var defines = base; + defines.push("QTCSSH_LIBRARY"); + if (project.withAutotests && !defines.contains("WITH_TESTS")) + defines.push("WITH_TESTS"); + return defines; + } cpp.enableExceptions: true Depends { name: "Qt"; submodules: ["widgets", "network" ] } diff --git a/src/libs/ssh/sshconnection.cpp b/src/libs/ssh/sshconnection.cpp index 5f8134e1c9a..839ee2d5431 100644 --- a/src/libs/ssh/sshconnection.cpp +++ b/src/libs/ssh/sshconnection.cpp @@ -403,4 +403,95 @@ SftpTransferPtr SshConnection::setupTransfer( d->connectionArgs(SshSettings::sftpFilePath()))); } +#ifdef WITH_TESTS +namespace SshTest { +const QString getHostFromEnvironment() +{ + const QString host = QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_HOST")); + if (host.isEmpty() && qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) + return QString("127.0.0.1"); + return host; +} + +quint16 getPortFromEnvironment() +{ + const int port = qEnvironmentVariableIntValue("QTC_SSH_TEST_PORT"); + return port != 0 ? quint16(port) : 22; +} + +const QString getUserFromEnvironment() +{ + return QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_USER")); +} + +const QString getKeyFileFromEnvironment() +{ + const FilePath defaultKeyFile = FileUtils::homePath() / ".ssh/id_rsa"; + const QString keyFile = QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_KEYFILE")); + if (keyFile.isEmpty()) { + if (qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) + return defaultKeyFile.toString(); + } + return keyFile; +} + +const QString userAtHost() +{ + QString userMidFix = getUserFromEnvironment(); + if (!userMidFix.isEmpty()) + userMidFix.append('@'); + return userMidFix + getHostFromEnvironment(); +} + +SshConnectionParameters getParameters() +{ + SshConnectionParameters params; + if (!qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) { + params.setUserName(getUserFromEnvironment()); + params.privateKeyFile = Utils::FilePath::fromUserInput(getKeyFileFromEnvironment()); + } + params.setHost(getHostFromEnvironment()); + params.setPort(getPortFromEnvironment()); + params.timeout = 10; + params.authenticationType = !params.privateKeyFile.isEmpty() + ? QSsh::SshConnectionParameters::AuthenticationTypeSpecificKey + : QSsh::SshConnectionParameters::AuthenticationTypeAll; + return params; +} + +bool checkParameters(const QSsh::SshConnectionParameters ¶ms) +{ + if (qEnvironmentVariableIsSet("QTC_SSH_TEST_DEFAULTS")) + return true; + if (params.host().isEmpty()) { + qWarning("No hostname provided. Set QTC_SSH_TEST_HOST."); + return false; + } + if (params.userName().isEmpty()) + qWarning("No user name provided - test may fail with empty default. Set QTC_SSH_TEST_USER."); + if (params.privateKeyFile.isEmpty()) { + qWarning("No key file provided. Set QTC_SSH_TEST_KEYFILE."); + return false; + } + return true; +} + +void printSetupHelp() +{ + qInfo() << "In order to run this test properly it requires some setup (example for fedora):\n" + "1. Run a server on the host to connect to:\n" + " systemctl start sshd\n" + "2. Create your own ssh key (needed only once). For fedora it needs ecdsa type:\n" + " ssh-keygen -t ecdsa\n" + "3. Make your public key known to the server (needed only once):\n" + " ssh-copy-id -i [full path to your public key] [user@host]\n" + "4. Set the env variables before executing test:\n" + " QTC_SSH_TEST_HOST=127.0.0.1\n" + " QTC_SSH_TEST_KEYFILE=[full path to your private key]\n" + " QTC_SSH_TEST_USER=[your user name]\n"; +} + +} // namespace SshTest +#endif + } // namespace QSsh diff --git a/src/libs/ssh/sshconnection.h b/src/libs/ssh/sshconnection.h index 381bd463c91..a559fc13163 100644 --- a/src/libs/ssh/sshconnection.h +++ b/src/libs/ssh/sshconnection.h @@ -142,6 +142,19 @@ private: SshConnectionPrivate * const d; }; +#ifdef WITH_TESTS +namespace SshTest { +const QString QSSH_EXPORT getHostFromEnvironment(); +quint16 QSSH_EXPORT getPortFromEnvironment(); +const QString QSSH_EXPORT getUserFromEnvironment(); +const QString QSSH_EXPORT getKeyFileFromEnvironment(); +const QSSH_EXPORT QString userAtHost(); +SshConnectionParameters QSSH_EXPORT getParameters(); +bool QSSH_EXPORT checkParameters(const SshConnectionParameters ¶ms); +void QSSH_EXPORT printSetupHelp(); +} // namespace SshTest +#endif + } // namespace QSsh Q_DECLARE_METATYPE(QSsh::SshConnectionParameters::AuthenticationType) diff --git a/src/plugins/remotelinux/filesystemaccess_test.cpp b/src/plugins/remotelinux/filesystemaccess_test.cpp index 2c95a5ca81b..1cf68a056c7 100644 --- a/src/plugins/remotelinux/filesystemaccess_test.cpp +++ b/src/plugins/remotelinux/filesystemaccess_test.cpp @@ -41,10 +41,12 @@ using namespace Utils; namespace RemoteLinux { namespace Internal { -static const char TEST_IP[] = "127.0.0.1"; static const char TEST_DIR[] = "/tmp/testdir"; -static const FilePath baseFilePath = FilePath::fromString("ssh://" + QString(TEST_IP) - + QString(TEST_DIR)); + +static const FilePath baseFilePath() +{ + return FilePath::fromString("ssh://" + QSsh::SshTest::userAtHost() + QString(TEST_DIR)); +} TestLinuxDeviceFactory::TestLinuxDeviceFactory() : IDeviceFactory("test") @@ -54,11 +56,9 @@ TestLinuxDeviceFactory::TestLinuxDeviceFactory() setConstructionFunction(&LinuxDevice::create); setCreator([] { LinuxDevice::Ptr newDev = LinuxDevice::create(); - qDebug() << "device : " << newDev->type(); newDev->setType("test"); - QSsh::SshConnectionParameters sshParams = newDev->sshParameters(); - sshParams.setHost(TEST_IP); - sshParams.setPort(22); + qDebug() << "device : " << newDev->type(); + QSsh::SshConnectionParameters sshParams = QSsh::SshTest::getParameters(); newDev->setSshParameters(sshParams); return newDev; }); @@ -66,15 +66,28 @@ TestLinuxDeviceFactory::TestLinuxDeviceFactory() FilePath createFile(const QString &name) { - FilePath testFilePath = baseFilePath / name; - FilePath dummyFilePath = FilePath::fromString("ssh://" + QString(TEST_IP) + "/dev/null"); + FilePath testFilePath = baseFilePath() / name; + FilePath dummyFilePath = FilePath::fromString("ssh://" + QSsh::SshTest::userAtHost() + "/dev/null"); dummyFilePath.copyFile(testFilePath); return testFilePath; } void FileSystemAccessTest::initTestCase() { - FilePath filePath = baseFilePath; + const QSsh::SshConnectionParameters params = QSsh::SshTest::getParameters(); + qDebug() << "Using following SSH parameter:" + << "\nHost:" << params.host() + << "\nPort:" << params.port() + << "\nUser:" << params.userName() + << "\nSSHKey:" << params.privateKeyFile; + if (!QSsh::SshTest::checkParameters(params)) { + m_skippedAtWhole = true; + QSsh::SshTest::printSetupHelp(); + QSKIP("Ensure you have added your default ssh public key to your own authorized keys and " + "environment QTC_REMOTELINUX_SSH_DEFAULTS set or follow setup help above."); + return; + } + FilePath filePath = baseFilePath(); if (DeviceManager::deviceForPath(filePath) == nullptr) { DeviceManager *const devMgr = DeviceManager::instance(); @@ -87,13 +100,15 @@ void FileSystemAccessTest::initTestCase() void FileSystemAccessTest::cleanupTestCase() { - QVERIFY(baseFilePath.exists()); - QVERIFY(baseFilePath.removeRecursively()); + if (m_skippedAtWhole) // no need to clean up either + return; + QVERIFY(baseFilePath().exists()); + QVERIFY(baseFilePath().removeRecursively()); } void FileSystemAccessTest::testDirStatuses() { - FilePath filePath = baseFilePath; + FilePath filePath = baseFilePath(); QVERIFY(filePath.exists()); QVERIFY(filePath.isDir()); QVERIFY(filePath.isWritableDir()); @@ -120,7 +135,7 @@ void FileSystemAccessTest::testDirStatuses() void FileSystemAccessTest::testBytesAvailable() { - FilePath testFilePath = FilePath::fromString("ssh://" + QString(TEST_IP) + "/tmp"); + FilePath testFilePath = FilePath::fromString("ssh://" + QSsh::SshTest::userAtHost() + "/tmp"); QVERIFY(testFilePath.exists()); QVERIFY(testFilePath.bytesAvailable() > 0); } @@ -143,9 +158,9 @@ void FileSystemAccessTest::testFileActions() // ToDo: remove ".contains", make fileContents exact equal content QVERIFY(testFilePath.fileContents().contains(content)); - QVERIFY(testFilePath.renameFile(baseFilePath / "test1")); + QVERIFY(testFilePath.renameFile(baseFilePath() / "test1")); // It is Ok that FilePath doesn't change itself after rename. - FilePath newTestFilePath = baseFilePath / "test1"; + FilePath newTestFilePath = baseFilePath() / "test1"; QVERIFY(newTestFilePath.exists()); QVERIFY(!testFilePath.removeFile()); QVERIFY(newTestFilePath.exists()); diff --git a/src/plugins/remotelinux/filesystemaccess_test.h b/src/plugins/remotelinux/filesystemaccess_test.h index 4b43e202d44..7dacd1ae936 100644 --- a/src/plugins/remotelinux/filesystemaccess_test.h +++ b/src/plugins/remotelinux/filesystemaccess_test.h @@ -53,6 +53,7 @@ private slots: private: TestLinuxDeviceFactory m_testLinuxDeviceFactory; + bool m_skippedAtWhole = false; }; } // Internal diff --git a/tests/auto/ssh/CMakeLists.txt b/tests/auto/ssh/CMakeLists.txt index 2156e6d59aa..8dd1915805f 100644 --- a/tests/auto/ssh/CMakeLists.txt +++ b/tests/auto/ssh/CMakeLists.txt @@ -3,6 +3,7 @@ file(RELATIVE_PATH TEST_RELATIVE_LIBEXEC_PATH "/${RELATIVE_TEST_PATH}" "/${IDE_L add_qtc_test(tst_ssh DEFINES "TEST_RELATIVE_LIBEXEC_PATH=\"${TEST_RELATIVE_LIBEXEC_PATH}\"" + WITH_TESTS DEPENDS Utils QtcSsh SOURCES tst_ssh.cpp ) diff --git a/tests/auto/ssh/ssh.qbs b/tests/auto/ssh/ssh.qbs index 3f513cca778..c4f4fe38c09 100644 --- a/tests/auto/ssh/ssh.qbs +++ b/tests/auto/ssh/ssh.qbs @@ -11,6 +11,7 @@ QtcAutotest { qtc.ide_libexec_path); var relLibExecPath = FileInfo.relativePath(destinationDirectory, absLibExecPath); defines.push('TEST_RELATIVE_LIBEXEC_PATH="' + relLibExecPath + '"'); + defines.push("WITH_TESTS"); return defines; } } diff --git a/tests/auto/ssh/tst_ssh.cpp b/tests/auto/ssh/tst_ssh.cpp index b4cf76a6911..df26047d5bd 100644 --- a/tests/auto/ssh/tst_ssh.cpp +++ b/tests/auto/ssh/tst_ssh.cpp @@ -47,73 +47,8 @@ #include -/* -In order to run this test properly it requires some setup (example for fedora): -1. Run a server: - systemctl start sshd -2. Create your own ssh key (needed only once). For fedora it needs ecdsa type: - ssh-keygen -t ecdsa -3. Make your public key known to the server (needed only once): - ssh-copy-id -i [full path to your public key] -4. Set the env variables before executing test: - QTC_SSH_TEST_HOST=127.0.0.1 - QTC_SSH_TEST_KEYFILE=[full path to your private key] - QTC_SSH_TEST_USER=[your user name] -*/ using namespace QSsh; -static QString getHostFromEnvironment() -{ - return QString::fromLocal8Bit(qgetenv("QTC_SSH_TEST_HOST")); -} - -static const char *portVar() { return "QTC_SSH_TEST_PORT"; } -static const char *userVar() { return "QTC_SSH_TEST_USER"; } -static const char *keyFileVar() { return "QTC_SSH_TEST_KEYFILE"; } - -static quint16 getPortFromEnvironment() -{ - const int port = qEnvironmentVariableIntValue(portVar()); - return port != 0 ? quint16(port) : 22; -} - -static QString getUserFromEnvironment() -{ - return QString::fromLocal8Bit(qgetenv(userVar())); -} - -static QString getKeyFileFromEnvironment() -{ - return QString::fromLocal8Bit(qgetenv(keyFileVar())); -} - -static SshConnectionParameters getParameters() -{ - SshConnectionParameters params; - params.setHost(getHostFromEnvironment()); - params.setPort(getPortFromEnvironment()); - params.setUserName(getUserFromEnvironment()); - params.timeout = 10; - params.privateKeyFile = Utils::FilePath::fromUserInput(getKeyFileFromEnvironment()); - params.authenticationType = !params.privateKeyFile.isEmpty() - ? SshConnectionParameters::AuthenticationTypeSpecificKey - : SshConnectionParameters::AuthenticationTypeAll; - return params; -} - -#define CHECK_PARAMS(params) \ - do { \ - if (params.host().isEmpty()) { \ - QSKIP("No hostname provided. Set QTC_SSH_TEST_HOST."); \ - } \ - if (params.userName().isEmpty()) \ - QSKIP(qPrintable(QString::fromLatin1("No user name provided. Set %1.") \ - .arg(QString::fromUtf8(userVar())))); \ - if (params.privateKeyFile.isEmpty()) \ - QSKIP(qPrintable(QString::fromLatin1("No key file provided. Set %1.") \ - .arg(QString::fromUtf8(keyFileVar())))); \ - } while (false) - class tst_Ssh : public QObject { Q_OBJECT @@ -137,6 +72,10 @@ private: void tst_Ssh::initTestCase() { + const SshConnectionParameters params = SshTest::getParameters(); + if (!SshTest::checkParameters(params)) + SshTest::printSetupHelp(); + Utils::LauncherInterface::setPathToLauncher(qApp->applicationDirPath() + '/' + QLatin1String(TEST_RELATIVE_LIBEXEC_PATH)); Utils::TemporaryDirectory::setMasterTemporaryDirectory(QDir::tempPath() @@ -154,10 +93,10 @@ void tst_Ssh::errorHandling_data() QTest::newRow("no host") << QString("hgdfxgfhgxfhxgfchxgcf") << quint16(12345) << SshConnectionParameters::AuthenticationTypeAll << QString("egal") << QString(); - const QString theHost = getHostFromEnvironment(); + const QString theHost = SshTest::getHostFromEnvironment(); if (theHost.isEmpty()) return; - const quint16 thePort = getPortFromEnvironment(); + const quint16 thePort = SshTest::getPortFromEnvironment(); QTest::newRow("non-existing key file") << theHost << thePort << SshConnectionParameters::AuthenticationTypeSpecificKey << QString("root") << QString("somefilenamethatwedontexpecttocontainavalidkey"); @@ -228,8 +167,9 @@ void tst_Ssh::remoteProcess_data() void tst_Ssh::remoteProcess() { - const SshConnectionParameters params = getParameters(); - CHECK_PARAMS(params); + const SshConnectionParameters params = SshTest::getParameters(); + if (!SshTest::checkParameters(params)) + QSKIP("Insufficient setup - set QTC_SSH_TEST_* variables."); QFETCH(QByteArray, commandLine); QFETCH(bool, isBlocking); @@ -287,8 +227,9 @@ void tst_Ssh::remoteProcess() void tst_Ssh::remoteProcessChannels() { - const SshConnectionParameters params = getParameters(); - CHECK_PARAMS(params); + const SshConnectionParameters params = SshTest::getParameters(); + if (!SshTest::checkParameters(params)) + QSKIP("Insufficient setup - set QTC_SSH_TEST_* variables."); SshConnection connection(params); QVERIFY(waitForConnection(connection)); @@ -325,8 +266,9 @@ void tst_Ssh::remoteProcessChannels() void tst_Ssh::remoteProcessInput() { - const SshConnectionParameters params = getParameters(); - CHECK_PARAMS(params); + const SshConnectionParameters params = SshTest::getParameters(); + if (!SshTest::checkParameters(params)) + QSKIP("Insufficient setup - set QTC_SSH_TEST_* variables."); SshConnection connection(params); QVERIFY(waitForConnection(connection)); @@ -369,8 +311,9 @@ void tst_Ssh::remoteProcessInput() void tst_Ssh::sftp() { // Connect to server - const SshConnectionParameters params = getParameters(); - CHECK_PARAMS(params); + const SshConnectionParameters params = SshTest::getParameters(); + if (!SshTest::checkParameters(params)) + QSKIP("Insufficient setup - set QTC_SSH_TEST_* variables."); SshConnection connection(params); QVERIFY(waitForConnection(connection)); From c170e4fa57c23cb0bf18459c02d1d5a9d7a3abe9 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Mon, 28 Feb 2022 14:46:58 +0100 Subject: [PATCH 23/26] Android: Use const & in a range-based for loop Change-Id: Ib769d5133383ed30717e479107b6a74c53b72a58 Reviewed-by: Assam Boudjelthia Reviewed-by: --- src/plugins/android/androiddevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index fbecdc14033..4c550ef643b 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -630,7 +630,7 @@ void AndroidDeviceManager::HandleAvdsListChange() } QVector connectedDevs; - for (auto item : m_avdsFutureWatcher.result()) { + for (const AndroidDeviceInfo &item : m_avdsFutureWatcher.result()) { const Utils::Id deviceId = AndroidDevice::idFromDeviceInfo(item); const QString displayName = AndroidDevice::displayNameFromInfo(item); IDevice::ConstPtr dev = devMgr->find(deviceId); From 25d70414ab382dae557527e053ba30fbd89f00d4 Mon Sep 17 00:00:00 2001 From: David Faure Date: Wed, 16 Mar 2022 10:29:27 +0100 Subject: [PATCH 24/26] Improve item model templates * Add missing "return true" in insert/remove Rows/Columns * Use C++11 syntax for a vector of ints containing just "role" * Make items not only editable, but also enabled+selectable, as expected by default Change-Id: I8ed529d2534a495f2c924906fe51ada474f9347e Reviewed-by: Reviewed-by: Eike Ziller --- .../templates/wizards/classes/itemmodel/itemmodel.cpp | 8 ++++++-- .../templates/wizards/classes/itemmodel/listmodel.cpp | 6 ++++-- .../templates/wizards/classes/itemmodel/tablemodel.cpp | 8 ++++++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/share/qtcreator/templates/wizards/classes/itemmodel/itemmodel.cpp b/share/qtcreator/templates/wizards/classes/itemmodel/itemmodel.cpp index 4a438f48e49..71f9074a69b 100644 --- a/share/qtcreator/templates/wizards/classes/itemmodel/itemmodel.cpp +++ b/share/qtcreator/templates/wizards/classes/itemmodel/itemmodel.cpp @@ -84,7 +84,7 @@ bool %{CN}::setData(const QModelIndex &index, const QVariant &value, int role) { if (data(index, role) != value) { // FIXME: Implement me! - emit dataChanged(index, index, QVector() << role); + emit dataChanged(index, index, {role}); return true; } return false; @@ -95,7 +95,7 @@ Qt::ItemFlags %{CN}::flags(const QModelIndex &index) const if (!index.isValid()) return Qt::NoItemFlags; - return Qt::ItemIsEditable; // FIXME: Implement me! + return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; // FIXME: Implement me! } @endif @if %{AddData} @@ -105,6 +105,7 @@ bool %{CN}::insertRows(int row, int count, const QModelIndex &parent) beginInsertRows(parent, row, row + count - 1); // FIXME: Implement me! endInsertRows(); + return true; } bool %{CN}::insertColumns(int column, int count, const QModelIndex &parent) @@ -112,6 +113,7 @@ bool %{CN}::insertColumns(int column, int count, const QModelIndex &parent) beginInsertColumns(parent, column, column + count - 1); // FIXME: Implement me! endInsertColumns(); + return true; } @endif @if %{RemoveData} @@ -121,6 +123,7 @@ bool %{CN}::removeRows(int row, int count, const QModelIndex &parent) beginRemoveRows(parent, row, row + count - 1); // FIXME: Implement me! endRemoveRows(); + return true; } bool %{CN}::removeColumns(int column, int count, const QModelIndex &parent) @@ -128,6 +131,7 @@ bool %{CN}::removeColumns(int column, int count, const QModelIndex &parent) beginRemoveColumns(parent, column, column + count - 1); // FIXME: Implement me! endRemoveColumns(); + return true; } @endif %{JS: Cpp.closeNamespaces('%{Class}')}\ diff --git a/share/qtcreator/templates/wizards/classes/itemmodel/listmodel.cpp b/share/qtcreator/templates/wizards/classes/itemmodel/listmodel.cpp index 921267d015d..9b08462ef4e 100644 --- a/share/qtcreator/templates/wizards/classes/itemmodel/listmodel.cpp +++ b/share/qtcreator/templates/wizards/classes/itemmodel/listmodel.cpp @@ -68,7 +68,7 @@ bool %{CN}::setData(const QModelIndex &index, const QVariant &value, int role) { if (data(index, role) != value) { // FIXME: Implement me! - emit dataChanged(index, index, QVector() << role); + emit dataChanged(index, index, {role}); return true; } return false; @@ -79,7 +79,7 @@ Qt::ItemFlags %{CN}::flags(const QModelIndex &index) const if (!index.isValid()) return Qt::NoItemFlags; - return Qt::ItemIsEditable; // FIXME: Implement me! + return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; // FIXME: Implement me! } @endif @if %{AddData} @@ -89,6 +89,7 @@ bool %{CN}::insertRows(int row, int count, const QModelIndex &parent) beginInsertRows(parent, row, row + count - 1); // FIXME: Implement me! endInsertRows(); + return true; } @endif @if %{RemoveData} @@ -98,6 +99,7 @@ bool %{CN}::removeRows(int row, int count, const QModelIndex &parent) beginRemoveRows(parent, row, row + count - 1); // FIXME: Implement me! endRemoveRows(); + return true; } @endif %{JS: Cpp.closeNamespaces('%{Class}')}\ diff --git a/share/qtcreator/templates/wizards/classes/itemmodel/tablemodel.cpp b/share/qtcreator/templates/wizards/classes/itemmodel/tablemodel.cpp index e8c71f18bb9..794510501fa 100644 --- a/share/qtcreator/templates/wizards/classes/itemmodel/tablemodel.cpp +++ b/share/qtcreator/templates/wizards/classes/itemmodel/tablemodel.cpp @@ -75,7 +75,7 @@ bool %{CN}::setData(const QModelIndex &index, const QVariant &value, int role) { if (data(index, role) != value) { // FIXME: Implement me! - emit dataChanged(index, index, QVector() << role); + emit dataChanged(index, index, {role}); return true; } return false; @@ -86,7 +86,7 @@ Qt::ItemFlags %{CN}::flags(const QModelIndex &index) const if (!index.isValid()) return Qt::NoItemFlags; - return Qt::ItemIsEditable; // FIXME: Implement me! + return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; // FIXME: Implement me! } @endif @if %{AddData} @@ -96,6 +96,7 @@ bool %{CN}::insertRows(int row, int count, const QModelIndex &parent) beginInsertRows(parent, row, row + count - 1); // FIXME: Implement me! endInsertRows(); + return true; } bool %{CN}::insertColumns(int column, int count, const QModelIndex &parent) @@ -103,6 +104,7 @@ bool %{CN}::insertColumns(int column, int count, const QModelIndex &parent) beginInsertColumns(parent, column, column + count - 1); // FIXME: Implement me! endInsertColumns(); + return true; } @endif @if %{RemoveData} @@ -112,6 +114,7 @@ bool %{CN}::removeRows(int row, int count, const QModelIndex &parent) beginRemoveRows(parent, row, row + count - 1); // FIXME: Implement me! endRemoveRows(); + return true; } bool %{CN}::removeColumns(int column, int count, const QModelIndex &parent) @@ -119,6 +122,7 @@ bool %{CN}::removeColumns(int column, int count, const QModelIndex &parent) beginRemoveColumns(parent, column, column + count - 1); // FIXME: Implement me! endRemoveColumns(); + return true; } @endif %{JS: Cpp.closeNamespaces('%{Class}')}\ From a42b63ac05bddd5fe12a9fadea883fa12bdcc849 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 16 Mar 2022 13:08:19 +0100 Subject: [PATCH 25/26] Squish: Build speedcrunch with Qt5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1fe79d6775b157fda26248917c9489edca88fd53 Reviewed-by: Robert Löhning --- tests/system/shared/project.py | 6 ++---- tests/system/suite_general/tst_build_speedcrunch/test.py | 5 +---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index e0b79316b81..16570424b03 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -69,10 +69,8 @@ def openCmakeProject(projectPath, buildDir): invokeMenuItem("File", "Open File or Project...") selectFromFileDialog(projectPath) __chooseTargets__([]) # uncheck all - targetToChoose = Targets.DESKTOP_4_8_7_DEFAULT # FIXME make the intended target a parameter - if not qt4Available: - targetToChoose = Targets.DESKTOP_5_14_1_DEFAULT - __chooseTargets__([targetToChoose], additionalFunc=additionalFunction) + # FIXME make the intended target a parameter + __chooseTargets__([Targets.DESKTOP_5_14_1_DEFAULT], additionalFunc=additionalFunction) clickButton(waitForObject(":Qt Creator.Configure Project_QPushButton")) return True diff --git a/tests/system/suite_general/tst_build_speedcrunch/test.py b/tests/system/suite_general/tst_build_speedcrunch/test.py index e98a9b0e9a5..3ebed1b67e8 100644 --- a/tests/system/suite_general/tst_build_speedcrunch/test.py +++ b/tests/system/suite_general/tst_build_speedcrunch/test.py @@ -41,10 +41,7 @@ def main(): startQC() if not startedWithoutPluginError(): return - targetToChoose = Targets.DESKTOP_4_8_7_DEFAULT - if not qt4Available: - targetToChoose = Targets.DESKTOP_5_14_1_DEFAULT - openQmakeProject(SpeedCrunchPath, [targetToChoose]) + openQmakeProject(SpeedCrunchPath, [Targets.DESKTOP_5_14_1_DEFAULT]) waitForProjectParsing() fancyToolButton = waitForObject(":*Qt Creator_Core::Internal::FancyToolButton") From 976653cd9382ce0d7fac35b6c2f5b51feba7cd1c Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 16 Mar 2022 18:43:40 +0100 Subject: [PATCH 26/26] QmlProjectManager: fix crash Fixes: QTCREATORBUG-27190 Change-Id: I188930f6e5cca5d32a91e9c6ce8ca6a798273bf2 Reviewed-by: Eike Ziller --- src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index 17cce6402f8..bc7b6f3bde9 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -210,7 +210,7 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage) QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); - if (!editor) + if (!editor || !modelManager) return; if (d->lastMessageBox)