From 08d16332f25082bed6d5bdfb77ce9aae27097866 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 26 Jun 2020 11:59:14 +0200 Subject: [PATCH 01/23] ProjectExplorer: Do not activate kits via right click ... in the target selector. When requesting the kit context menu by right-clicking, we get extra mouse events on Windows that activate the kit, which is annoying to users. Suppress these events. Fixes: QTCREATORBUG-24156 Change-Id: I8a5de927634dfdfafb54d265ab31763c6120a527 Reviewed-by: David Schulz --- src/plugins/projectexplorer/projectwindow.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 41c719c9f75..e5ddfc4233b 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -48,6 +48,7 @@ #include #include +#include #include #include #include @@ -341,11 +342,31 @@ public: setContextMenuPolicy(Qt::CustomContextMenu); } +private: // remove branch indicators void drawBranches(QPainter *, const QRect &, const QModelIndex &) const final { return; } + + bool userWantsContextMenu(const QMouseEvent *e) const + { + // On Windows, we get additional mouse events for the item view when right-clicking, + // causing unwanted kit activation (QTCREATORBUG-24156). Let's suppress these. + return HostOsInfo::isWindowsHost() && e->button() == Qt::RightButton; + } + + void mousePressEvent(QMouseEvent *e) + { + if (!userWantsContextMenu(e)) + BaseTreeView::mousePressEvent(e); + } + + void mouseReleaseEvent(QMouseEvent *e) + { + if (!userWantsContextMenu(e)) + BaseTreeView::mouseReleaseEvent(e); + } }; class ComboBoxItem : public TreeItem From 34963768c03d5d4a0727f66cc0879182ce5f8ad1 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 18 May 2020 18:58:32 +0300 Subject: [PATCH 02/23] Android: move non UI functions from settingsWidget class Change-Id: I2d6c6806fc8b219b65d241a0243ee1edab5125a1 Reviewed-by: Alessandro Portale --- src/plugins/android/androidconfigurations.cpp | 44 +++++++++++++++ src/plugins/android/androidconfigurations.h | 3 + src/plugins/android/androidsettingswidget.cpp | 55 ++----------------- 3 files changed, 52 insertions(+), 50 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index cf1d2a7ae66..66dff2254b5 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -73,6 +73,7 @@ #include #include #include +#include #include #include #include @@ -964,6 +965,27 @@ QStringList AndroidConfig::allEssentials() const return allPackages; } +bool AndroidConfig::allEssentialsInstalled() +{ + QStringList essentialPkgs(allEssentials()); + for (const AndroidSdkPackage *pkg : + AndroidConfigurations::sdkManager()->installedSdkPackages()) { + if (essentialPkgs.contains(pkg->sdkStylePath())) + essentialPkgs.removeOne(pkg->sdkStylePath()); + if (essentialPkgs.isEmpty()) + break; + } + return essentialPkgs.isEmpty() ? true : false; +} + +bool AndroidConfig::sdkToolsOk() const +{ + bool exists = sdkLocation().exists(); + bool writable = sdkLocation().isWritablePath(); + bool sdkToolsExist = !sdkToolsVersion().isNull(); + return exists && writable && sdkToolsExist; +} + QStringList AndroidConfig::essentialsFromQtVersion(const BaseQtVersion &version) const { QtVersionNumber qtVersion = version.qtVersion(); @@ -1070,6 +1092,28 @@ void AndroidConfig::setAutomaticKitCreation(bool b) m_automaticKitCreation = b; } +FilePath AndroidConfig::defaultSdkPath() +{ + QString sdkFromEnvVar = QString::fromLocal8Bit(getenv("ANDROID_SDK_ROOT")); + if (!sdkFromEnvVar.isEmpty()) + return Utils::FilePath::fromString(sdkFromEnvVar); + + // Set default path of SDK as used by Android Studio + if (Utils::HostOsInfo::isMacHost()) { + return Utils::FilePath::fromString( + QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + + "/../Android/sdk"); + } + + if (Utils::HostOsInfo::isWindowsHost()) { + return Utils::FilePath::fromString( + QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/Android/sdk"); + } + + return Utils::FilePath::fromString( + QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Android/Sdk"); +} + /////////////////////////////////// // AndroidConfigurations /////////////////////////////////// diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 0f0cca2ddab..24e26309a04 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -134,6 +134,8 @@ public: QStringList defaultEssentials() const; QStringList essentialsFromQtVersion(const QtSupport::BaseQtVersion &version) const; QStringList allEssentials() const; + bool allEssentialsInstalled(); + bool sdkToolsOk() const; Utils::FilePath openJDKLocation() const; void setOpenJDKLocation(const Utils::FilePath &openJDKLocation); @@ -150,6 +152,7 @@ public: bool automaticKitCreation() const; void setAutomaticKitCreation(bool b); + static Utils::FilePath defaultSdkPath(); Utils::FilePath adbToolPath() const; Utils::FilePath androidToolPath() const; Utils::FilePath emulatorToolPath() const; diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index b5aa0455897..2f03ec9fb84 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -102,6 +102,8 @@ public: private: void apply() final { AndroidConfigurations::setConfig(m_androidConfig); } + void showEvent(QShowEvent *event) override; + void validateJdk(); void validateNdk(); void updateNdkList(); @@ -127,10 +129,6 @@ private: void disableAvdControls(); void downloadSdk(); - bool allEssentialsInstalled(); - bool sdkToolsOk() const; - FilePath getDefaultSdkPath() const; - void showEvent(QShowEvent *event) final; void addCustomNdkItem(); void validateOpenSsl(); @@ -293,28 +291,6 @@ AvdModel::AvdModel() setHeader({tr("AVD Name"), tr("API"), tr("CPU/ABI"), tr("Device type"), tr("Target"), tr("SD-card size")}); } -FilePath AndroidSettingsWidget::getDefaultSdkPath() const -{ - QString sdkFromEnvVar = QString::fromLocal8Bit(getenv("ANDROID_SDK_ROOT")); - if (!sdkFromEnvVar.isEmpty()) - return FilePath::fromString(sdkFromEnvVar); - - // Set default path of SDK as used by Android Studio - if (HostOsInfo::isMacHost()) { - return FilePath::fromString( - QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) - + "/../Android/sdk"); - } - - if (HostOsInfo::isWindowsHost()) { - return FilePath::fromString( - QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Android/sdk"); - } - - return FilePath::fromString( - QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Android/Sdk"); -} - void AndroidSettingsWidget::showEvent(QShowEvent *event) { Q_UNUSED(event) @@ -437,7 +413,7 @@ AndroidSettingsWidget::AndroidSettingsWidget() FilePath currentSDKPath = m_androidConfig.sdkLocation(); if (currentSDKPath.isEmpty()) - currentSDKPath = getDefaultSdkPath(); + currentSDKPath = AndroidConfig::defaultSdkPath(); m_ui.SDKLocationPathChooser->setFilePath(currentSDKPath); m_ui.SDKLocationPathChooser->setPromptDialogTitle(tr("Select Android SDK folder")); @@ -651,9 +627,7 @@ void AndroidSettingsWidget::validateSdk() // after AndroidSdkManager::packageReloadFinished. m_androidSummary->setPointValid(PlatformSdkInstalledRow, !m_sdkManager.installedSdkPlatforms().isEmpty()); - - m_androidSummary->setPointValid(AllEssentialsInstalledRow, allEssentialsInstalled()); - + m_androidSummary->setPointValid(AllEssentialsInstalledRow, m_androidConfig.allEssentialsInstalled()); updateUI(); const bool sdkToolsOk = m_androidSummary->rowsOk({SdkPathExistsRow, @@ -868,7 +842,7 @@ void AndroidSettingsWidget::updateUI() void AndroidSettingsWidget::downloadSdk() { - if (sdkToolsOk()) { + if (m_androidConfig.sdkToolsOk()) { QMessageBox::warning(this, AndroidSdkDownloader::dialogTitle(), tr("The selected path already has a valid SDK Tools package.")); validateSdk(); @@ -888,25 +862,6 @@ void AndroidSettingsWidget::downloadSdk() } } -bool AndroidSettingsWidget::allEssentialsInstalled() -{ - QStringList essentialPkgs = m_androidConfig.allEssentials(); - for (const AndroidSdkPackage *pkg : m_sdkManager.installedSdkPackages()) { - essentialPkgs.removeOne(pkg->sdkStylePath()); - if (essentialPkgs.isEmpty()) - break; - } - return essentialPkgs.isEmpty() ? true : false; -} - -bool AndroidSettingsWidget::sdkToolsOk() const -{ - bool exists = m_androidConfig.sdkLocation().exists(); - bool writable = m_androidConfig.sdkLocation().isWritablePath(); - bool sdkToolsExist = !m_androidConfig.sdkToolsVersion().isNull(); - return exists && writable && sdkToolsExist; -} - // AndroidSettingsPage AndroidSettingsPage::AndroidSettingsPage() From 1c8b9e3d48b1fd2b37640473523ab38192f4cb17 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 29 Jun 2020 10:14:03 +0200 Subject: [PATCH 03/23] QmlDesigner: Fix qbs build Change-Id: I6abaeebf4bb37bc676ecea6d34bd9484b09054a7 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/qmldesignerplugin.qbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index 8d649a0f8f5..6ff406e8979 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -861,9 +861,10 @@ Project { "transitioneditor/transitioneditorpropertyitem.h", "transitioneditor/transitioneditorsettingsdialog.cpp", "transitioneditor/transitioneditorsettingsdialog.h", - "transitioneditor/transitioneditorsettingsdialog.ui" + "transitioneditor/transitioneditorsettingsdialog.ui", "transitioneditor/transitionform.cpp", "transitioneditor/transitionform.h", + "transitioneditor/transitionform.ui", "transitioneditor/transitioneditor.qrc" ] } From 8a2cb794b938fa2e4a620f8649a0305f444645ce Mon Sep 17 00:00:00 2001 From: Alexis Jeandet Date: Wed, 24 Jun 2020 09:44:55 +0200 Subject: [PATCH 04/23] Meson: fix broken project tree on windows Change-Id: I88d0e5b6f1547d5fa6fe832d26bafee59e535a4b Reviewed-by: Christian Kandeler --- .../mesoninfoparser/target.h | 31 ++++++++++--------- .../project/mesonprojectparser.cpp | 17 +++++----- .../project/projecttree/projecttree.cpp | 10 +++--- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser/target.h b/src/plugins/mesonprojectmanager/mesoninfoparser/target.h index a0cbaaef66d..8e8d5853133 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser/target.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser/target.h @@ -23,14 +23,21 @@ ** ****************************************************************************/ #pragma once +#include #include #include +#include #include #include namespace MesonProjectManager { namespace Internal { +inline QStringList cleanPath(QStringList &&paths) +{ + return Utils::transform(paths, QDir::cleanPath); +} + struct Target { enum class Type { @@ -58,8 +65,8 @@ struct Target : language{std::move(language)} , compiler{std::move(compiler)} , parameters{std::move(parameters)} - , sources{std::move(sources)} - , generatedSources{std::move(generatedSources)} + , sources{cleanPath(std::move(sources))} + , generatedSources{cleanPath(std::move(generatedSources))} {} }; using SourceGroupList = std::vector; @@ -71,17 +78,13 @@ struct Target const Utils::optional subproject; const SourceGroupList sources; - static inline QString fullName(const Target &target) + static inline QString fullName(const Utils::FilePath &srcDir, const Target &target) { - // TODO, this is bad, might be moved in a place where src dir is known - if (target.fileName.first().startsWith("/")) { - auto fname = target.fileName.first().split('/'); - auto definedIn = target.definedIn.split('/'); - definedIn.pop_back(); - int i = std::min(definedIn.length(), fname.length()) - 1; - for (; i >= 0 && fname[i] == definedIn[i]; --i) - ; - return fname.mid(i + 1).join("/"); + using namespace Utils; + if (FileUtils::isAbsolutePath(target.fileName.first())) { + const auto fname = target.fileName.first().split('/').last(); + QString definedIn = FilePath::fromString(target.definedIn).absolutePath().toString(); + return definedIn.remove(srcDir.toString()) + '/' + fname; } else { return target.fileName.first(); } @@ -116,8 +119,8 @@ struct Target : type{toType(type)} , name{std::move(name)} , id{std::move(id)} - , definedIn{std::move(definedIn)} - , fileName{std::move(fileName)} + , definedIn{QDir::cleanPath(definedIn)} + , fileName{cleanPath(std::move(fileName))} , subproject{subproject.isNull() ? Utils::nullopt : Utils::optional{std::move(subproject)}} , sources{std::move(sources)} diff --git a/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp b/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp index 56d9c0bcebb..d062b2c1f04 100644 --- a/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp +++ b/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp @@ -98,7 +98,7 @@ QStringList toAbsolutePath(const Utils::FilePath &refPath, QStringList &pathList std::cend(pathList), std::back_inserter(allAbs), [refPath](const QString &path) { - if (path.startsWith("/")) + if (Utils::FileUtils::isAbsolutePath(path)) return path; return refPath.pathAppended(path).toString(); }); @@ -200,11 +200,11 @@ QList MesonProjectParser::appsTargets() const QList apps; std::for_each(std::cbegin(m_parserResult.targets), std::cend(m_parserResult.targets), - [&apps](const Target &target) { + [&apps, &srcDir = m_srcDir](const Target &target) { if (target.type == Target::Type::executable) { ProjectExplorer::BuildTargetInfo bti; bti.displayName = target.name; - bti.buildKey = Target::fullName(target); + bti.buildKey = Target::fullName(srcDir, target); bti.displayNameUniquifier = bti.buildKey; bti.targetFilePath = Utils::FilePath::fromString(target.fileName.first()); bti.workingDirectory @@ -260,10 +260,9 @@ void MesonProjectParser::update(const QFuture m_parserResult = std::move(parserData->data); m_rootNode = std::move(parserData->rootNode); m_targetsNames.clear(); - std::transform(std::cbegin(m_parserResult.targets), - std::cend(m_parserResult.targets), - std::back_inserter(m_targetsNames), - Target::fullName); + for (const Target &target : m_parserResult.targets) { + m_targetsNames.push_back(Target::fullName(m_srcDir, target)); + } addMissingTargets(m_targetsNames); m_targetsNames.sort(); delete data; @@ -278,11 +277,11 @@ ProjectExplorer::RawProjectPart MesonProjectParser::buildRawPart( { ProjectExplorer::RawProjectPart part; part.setDisplayName(target.name); - part.setBuildSystemTarget(Target::fullName(target)); + part.setBuildSystemTarget(Target::fullName(m_srcDir, target)); part.setFiles(sources.sources + sources.generatedSources); auto flags = splitArgs(sources.parameters); part.setMacros(flags.macros); - part.setIncludePaths(toAbsolutePath(this->m_buildDir, flags.includePaths)); + part.setIncludePaths(toAbsolutePath(m_buildDir, flags.includePaths)); part.setProjectFileLocation(target.definedIn); if (sources.language == "cpp") part.setFlagsForCxx({cxxToolChain, flags.args}); diff --git a/src/plugins/mesonprojectmanager/project/projecttree/projecttree.cpp b/src/plugins/mesonprojectmanager/project/projecttree/projecttree.cpp index 4842ba45037..bb572c00093 100644 --- a/src/plugins/mesonprojectmanager/project/projecttree/projecttree.cpp +++ b/src/plugins/mesonprojectmanager/project/projecttree/projecttree.cpp @@ -42,14 +42,14 @@ void buildTargetTree(std::unique_ptr &root, const Target &targ void addTargetNode(std::unique_ptr &root, const Target &target) { - root->findNode([&target, path = Utils::FilePath::fromString(target.definedIn)]( + root->findNode([&root, &target, path = Utils::FilePath::fromString(target.definedIn)]( ProjectExplorer::Node *node) { if (node->filePath() == path.absolutePath()) { auto asFolder = dynamic_cast(node); if (asFolder) { - auto targetNode = std::make_unique(path.absolutePath().pathAppended( - target.name), - Target::fullName(target)); + auto targetNode = std::make_unique( + path.absolutePath().pathAppended(target.name), + Target::fullName(Utils::FilePath::fromString(root->path()), target)); targetNode->setDisplayName(target.name); asFolder->addNode(std::move(targetNode)); } @@ -84,7 +84,7 @@ std::unique_ptr ProjectTree::buildTree(const Utils::FilePath & addTargetNode(root, target); }); for (Utils::FilePath bsFile : bsFiles) { - if (!bsFile.startsWith("/")) + if (!bsFile.toFileInfo().isAbsolute()) bsFile = srcDir.pathAppended(bsFile.toString()); root->addNestedNode( std::make_unique(bsFile, ProjectExplorer::FileType::Project)); From 7ab00c4e9434a109db01854ef3a9dda5d3920818 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 26 Jun 2020 19:22:06 +0200 Subject: [PATCH 05/23] QmlDesigner: Fix crash Change-Id: I67c2a97e44c2bdc6973c2a3d3cbc222c46b1c461 Reviewed-by: Miikka Heikkinen --- src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp index b14059a81b3..0efa621e68a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp @@ -508,6 +508,9 @@ QVector getObjectTypes(const ObjectValue *objectValue, const Conte if (isValueType(property.second)) { const Value *dotValue = objectValue->lookupMember(nameAsString, context); + if (!dotValue) + continue; + if (const Reference *ref = dotValue->asReference()) dotValue = context->lookupReference(ref); From ba942583b8d33a09807fb7496cadcf92b726839d Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 29 Jun 2020 12:29:31 +0300 Subject: [PATCH 06/23] QmlDesigner: Update 3D edit view on state change Change-Id: I56b16afe4d9ccab802d6e07f60b57e46a353cc26 Fixes: QDS-2378 Reviewed-by: Mahmoud Badri --- .../instances/qt5informationnodeinstanceserver.cpp | 7 +++++++ .../instances/qt5informationnodeinstanceserver.h | 1 + 2 files changed, 8 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 4fe5058adce..abed28978ee 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -1261,6 +1261,13 @@ void Qt5InformationNodeInstanceServer::changeIds(const ChangeIdsCommand &command } } +void Qt5InformationNodeInstanceServer::changeState(const ChangeStateCommand &command) +{ + Qt5NodeInstanceServer::changeState(command); + + render3DEditView(); +} + // update 3D view size when it changes in creator side void Qt5InformationNodeInstanceServer::update3DViewState(const Update3dViewStateCommand &command) { diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h index 20a1c22da02..40668da55d6 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h @@ -62,6 +62,7 @@ public: void changeAuxiliaryValues(const ChangeAuxiliaryCommand &command) override; void changePropertyBindings(const ChangeBindingsCommand &command) override; void changeIds(const ChangeIdsCommand &command) override; + void changeState(const ChangeStateCommand &command) override; private slots: void handleSelectionChanged(const QVariant &objs); From 85bcae2c38bbaefa571d29deb8c3122fa3aea788 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 26 Jun 2020 17:49:28 +0300 Subject: [PATCH 07/23] QmlDesigner: Handle active scene id change properly on edit 3D view The scene id shown on the corner of edit 3D view is updated and toolstates are also stored under the new id. Change-Id: Ib3ac2f2bb829a5d908e22932c313c76bd4143592 Fixes: QDS-2277 Reviewed-by: Thomas Hartmann Reviewed-by: Mahmoud Badri --- .../qml/qmlpuppet/mockfiles/EditView3D.qml | 8 ++++++++ .../qt5informationnodeinstanceserver.cpp | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml index 22b8b0675aa..643b377e8b3 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml @@ -141,6 +141,14 @@ Item { _generalHelper.enableItemUpdate(editView, (scene && scene === activeScene)); } + function handleActiveSceneIdChange(newId) + { + if (sceneId !== newId) { + sceneId = newId; + storeCurrentToolStates(); + } + } + function fitToView() { if (editView) { diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index abed28978ee..2a2c7fce8fa 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -1253,12 +1253,26 @@ void Qt5InformationNodeInstanceServer::changeIds(const ChangeIdsCommand &command { Qt5NodeInstanceServer::changeIds(command); +#ifdef QUICK3D_MODULE + ServerNodeInstance sceneInstance = active3DSceneInstance(); if (m_active3DSceneUpdatePending) { - ServerNodeInstance sceneInstance = active3DSceneInstance(); const QString sceneId = sceneInstance.id(); if (!sceneId.isEmpty()) updateActiveSceneToEditView3D(); + } else { + qint32 sceneInstanceId = sceneInstance.instanceId(); + const QVector ids = command.ids(); + for (const auto &id : ids) { + if (sceneInstanceId == id.instanceId()) { + QMetaObject::invokeMethod(m_editView3DRootItem, "handleActiveSceneIdChange", + Qt::QueuedConnection, + Q_ARG(QVariant, QVariant(sceneInstance.id()))); + render3DEditView(); + break; + } + } } +#endif } void Qt5InformationNodeInstanceServer::changeState(const ChangeStateCommand &command) From 28c6457b8cbb992542d559bc3897646458fbe245 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 29 Jun 2020 13:35:36 +0300 Subject: [PATCH 08/23] QmlDesigner: Change style of connection view Style updated according to UX specification (QDS-2201). Change-Id: Id1bf1fec0a5f0e742c1f5146d905800b53ed5125 Fixes: QDS-2437 Reviewed-by: Mahmoud Badri --- .../connectioneditor/connectionviewwidget.ui | 12 ------------ .../components/connectioneditor/stylesheet.css | 5 ++--- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.ui b/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.ui index 1828811abf4..e1839f581e5 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.ui +++ b/src/plugins/qmldesigner/components/connectioneditor/connectionviewwidget.ui @@ -81,9 +81,6 @@ 0 - - true - QAbstractItemView::SingleSelection @@ -128,9 +125,6 @@ - - true - QAbstractItemView::SingleSelection @@ -175,9 +169,6 @@ - - true - QAbstractItemView::SingleSelection @@ -222,9 +213,6 @@ - - true - QAbstractItemView::SingleSelection diff --git a/src/plugins/qmldesigner/components/connectioneditor/stylesheet.css b/src/plugins/qmldesigner/components/connectioneditor/stylesheet.css index 5155ac3efac..879d089f9fd 100644 --- a/src/plugins/qmldesigner/components/connectioneditor/stylesheet.css +++ b/src/plugins/qmldesigner/components/connectioneditor/stylesheet.css @@ -38,10 +38,9 @@ QTableView::item:selected QHeaderView::section { background-color: #494949; - padding: 4px; - border: 1px solid black; + border: 0px; color: creatorTheme.DStextColor; - margin: 2px + margin-right: 1px } QTableView { From 38ded4ffeaea725215a693eb0da1aacbc386cde7 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 29 Jun 2020 16:24:07 +0300 Subject: [PATCH 09/23] QmlDesigner: Turn the 3D edit light on initially for lightless scenes Change-Id: Ib840adec751604f08b5135b3e3088b7ce663685a Fixes: QDS-2316 Reviewed-by: Mahmoud Badri --- .../qml/qmlpuppet/mockfiles/EditView3D.qml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml index 643b377e8b3..efbfcd56421 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml @@ -107,10 +107,22 @@ Item { if (createEditView()) { if (activeScene) { var toolStates = _generalHelper.getToolStates(sceneId); - if (Object.keys(toolStates).length > 0) + if (Object.keys(toolStates).length > 0) { updateToolStates(toolStates, true); - else + } else { + // Don't inherit the edit light state from the previous scene, but rather + // turn the edit light on for scenes that do not have any scene + // lights, and turn it off for scenes that have. + var hasSceneLight = false; + for (var i = 0; i < lightIconGizmos.length; ++i) { + if (lightIconGizmos[i].scene === activeScene) { + hasSceneLight = true; + break; + } + } + showEditLight = !hasSceneLight; storeCurrentToolStates(); + } } else { // When active scene is deleted, this function gets called by object deletion // handlers without going through setActiveScene, so make sure sceneId is cleared. From bce43c15af4f36521ce6aa1f1e51abaccaa0de0a Mon Sep 17 00:00:00 2001 From: Alexis Jeandet Date: Wed, 24 Jun 2020 00:39:16 +0200 Subject: [PATCH 10/23] Meson: Trivial fix for tests Meson sample folder was renamed without updating tests. Change-Id: I95b984b6d18a43e0f570368b76b669376fff4f0e Reviewed-by: Orgad Shaneh --- src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp | 2 +- src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp b/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp index 03922a34552..70893a7c3fb 100644 --- a/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp +++ b/src/plugins/mesonprojectmanager/tests/testmesoninfoparser.cpp @@ -44,7 +44,7 @@ struct projectData namespace { static const QList projectList{ - {"Simple C Project", "SimpleCProject", {"SimpleCProject"}}}; + {"Simple C Project", "simplecproject", {"SimpleCProject"}}}; } // namespace #define WITH_CONFIGURED_PROJECT(_source_dir, _build_dir, ...) \ diff --git a/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp b/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp index d3c5284ea6d..5e1cb3b4afa 100644 --- a/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp +++ b/src/plugins/mesonprojectmanager/tests/testmesonwrapper.cpp @@ -34,7 +34,7 @@ using namespace MesonProjectManager::Internal; namespace { -static const QList> projectList{{"Simple C Project", "SimpleCProject"}}; +static const QList> projectList{{"Simple C Project", "simplecproject"}}; } // namespace class AMesonWrapper : public QObject From 66c3fe931f5d8812a1a88bd0ef8eeb572f249600 Mon Sep 17 00:00:00 2001 From: Alexis Jeandet Date: Mon, 22 Jun 2020 11:31:15 +0200 Subject: [PATCH 11/23] Meson/Doc: Initial documentation for Meson build plugin Mostly copied from CMake and adapted to Meson. qtcreator-kits.png screenshot has been taken on Linux but https://doc.qt.io/qtcreator/creator-targets.html#specifying-kit-settings has Windows specific stuff (item 11. "Select the Force UTF-8 MSVC compiler"). Fixes: QTCREATORBUG-24216 Change-Id: Ie6c3c48fea7f1732f010eb10cbb152406e08810c Reviewed-by: Leena Miettinen --- doc/qtcreator/images/qtcreator-kits.png | Bin 27172 -> 78166 bytes .../images/qtcreator-meson-build-settings.png | Bin 0 -> 18693 bytes .../images/qtcreator-meson-build-steps.png | Bin 0 -> 9760 bytes .../images/qtcreator-meson-clean-steps.png | Bin 0 -> 9851 bytes .../images/qtcreator-mesonexecutable.png | Bin 0 -> 41877 bytes .../creator-projects-meson-building.qdocinc | 78 ++++++++++++ .../src/meson/creator-projects-meson.qdoc | 117 ++++++++++++++++++ .../creator-projects-build-systems.qdocinc | 7 ++ .../creator-only/creator-projects-nimble.qdoc | 2 +- .../creator-projects-opening.qdoc | 2 +- .../creator-only/creator-projects-other.qdoc | 7 +- .../creator-projects-settings-build.qdoc | 5 +- .../creator-projects-settings-run.qdoc | 5 +- .../creator-projects-targets.qdoc | 9 ++ 14 files changed, 227 insertions(+), 5 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-meson-build-settings.png create mode 100644 doc/qtcreator/images/qtcreator-meson-build-steps.png create mode 100644 doc/qtcreator/images/qtcreator-meson-clean-steps.png create mode 100644 doc/qtcreator/images/qtcreator-mesonexecutable.png create mode 100644 doc/qtcreator/src/meson/creator-projects-meson-building.qdocinc create mode 100644 doc/qtcreator/src/meson/creator-projects-meson.qdoc diff --git a/doc/qtcreator/images/qtcreator-kits.png b/doc/qtcreator/images/qtcreator-kits.png index 4dfaa560f3d21c0e4f19798e3a26af62ef1d73b6..7ff95133201feedd57a4f48aa760f169cfa5b179 100644 GIT binary patch literal 78166 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 literal 27172 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

4CR{slhgbLh0aR-HAW{yw$kg6(1Z| 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-meson-build-steps.png b/doc/qtcreator/images/qtcreator-meson-build-steps.png new file mode 100644 index 0000000000000000000000000000000000000000..410d6ae059b9266acecd9b4e44832bccba64234e GIT binary patch literal 9760 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-meson-clean-steps.png b/doc/qtcreator/images/qtcreator-meson-clean-steps.png new file mode 100644 index 0000000000000000000000000000000000000000..c84aa1d217aa534ee30baeac0164042ff81d2f47 GIT binary patch literal 9851 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-mesonexecutable.png b/doc/qtcreator/images/qtcreator-mesonexecutable.png new file mode 100644 index 0000000000000000000000000000000000000000..bfaa7cc1bd6c94e2a714465b03cbe113b4bb9a17 GIT binary patch literal 41877 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 \uicontrol Options > \uicontrol Meson > + \uicontrol Tools > \uicontrol Add. + + \image qtcreator-mesonexecutable.png + + \li In the \uicontrol Name field, specify a name for the tool. + + \li In the \uicontrol Path field, specify the path to the Meson or Ninja + executable. + + \li Select \uicontrol Apply to save your changes. + + \endlist + + Select the + \uicontrol Tools > \uicontrol Options > \uicontrol Kits > \uicontrol Kits + tab to add the Meson and Ninja tools to a build and run kit: + + \image qtcreator-kits.png + + For more information, see \l {Adding Kits}. + + \section1 Editing Meson Build Descriptions + + To open a meson.build file for editing, double-click it from project tree. + Only plain text editor is available now. + + + \section1 Code Completion and External Libraries + + Through external libraries, \QC can support code completion and syntax + highlighting as if they were part of the current project or the Qt library. + + \QC handles code completion from compilation flags in Meson introspection + data. Any external library added with \c {dependency()} or found in include + path will be known by \QC for code completion. + + Syntax completion and highlighting work once your project configures successfully. + + \section1 Current Meson Support Limitations + + The following features are not supported yet: + + \list + \li Cross compilation. + \li Showing header files in project tree. + \li Configuration change detection, for example when building triggers a + Meson configuration first. + \li Actions from locator such as searching or triggering builds. + \li Adding files to Meson projects from \QC. + \endlist + + \section1 Related Topics + + \list + \li \l {Opening Projects} + \li \l {Specifying Build Settings} + \li \l {Specifying Run Settings} + \endlist +*/ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-build-systems.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-build-systems.qdocinc index 224c1e1b407..7ade105e82c 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-build-systems.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-build-systems.qdocinc @@ -49,6 +49,13 @@ generation of build configurations. For more information, see \l {Setting Up CMake}. + \l {https://mesonbuild.com/}{Meson} Meson is an open source build system meant + to be both extremely fast, and, even more importantly, as user friendly as + possible. The main design point of Meson is that every second a developer + spends writing or debugging build definitions is a second wasted. So is every + second spent waiting for the build system to actually start compiling code. + For more information, see \l {Setting Up Meson}. + \l{Qbs Manual}{Qbs} is an all-in-one build tool that generates a build graph from a high-level project description (like qmake or CMake do) and executes the commands in the low-level build graph (like make does). For more diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc index 6df963bdf8e..0860df2dbe1 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-nimble.qdoc @@ -26,7 +26,7 @@ /*! \previouspage creator-project-generic.html \page creator-project-nimble.html - \nextpage creator-cli.html + \nextpage creator-project-meson.html \title Setting Up Nimble diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc index 929996dd985..186d6f614e7 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-opening.qdoc @@ -82,7 +82,7 @@ \li Select \uicontrol File > \uicontrol {Open File or Project} (\key Ctrl+O or \key Cmd+O on \macos) and select the project file for the project to open: \e {.pro} (qmake), \e {CMakeLists.txt} - (CMake), \e {.qbs} (Qbs), \e {pyproject} (Python), or + (CMake), \e {.qbs} (Qbs), \e {meson.build} (Meson), \e {pyproject} (Python), or \e {Makefile.am} (Autotools, experimental). \li In the \uicontrol {Configure Project} tab, select kits for building diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-other.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-other.qdoc index 5ff6d1b6374..83b1176e0a9 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-other.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-other.qdoc @@ -37,7 +37,7 @@ \title Using Other Build Systems Most \QC project wizards enable you to choose the build system to use for - building the project: qmake, CMake, or Qbs. qmake is installed and + building the project: qmake, CMake, Meson, or Qbs. qmake is installed and configured when you install Qt. To use one of the other supported build systems, you need to set it up, as described in the the following sections: @@ -73,6 +73,11 @@ the Nimble package manager for generating Nim application executables that are supported on Windows, Linux, and \macos. + \li \l{Setting Up Meson} + + Meson is an open source build system meant to be both extremely fast, + and, even more importantly, as user friendly as possible. + \endlist */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc index 73c7c383e2a..5b0a7030b4a 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-build.qdoc @@ -113,6 +113,7 @@ information, see \l{http://doc.qt.io/QtQuickCompiler/}{Qt Quick Compiler}. \include creator-projects-cmake-building.qdocinc cmake build configuration + \include creator-projects-meson-building.qdocinc meson build configuration \section1 Starting External Processes @@ -145,7 +146,7 @@ \section1 Build Steps In \uicontrol{Build Steps} you can change the settings for the build system - selected for building the project: qmake, CMake, or Qbs. + selected for building the project: qmake, CMake, Meson, or Qbs. \section2 qmake Build Steps @@ -166,6 +167,7 @@ \include creator-projects-cmake-building.qdocinc cmake build steps \include creator-projects-settings-build-qbs.qdocinc qbs build steps + \include creator-projects-meson-building.qdocinc meson build steps \section2 Adding Custom Build Steps @@ -211,4 +213,5 @@ \include creator-projects-cmake-building.qdocinc cmake clean steps \include creator-projects-settings-build-qbs.qdocinc qbs clean steps + \include creator-projects-meson-building.qdocinc meson clean steps */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc index 3b564ee2835..54ab836e6f5 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run.qdoc @@ -69,6 +69,9 @@ \QC automatically adds run configurations for all targets specified in the CMake project file, \c {CMakeLists.txt}. + \QC automatically adds run configurations for all targets declared with + \c {executable()} function in Meson build descriptions. + \section1 Creating Run Configurations for Subprojects To prevent \QC from automatically creating run configurations for SUBDIRS @@ -113,7 +116,7 @@ \section1 Specifying a Custom Executable to Run - If you use CMake or the generic project type in \QC, or want + If you use CMake, Meson or the generic project type in \QC, or want to run a custom desktop executable, create a \uicontrol {Custom Executable} run configuration for your project. For example, when working on a library, you can run a test application that links against the library. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc index caa3d940820..6c3f32596d2 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc @@ -178,6 +178,15 @@ \uicontrol Change to edit the variables of the CMake configuration for the kit. + \li In the \uicontrol {Meson tool} field, select the Meson tool to use + for building the project. Select \uicontrol Manage to add installed + Meson tools to the list. For more information, see + \l{Adding Meson Tools}. + + \li In the \uicontrol {Ninja tool} field, select the Ninja tool to use + for building the project with Meson. Select \uicontrol Manage to add installed + Ninja tools to the list. + \endlist \QC uses the \e {default kit} if it does not have enough information to From 66d74ac566723e7cef8a5802106db458936dd892 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 23 Jun 2020 12:35:42 +0200 Subject: [PATCH 12/23] Target selector: Make sure the run icon is not hidden under scrollbar Fixes: QTCREATORBUG-24148 Change-Id: Icae939d8f63a99b372f32d91d33acdfb2130a4f7 Reviewed-by: Alessandro Portale --- .../projectexplorer/miniprojecttargetselector.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 0057366a175..c44bb43daf3 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -68,6 +68,8 @@ using namespace Utils; namespace ProjectExplorer { namespace Internal { +const int RunColumnWidth = 30; + static QIcon createCenteredIcon(const QIcon &icon, const QIcon &overlay) { QPixmap targetPixmap; @@ -545,6 +547,8 @@ int SelectorView::optimalWidth() const void SelectorView::setOptimalWidth(int width) { m_optimalWidth = width; + if (model()->columnCount() == 2) + m_optimalWidth += RunColumnWidth; updateGeometry(); } @@ -950,7 +954,7 @@ void MiniProjectTargetSelector::doLayout(bool keepSize) QVector widths = listWidgetWidths(minWidth, 1000); - const int runColumnWidth = widths[RUN] == -1 ? 0 : 30; + const int runColumnWidth = widths[RUN] == -1 ? 0 : RunColumnWidth; int x = 0; for (int i = PROJECT; i < LAST; ++i) { int optimalWidth = widths[i]; @@ -968,7 +972,8 @@ void MiniProjectTargetSelector::doLayout(bool keepSize) x += optimalWidth + 1; //1 extra pixel for the separators or the right border } - m_listWidgets[RUN]->setColumnWidth(0, m_listWidgets[RUN]->size().width() - runColumnWidth); + m_listWidgets[RUN]->setColumnWidth(0, m_listWidgets[RUN]->size().width() - runColumnWidth + - m_listWidgets[RUN]->padding()); m_listWidgets[RUN]->setColumnWidth(1, runColumnWidth); m_summaryLabel->resize(x - 1, summaryLabelHeight); m_kitAreaWidget->resize(x - 1, kitAreaHeight); From 518e7970bf686667866323d4405ec41070a53253 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 30 Jun 2020 12:10:21 +0300 Subject: [PATCH 13/23] Android: remove "Bundle" from ndk name Change-Id: I5368d77cfe3e94560fb897bfd0213fc3dec74d55 Reviewed-by: Alessandro Portale --- src/plugins/android/androidsettingswidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 2f03ec9fb84..a1653969fd7 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -830,7 +830,7 @@ void AndroidSettingsWidget::updateUI() const QListWidgetItem *currentItem = m_ui.ndkListWidget->currentItem(); const FilePath currentNdk = FilePath::fromString(currentItem ? currentItem->text() : ""); - const QString infoText = tr("(SDK Version: %1, NDK Bundle Version: %2)") + const QString infoText = tr("(SDK Version: %1, NDK Version: %2)") .arg(m_androidConfig.sdkToolsVersion().toString()) .arg(currentNdk.isEmpty() ? "" : m_androidConfig.ndkVersion(currentNdk).toString()); m_androidSummary->setInfoText(androidSetupOk ? infoText : ""); From 097c9ed48485b5d598c41d50679128c7d26b0411 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 30 Jun 2020 12:21:38 +0300 Subject: [PATCH 14/23] Android: remove unnecessary validateNDK function and ticks The NDK is installed via sdkmanager anyways, and custom NDK paths are verified upon choosing in the file dialog and rejected if not valid. Change-Id: I18f876dfacdbc1045679c6b082a500527a933673 Reviewed-by: Alessandro Portale --- src/plugins/android/androidsettingswidget.cpp | 33 ++----------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index a1653969fd7..605646a4176 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -105,7 +105,6 @@ private: void showEvent(QShowEvent *event) override; void validateJdk(); - void validateNdk(); void updateNdkList(); void onSdkPathChanged(); void validateSdk(); @@ -164,9 +163,6 @@ enum AndroidValidation { SdkManagerSuccessfulRow, PlatformSdkInstalledRow, AllEssentialsInstalledRow, - NdkPathExistsRow, - NdkDirStructureRow, - NdkinstallDirOkRow }; enum OpenSslValidation { @@ -384,10 +380,6 @@ AndroidSettingsWidget::AndroidSettingsWidget() "All essential packages installed for all installed Qt versions."); androidValidationPoints[BuildToolsInstalledRow] = tr("Build tools installed."); androidValidationPoints[PlatformSdkInstalledRow] = tr("Platform SDK installed."); - androidValidationPoints[NdkPathExistsRow] = tr("Default Android NDK path exists."); - androidValidationPoints[NdkDirStructureRow] = tr("Default Android NDK directory structure is correct."); - androidValidationPoints[NdkinstallDirOkRow] = tr("Default Android NDK installed into a path without " - "spaces."); m_androidSummary = new SummaryWidget(androidValidationPoints, tr("Android settings are OK."), tr("Android settings have errors."), m_ui.androidDetailsWidget); @@ -446,7 +438,7 @@ AndroidSettingsWidget::AndroidSettingsWidget() this, &AndroidSettingsWidget::onSdkPathChanged); connect(m_ui.ndkListWidget, &QListWidget::currentTextChanged, [this](const QString &ndk) { - validateNdk(); + updateUI(); m_ui.removeCustomNdkButton->setEnabled(m_androidConfig.getCustomNdkList().contains(ndk)); }); connect(m_ui.addCustomNdkButton, &QPushButton::clicked, this, @@ -577,26 +569,6 @@ void AndroidSettingsWidget::validateOpenSsl() updateUI(); } -void AndroidSettingsWidget::validateNdk() -{ - const QListWidgetItem *currentItem = m_ui.ndkListWidget->currentItem(); - const FilePath ndkPath = FilePath::fromString(currentItem ? currentItem->text() : ""); - - m_androidSummary->setPointValid(NdkPathExistsRow, ndkPath.exists()); - - const FilePath ndkPlatformsDir = ndkPath.pathAppended("platforms"); - const FilePath ndkToolChainsDir = ndkPath.pathAppended("toolchains"); - const FilePath ndkSourcesDir = ndkPath.pathAppended("sources/cxx-stl"); - m_androidSummary->setPointValid(NdkDirStructureRow, - ndkPlatformsDir.exists() - && ndkToolChainsDir.exists() - && ndkSourcesDir.exists()); - m_androidSummary->setPointValid(NdkinstallDirOkRow, - ndkPlatformsDir.exists() - && !ndkPlatformsDir.toString().contains(' ')); - updateUI(); -} - void AndroidSettingsWidget::onSdkPathChanged() { auto sdkPath = FilePath::fromUserInput(m_ui.SDKLocationPathChooser->rawPath()); @@ -628,7 +600,6 @@ void AndroidSettingsWidget::validateSdk() m_androidSummary->setPointValid(PlatformSdkInstalledRow, !m_sdkManager.installedSdkPlatforms().isEmpty()); m_androidSummary->setPointValid(AllEssentialsInstalledRow, m_androidConfig.allEssentialsInstalled()); - updateUI(); const bool sdkToolsOk = m_androidSummary->rowsOk({SdkPathExistsRow, SdkPathWritableRow, @@ -653,7 +624,7 @@ void AndroidSettingsWidget::validateSdk() startUpdateAvd(); updateNdkList(); - validateNdk(); + updateUI(); } void AndroidSettingsWidget::openSDKDownloadUrl() From a8cfe3d5605f39eb2ed26e4ede0563bd7b4f8561 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 30 Jun 2020 09:51:45 +0200 Subject: [PATCH 15/23] Doc: Fix menu paths to submenus and items that moved to View menu The Views and Workspaces menus as well as some menu items were moved from Windows to View. Change-Id: I2e196c09f0e9e2bf8ef1623167ec3e87ed1f77f5 Reviewed-by: Thomas Hartmann Reviewed-by: Eike Ziller --- doc/qtcreator/src/analyze/creator-analyze.qdoc | 2 +- .../src/debugger/creator-only/creator-debugger.qdoc | 8 ++++---- doc/qtcreator/src/debugger/qtquick-debugging.qdoc | 2 +- doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc | 5 +++-- doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc | 2 +- doc/qtcreator/src/howto/creator-ui.qdoc | 4 ++-- doc/qtcreator/src/howto/creator-workspaces.qdoc | 4 ++-- .../src/qtquick/creator-only/qtquick-app-tutorial.qdoc | 2 +- doc/qtcreator/src/qtquick/qtquick-designer.qdoc | 2 +- doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc | 2 +- doc/qtdesignstudio/examples/doc/loginui1.qdoc | 2 +- doc/qtdesignstudio/examples/doc/loginui3.qdoc | 2 +- doc/qtdesignstudio/examples/doc/loginui4.qdoc | 2 +- .../qtquick3d-editor/qtdesignstudio-3d-design-mode.qdoc | 2 +- 14 files changed, 21 insertions(+), 20 deletions(-) diff --git a/doc/qtcreator/src/analyze/creator-analyze.qdoc b/doc/qtcreator/src/analyze/creator-analyze.qdoc index 06fe3ce1b71..cff0f46cb30 100644 --- a/doc/qtcreator/src/analyze/creator-analyze.qdoc +++ b/doc/qtcreator/src/analyze/creator-analyze.qdoc @@ -44,7 +44,7 @@ You can drag and drop the views in the \uicontrol Debug mode to new positions on the screen. The size and position of views are saved for future - sessions. Select \uicontrol Window > \uicontrol Views > + sessions. Select \uicontrol View > \uicontrol Views > \uicontrol {Reset to Default Layout} to reset the views to their original sizes and positions. diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index e65407716c1..be5b4edffbb 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -608,7 +608,7 @@ program you are debugging. The availability of views depends on whether you are debugging C++ or QML. Frequently used views are shown by default and rarely used ones are hidden. To change the default settings, - select \uicontrol Window > \uicontrol Views, and then select views to + select \uicontrol View > \uicontrol Views, and then select views to display or hide. Alternatively, you can enable or disable views from the context menu of the title bar of any visible debugger view. @@ -616,10 +616,10 @@ You can drag and drop the views in \QC to new positions on the screen. The size and position of views are saved for future sessions. Select - \uicontrol Window > \uicontrol Views > \uicontrol {Reset to Default Layout} + \uicontrol View > \uicontrol Views > \uicontrol {Reset to Default Layout} to reset the views to their original sizes and positions. - To save space on the screen, select \uicontrol Window > \uicontrol Views > + To save space on the screen, select \uicontrol View > \uicontrol Views > \uicontrol {Automatically Hide View Titlebars}. To show and hide columns in views, toggle \uicontrol {Show Column} in @@ -1478,7 +1478,7 @@ \li Make sure the debugger is set up properly. For more information, see \l{Setting Up Debugger}. - \li In the \uicontrol Debug mode, select \uicontrol Window > + \li In the \uicontrol Debug mode, select \uicontrol View > \uicontrol Views > \uicontrol {Debugger Log} to open the \uicontrol {Debugger Log} view. Browse the contents of the pane on the right hand side to find out what went wrong. Always attach the diff --git a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc index 98978259acb..39a87166ac7 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc @@ -234,7 +234,7 @@ When the application is interrupted by a breakpoint, you can use the \uicontrol {QML Debugger Console} to execute JavaScript expressions in the - current context. To open it, choose \uicontrol Window > + current context. To open it, choose \uicontrol View > \uicontrol {Output Panes} > \uicontrol {QML Debugger Console}. \image qml-script-console.png "QML Debugger Console" diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc index f51b91006dc..6ba4f49a6db 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -135,8 +135,9 @@ \endlist To open the other output panes, such as \uicontrol{General Messages} and - \uicontrol{Version Control}, select \uicontrol Window > \uicontrol {Output Panes}. The menu - items also display the keyboard shortcuts that you can use. + \uicontrol{Version Control}, select \uicontrol View > + \uicontrol {Output Panes}. The menu items also display + the keyboard shortcuts that you can use. For more information about output panes, see \l{Viewing Output}. diff --git a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc index 4035cda3d07..7b06e117edd 100644 --- a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc +++ b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc @@ -196,7 +196,7 @@ \b {How do I generate a core file in \QC?} To trigger the GDB command that generates a core file while debugging, - select \uicontrol Window > \uicontrol Views > \uicontrol {Debugger Log}. + select \uicontrol View > \uicontrol Views > \uicontrol {Debugger Log}. In the \uicontrol Command field, type \c gcore and press \key Enter. The core file is created in the current working directory. You can specify another location for the file, including a relative or absolute path, as an diff --git a/doc/qtcreator/src/howto/creator-ui.qdoc b/doc/qtcreator/src/howto/creator-ui.qdoc index ff5d0baf72e..eeef2601a40 100644 --- a/doc/qtcreator/src/howto/creator-ui.qdoc +++ b/doc/qtcreator/src/howto/creator-ui.qdoc @@ -286,7 +286,7 @@ {corresponding keyboard shortcut}. To hide the mode selector and to save space on the display, select - \uicontrol Window > \uicontrol {Mode Selector Style} > \uicontrol Hidden. + \uicontrol View > \uicontrol {Mode Selector Style} > \uicontrol Hidden. To only show icons on the mode selector, select the \uicontrol {Icons Only} style. @@ -402,7 +402,7 @@ \else \l{Using Git}{Version Control} \endif - panes, select \uicontrol Window > \uicontrol {Output Panes}. + panes, select \uicontrol View > \uicontrol {Output Panes}. \if defined(qtcreator) To display the \uicontrol {To-Do Entries} pane, enable the Todo plugin. \endif diff --git a/doc/qtcreator/src/howto/creator-workspaces.qdoc b/doc/qtcreator/src/howto/creator-workspaces.qdoc index 56177f51071..356063ac333 100644 --- a/doc/qtcreator/src/howto/creator-workspaces.qdoc +++ b/doc/qtcreator/src/howto/creator-workspaces.qdoc @@ -57,12 +57,12 @@ To close groups of views, select the \uicontrol {Close Group} button. - To open closed views, select \uicontrol Window > \uicontrol Views. + To open closed views, select \uicontrol View > \uicontrol Views. \section1 Saving Workspaces The changes you make to a workspace are saved when you exit \QC. - In \QMLD, you can select \uicontrol Window > \uicontrol Workspaces > + In \QMLD, you can select \uicontrol View > \uicontrol Workspaces > \uicontrol Manage > \uicontrol {Restore last workspace on startup} to restore the current workspace the next time you start \QC. diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc index 03c406a0c1f..511a0c61c3c 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc @@ -72,7 +72,7 @@ \image qmldesigner-tutorial-design-mode.png "Transitions project in Design Mode" \note If a view is hidden, you can show it by selecting - \uicontrol Window > \uicontrol Views. + \uicontrol View > \uicontrol Views. \li In the \uicontrol Navigator, select \uicontrol Label and press \key Delete to delete it. diff --git a/doc/qtcreator/src/qtquick/qtquick-designer.qdoc b/doc/qtcreator/src/qtquick/qtquick-designer.qdoc index fe524b7acd7..412cbc8f552 100644 --- a/doc/qtcreator/src/qtquick/qtquick-designer.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-designer.qdoc @@ -49,7 +49,7 @@ \image studio-design-mode.png "Design mode" The Design mode contains different views for designing UIs. To open the - following views, select \uicontrol Window > \uicontrol Views: + following views, select \uicontrol View > \uicontrol Views: \list \li \uicontrol {Form Editor} (1) provides a canvas for designing 2D UIs. diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc index faafb290f53..e981c40e57c 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc @@ -130,7 +130,7 @@ \endlist The \uicontrol{Version Control} output pane displays the commands that are - executed, a timestamp, and the relevant output. Select \uicontrol Window > + executed, a timestamp, and the relevant output. Select \uicontrol View > \uicontrol {Output Panes} > \uicontrol {Version Control} to open the pane. \image qtcreator-vcs-pane.png diff --git a/doc/qtdesignstudio/examples/doc/loginui1.qdoc b/doc/qtdesignstudio/examples/doc/loginui1.qdoc index ebf66aa0aa6..d3ce72be5d4 100644 --- a/doc/qtdesignstudio/examples/doc/loginui1.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui1.qdoc @@ -133,7 +133,7 @@ \uicontrol Projects view to open it. \note The visibility of views depends on the selected workspace. To open - hidden views, select \uicontrol Window > \uicontrol Views in the Design + hidden views, select \uicontrol View > \uicontrol Views in the Design mode. For more information, see \l {Managing Workspaces}. To modify \e Screen01.ui.qml in \uicontrol {Form Editor}: diff --git a/doc/qtdesignstudio/examples/doc/loginui3.qdoc b/doc/qtdesignstudio/examples/doc/loginui3.qdoc index 84e5d06779f..a49d211a1d1 100644 --- a/doc/qtdesignstudio/examples/doc/loginui3.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui3.qdoc @@ -189,7 +189,7 @@ to \e loginState: \list 1 - \li Select \uicontrol Window > \uicontrol Views > + \li Select \uicontrol View > \uicontrol Views > \uicontrol {Connection View} to open the \uicontrol Connection view. \li Select \e registerButton in the \uicontrol Navigator. \li In the \uicontrol Connection view, select the \inlineimage plus.png diff --git a/doc/qtdesignstudio/examples/doc/loginui4.qdoc b/doc/qtdesignstudio/examples/doc/loginui4.qdoc index 3566eea72b0..62db589dc71 100644 --- a/doc/qtdesignstudio/examples/doc/loginui4.qdoc +++ b/doc/qtdesignstudio/examples/doc/loginui4.qdoc @@ -135,7 +135,7 @@ To add a timeline with settings for running the animation: \list 1 - \li Select \uicontrol Window > \uicontrol Views > + \li Select \uicontrol View > \uicontrol Views > \uicontrol Timeline to open the \uicontrol Timeline view. \li In \uicontrol Timeline, select \inlineimage plus.png to add a 1000-frame timeline and settings for running the animation. diff --git a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-design-mode.qdoc b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-design-mode.qdoc index e2457f512f6..d0bb49043a9 100644 --- a/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-design-mode.qdoc +++ b/doc/qtdesignstudio/src/qtquick3d-editor/qtdesignstudio-3d-design-mode.qdoc @@ -43,7 +43,7 @@ \image studio-editing-3d-scenes.png "3D assets in Design mode" - To open the following views, select \uicontrol Window > \uicontrol Views: + To open the following views, select \uicontrol View > \uicontrol Views: \list \li \uicontrol {3D Editor} (1) is the working area where you create the From 7f44d8582b2b9463b2192487eee8c557e8400a11 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 30 Jun 2020 11:44:43 +0200 Subject: [PATCH 16/23] CMake build: Remove timeout for dumper tests They take much longer, but are also optional. Makes it possible to run via e.g. "ctest -V -R tst_debugger_dumpers" Change-Id: I8bbda6ca36e25cd896b1f3be5d1696a27b8acc53 Reviewed-by: Tobias Hunger Reviewed-by: Michael Weghorn --- cmake/QtCreatorAPI.cmake | 9 +++++++-- cmake/QtCreatorAPIInternal.cmake | 8 +++++++- tests/auto/debugger/CMakeLists.txt | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 24264f9c600..8030f17d665 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -641,7 +641,7 @@ function(extend_qtc_executable name) endfunction() function(add_qtc_test name) - cmake_parse_arguments(_arg "GTEST" "" "DEFINES;DEPENDS;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC" ${ARGN}) + cmake_parse_arguments(_arg "GTEST" "TIMEOUT" "DEFINES;DEPENDS;INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC" ${ARGN}) foreach(dependency ${_arg_DEPENDS}) if (NOT TARGET ${dependency} AND NOT _arg_GTEST) @@ -684,7 +684,12 @@ function(add_qtc_test name) if (NOT _arg_GTEST) add_test(NAME ${name} COMMAND ${name}) - finalize_test_setup(${name}) + if (DEFINED _arg_TIMEOUT) + set(timeout_option TIMEOUT ${_arg_TIMEOUT}) + else() + set(timeout_option) + endif() + finalize_test_setup(${name} ${timeout_option}) endif() endfunction() diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 2a743968d98..ea03aecdbfb 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -211,11 +211,17 @@ function(set_public_includes target includes) endfunction() function(finalize_test_setup test_name) + cmake_parse_arguments(_arg "" "TIMEOUT" "" ${ARGN}) + if (DEFINED _arg_TIMEOUT) + set(timeout ${_arg_TIMEOUT}) + else() + set(timeout 5) + endif() # Never translate tests: set_tests_properties(${name} PROPERTIES QT_SKIP_TRANSLATION ON - TIMEOUT 5 + TIMEOUT ${timeout} ) if (WIN32) diff --git a/tests/auto/debugger/CMakeLists.txt b/tests/auto/debugger/CMakeLists.txt index fb90869cde6..912877e0d97 100644 --- a/tests/auto/debugger/CMakeLists.txt +++ b/tests/auto/debugger/CMakeLists.txt @@ -9,6 +9,7 @@ add_qtc_test(tst_debugger_disassembler if (WITH_DEBUGGER_DUMPERS) add_qtc_test(tst_debugger_dumpers + TIMEOUT 0 DEPENDS Qt5::Network Utils DEFINES DUMPERDIR="${PROJECT_SOURCE_DIR}/share/qtcreator/debugger" INCLUDES From 6a095d6c9ad724d4b868e160f439a42099899c58 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 30 Jun 2020 11:57:03 +0200 Subject: [PATCH 17/23] CMake build: Make option to include dumper tests discoverable Change-Id: I9828f362561b8392d31a56f8a60fe9531accf4ce Reviewed-by: Tobias Hunger --- tests/auto/debugger/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/debugger/CMakeLists.txt b/tests/auto/debugger/CMakeLists.txt index 912877e0d97..367a0de393e 100644 --- a/tests/auto/debugger/CMakeLists.txt +++ b/tests/auto/debugger/CMakeLists.txt @@ -7,6 +7,7 @@ add_qtc_test(tst_debugger_disassembler "${DEBUGGERDIR}/disassemblerlines.cpp" "${DEBUGGERDIR}/disassemblerlines.h" ) +option(WITH_DEBUGGER_DUMPERS "Include tests for debugger pretty printers" OFF) if (WITH_DEBUGGER_DUMPERS) add_qtc_test(tst_debugger_dumpers TIMEOUT 0 From e9fed0e5360578d2a07e7c8f46762489cc5b4b10 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 30 Jun 2020 10:44:37 +0200 Subject: [PATCH 18/23] Meson: Fix build with older GCC Change-Id: I3a3ed1ea65e066e73d3cabb29a8858677197f18f Reviewed-by: Tim Jenssen --- src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp b/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp index d062b2c1f04..6c34f50d3b9 100644 --- a/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp +++ b/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp @@ -200,7 +200,7 @@ QList MesonProjectParser::appsTargets() const QList apps; std::for_each(std::cbegin(m_parserResult.targets), std::cend(m_parserResult.targets), - [&apps, &srcDir = m_srcDir](const Target &target) { + [&apps, srcDir = m_srcDir](const Target &target) { if (target.type == Target::Type::executable) { ProjectExplorer::BuildTargetInfo bti; bti.displayName = target.name; From 59b84c8d19bdaac6cdafba2bd0173113a7a1bdc8 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 24 Jun 2020 12:24:27 +0200 Subject: [PATCH 19/23] Wizards: Update templates in regard to deprecation warnings The QT_DEPRECATED_WARNINGS macro has no effect anymore, so let's remove it along with the huge chunk of comments that took up an inordinate amount of space in the resulting project file. The concise comment for the QT_DISABLE_DEPRECATED_BEFORE macro is perfectly sufficient. Fixes: QTCREATORBUG-24244 Change-Id: I549c16c2c037bb64c2833e4807047ab3a8b2103f Reviewed-by: Eike Ziller --- .../templates/wizards/projects/consoleapp/file.pro | 9 +-------- .../templates/wizards/projects/consoleapp/file.qbs | 9 +-------- .../wizards/projects/cpplibrary/project.pro | 9 +-------- .../wizards/projects/cpplibrary/project.qbs | 11 ++--------- .../wizards/projects/qtquickapplication/app.pro | 9 +-------- .../wizards/projects/qtquickapplication/app.qbs | 9 +-------- .../projects/qtwidgetsapplication/project.pro | 9 +-------- .../projects/qtwidgetsapplication/project.qbs | 12 +++--------- .../mixed_atp/tests/auto/derived/derived.pro | 10 +--------- .../wizards/qtprojectparameters.cpp | 8 +------- 10 files changed, 13 insertions(+), 82 deletions(-) diff --git a/share/qtcreator/templates/wizards/projects/consoleapp/file.pro b/share/qtcreator/templates/wizards/projects/consoleapp/file.pro index a8ed27c2ad1..dafae633029 100644 --- a/share/qtcreator/templates/wizards/projects/consoleapp/file.pro +++ b/share/qtcreator/templates/wizards/projects/consoleapp/file.pro @@ -3,15 +3,8 @@ QT -= gui CONFIG += c++11 console CONFIG -= app_bundle -# The following define makes your compiler emit warnings if you use -# any Qt feature that has been marked deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if it uses deprecated APIs. +# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \\ diff --git a/share/qtcreator/templates/wizards/projects/consoleapp/file.qbs b/share/qtcreator/templates/wizards/projects/consoleapp/file.qbs index dfdd823780a..3f06621d453 100644 --- a/share/qtcreator/templates/wizards/projects/consoleapp/file.qbs +++ b/share/qtcreator/templates/wizards/projects/consoleapp/file.qbs @@ -4,15 +4,8 @@ QtApplication { cpp.cxxLanguageVersion: "c++11" cpp.defines: [ - // The following define makes your compiler emit warnings if you use - // any Qt feature that has been marked deprecated (the exact warnings - // depend on your compiler). Please consult the documentation of the - // deprecated API in order to know how to port your code away from it. - "QT_DEPRECATED_WARNINGS", - - // You can also make your code fail to compile if it uses deprecated APIs. + // You can make your code fail to compile if it uses deprecated APIs. // In order to do so, uncomment the following line. - // You can also select to disable deprecated APIs only up to a certain version of Qt. //"QT_DISABLE_DEPRECATED_BEFORE=0x060000" // disables all the APIs deprecated before Qt 6.0.0 ] diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/project.pro b/share/qtcreator/templates/wizards/projects/cpplibrary/project.pro index 8eba894fe5a..7c1be98faa9 100644 --- a/share/qtcreator/templates/wizards/projects/cpplibrary/project.pro +++ b/share/qtcreator/templates/wizards/projects/cpplibrary/project.pro @@ -17,15 +17,8 @@ DEFINES += %{LibraryDefine} CONFIG += c++11 -# The following define makes your compiler emit warnings if you use -# any Qt feature that has been marked deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if it uses deprecated APIs. +# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \\ diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs b/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs index 2c51c9e116d..f314f74e477 100644 --- a/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs +++ b/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs @@ -20,16 +20,9 @@ DynamicLibrary { "QT_PLUGIN", @endif - // The following define makes your compiler emit warnings if you use - // any Qt feature that has been marked deprecated (the exact warnings - // depend on your compiler). Please consult the documentation of the - // deprecated API in order to know how to port your code away from it. - "QT_DEPRECATED_WARNINGS", - - // You can also make your code fail to compile if it uses deprecated APIs. + // You can make your code fail to compile if it uses deprecated APIs. // In order to do so, uncomment the following line. - // You can also select to disable deprecated APIs only up to a certain version of Qt. - // "QT_DISABLE_DEPRECATED_BEFORE=0x060000", // disables all the APIs deprecated before Qt 6.0.0 + //"QT_DISABLE_DEPRECATED_BEFORE=0x060000" // disables all the APIs deprecated before Qt 6.0.0 ] files: [ diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication/app.pro b/share/qtcreator/templates/wizards/projects/qtquickapplication/app.pro index 908aaa3e07a..18767f8623a 100644 --- a/share/qtcreator/templates/wizards/projects/qtquickapplication/app.pro +++ b/share/qtcreator/templates/wizards/projects/qtquickapplication/app.pro @@ -6,15 +6,8 @@ QT += quick CONFIG += c++11 -# The following define makes your compiler emit warnings if you use -# any Qt feature that has been marked deprecated (the exact warnings -# depend on your compiler). Refer to the documentation for the -# deprecated API to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if it uses deprecated APIs. +# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \\ diff --git a/share/qtcreator/templates/wizards/projects/qtquickapplication/app.qbs b/share/qtcreator/templates/wizards/projects/qtquickapplication/app.qbs index b22af44529d..c432214ce2f 100644 --- a/share/qtcreator/templates/wizards/projects/qtquickapplication/app.qbs +++ b/share/qtcreator/templates/wizards/projects/qtquickapplication/app.qbs @@ -13,15 +13,8 @@ CppApplication { cpp.cxxLanguageVersion: "c++14" cpp.defines: [ - // The following define makes your compiler emit warnings if you use - // any Qt feature that has been marked deprecated (the exact warnings - // depend on your compiler). Please consult the documentation of the - // deprecated API in order to know how to port your code away from it. - "QT_DEPRECATED_WARNINGS", - - // You can also make your code fail to compile if it uses deprecated APIs. + // You can make your code fail to compile if it uses deprecated APIs. // In order to do so, uncomment the following line. - // You can also select to disable deprecated APIs only up to a certain version of Qt. //"QT_DISABLE_DEPRECATED_BEFORE=0x060000" // disables all the APIs deprecated before Qt 6.0.0 ] diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.pro b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.pro index a0a237bf20e..abf62ced022 100644 --- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.pro +++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.pro @@ -4,15 +4,8 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 -# The following define makes your compiler emit warnings if you use -# any Qt feature that has been marked deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if it uses deprecated APIs. +# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \\ diff --git a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.qbs b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.qbs index baa6326cb83..dfba4acf115 100644 --- a/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.qbs +++ b/share/qtcreator/templates/wizards/projects/qtwidgetsapplication/project.qbs @@ -3,16 +3,10 @@ import qbs.FileInfo QtApplication { Depends { name: "Qt.widgets" } - // The following define makes your compiler emit warnings if you use - // any Qt feature that has been marked deprecated (the exact warnings - // depend on your compiler). Please consult the documentation of the - // deprecated API in order to know how to port your code away from it. - // You can also make your code fail to compile if it uses deprecated APIs. - // In order to do so, uncomment the second entry in the list. - // You can also select to disable deprecated APIs only up to a certain version of Qt. cpp.defines: [ - "QT_DEPRECATED_WARNINGS", - /* "QT_DISABLE_DEPRECATED_BEFORE=0x060000" */ // disables all the APIs deprecated before Qt 6.0.0 + // You can make your code fail to compile if it uses deprecated APIs. + // In order to do so, uncomment the following line. + //"QT_DISABLE_DEPRECATED_BEFORE=0x060000" // disables all the APIs deprecated before Qt 6.0.0 ] files: [ diff --git a/src/plugins/autotest/unit_test/mixed_atp/tests/auto/derived/derived.pro b/src/plugins/autotest/unit_test/mixed_atp/tests/auto/derived/derived.pro index 4178799aae2..ed3a5e1b14c 100644 --- a/src/plugins/autotest/unit_test/mixed_atp/tests/auto/derived/derived.pro +++ b/src/plugins/autotest/unit_test/mixed_atp/tests/auto/derived/derived.pro @@ -14,18 +14,10 @@ CONFIG -= app_bundle TEMPLATE = app -# The following define makes your compiler emit warnings if you use -# any feature of Qt which as been marked as deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if you use deprecated APIs. +# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - SOURCES += tst_derivedtest.cpp \ origin.cpp DEFINES += SRCDIR=\\\"$$PWD/\\\" diff --git a/src/plugins/qmakeprojectmanager/wizards/qtprojectparameters.cpp b/src/plugins/qmakeprojectmanager/wizards/qtprojectparameters.cpp index b649fc05fab..c5a66d9470e 100644 --- a/src/plugins/qmakeprojectmanager/wizards/qtprojectparameters.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/qtprojectparameters.cpp @@ -112,14 +112,8 @@ void QtProjectParameters::writeProFile(QTextStream &str) const if (qtVersionSupport != SupportQt4Only) { str << "\n" - "# The following define makes your compiler emit warnings if you use\n" - "# any feature of Qt which has been marked as deprecated (the exact warnings\n" - "# depend on your compiler). Please consult the documentation of the\n" - "# deprecated API in order to know how to port your code away from it.\n" - "DEFINES += QT_DEPRECATED_WARNINGS\n\n" - "# You can also make your code fail to compile if you use deprecated APIs.\n" + "# You can make your code fail to compile if you use deprecated APIs.\n" "# In order to do so, uncomment the following line.\n" - "# You can also select to disable deprecated APIs only up to a certain version of Qt.\n" "#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0\n"; } } From f9df5b445a7035f3cce848683ccaa740e009b3ab Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 30 Jun 2020 20:46:24 +0200 Subject: [PATCH 20/23] QmlDesigner: Fix tests Change-Id: I74442bf004a462d5d310f128b64f8bc82073d822 Reviewed-by: Thomas Hartmann --- tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp index 52fa6f519f8..fc5d9dcfa9b 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp @@ -4255,7 +4255,7 @@ void tst_TestCore::testMetaInfoSimpleType() QCOMPARE(itemMetaInfo.superClasses().size(), 2); // Item, QtQuick.QtObject QVERIFY(itemMetaInfo.isSubclassOf("QtQuick.Item", -1, -1)); QVERIFY(itemMetaInfo.isSubclassOf(".QObject", -1, -1)); - QVERIFY(itemMetaInfo.isSubclassOf("QtQuick.QtObject", -1, -1)); + QVERIFY(itemMetaInfo.isSubclassOf("QtQml.QtObject", -1, -1)); // availableInVersion QVERIFY(itemMetaInfo.availableInVersion(2, 2)); From 42b5aa4acac6db0a970418ffdd400966e86ebda9 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Mon, 29 Jun 2020 19:18:16 +0200 Subject: [PATCH 21/23] Target selector: Fix drawing of the run icon With the new layout calculations (see QTCREATORBUG-24148), the option rect can now be used to center the icon with the provided functions in QRect. The current code kind of works if RunColumnWidth matches the row height, so that it can do things like subtracting vertical from horizontal dimensions. But in fact, the icon is not centered on the option.rect. fillRect(option.rect, Qt::red) <-to verify. Apart from that it has a few more downsides. This change: - Uses the run icon made for dark background - Paints the icon at its native 16x16px (instead of 15x15px) - Uses QRect::center()/moveCenter() to actually center the icon Change-Id: Ib280c650bd454b551f9e30ca108579fee06d81f0 Reviewed-by: Christian Kandeler --- .../projectexplorer/miniprojecttargetselector.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index c44bb43daf3..38187fd1287 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -477,14 +477,10 @@ void TargetSelectorDelegate::paint(QPainter *painter, ->setData(index, index.model()->data(index, Qt::UserRole + 1).toString(), Qt::ToolTipRole); painter->drawText(option.rect.left() + 6, option.rect.top() + (option.rect.height() - fm.height()) / 2 + fm.ascent(), elidedText); if (index.column() == 1 && option.state & QStyle::State_MouseOver) { - const QIcon icon = Utils::Icons::RUN_SMALL.icon(); - QRect iconRect(option.rect.right() - option.rect.height(), - option.rect.top(), - option.rect.height() / painter->device()->devicePixelRatio(), - option.rect.height() / painter->device()->devicePixelRatio()); - iconRect.translate((option.rect.width() - iconRect.width()) / 2, - (option.rect.height() - iconRect.height()) / 2); - icon.paint(painter, iconRect, Qt::AlignHCenter | Qt::AlignVCenter); + const QIcon icon = Utils::Icons::RUN_SMALL_TOOLBAR.icon(); + QRect iconRect(0, 0, 16, 16); + iconRect.moveCenter(option.rect.center()); + icon.paint(painter, iconRect); } painter->restore(); From 41a69be36650f0663ca4b263985cdf092174799e Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 26 Jun 2020 18:08:55 +0200 Subject: [PATCH 22/23] Doc: Clarify what happens during export and import with Qt Bridge Fixes: QDS-2433 Change-Id: Ia30957863c7200eb0438db4e271e5c2be0208637 Reviewed-by: Vikas Pachdha --- .../src/qtbridge/qtbridge-ai.qdoc | 3 +- .../src/qtbridge/qtbridge-overview.qdoc | 20 +++++---- .../src/qtbridge/qtbridge-ps-overview.qdoc | 12 +++--- .../src/qtbridge/qtbridge-ps-using.qdoc | 41 ++++++++++--------- .../qtbridge/qtbridge-sketch-overview.qdoc | 10 ++--- .../src/qtbridge/qtbridge-sketch-using.qdoc | 31 +++++++------- 6 files changed, 63 insertions(+), 54 deletions(-) diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-ai.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-ai.qdoc index c40b8457426..4d870c84970 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-ai.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-ai.qdoc @@ -36,7 +36,8 @@ \list \li Place your Illustrator content into Adobe Photoshop and - use \QBPS to export the assets to .ui.qml files. + use \QBPS to export the assets to \e {.metadata} format that + you can import to \QDS. \li Use the Illustrator \e {export for screens workflow} to export your assets into formats supported by \QDS, such as PNG and JPEG. \endlist diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc index 4fc6d2eefb9..58e782c2ae5 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-overview.qdoc @@ -30,13 +30,17 @@ \title Exporting Artwork from Design Tools - You need to use \QB to first export 2D assets from design tools and then - import them. When working with 3D assets, you can use the export functions - provided by the 3D graphics tools to save the assets in widely-used 3D - graphics formats, and then use \QB to import them. You can download \QB - from the \l{https://marketplace.qt.io/}{Qt Marketplace}. + You need to use \QB to first export 2D assets from design tools and then use + \QB to \l{Importing Designs}{import} them into \QDS. - For best results when importing 3D assets, follow + When working with 3D assets, you can use the export functions provided by + the 3D graphics tools to save the assets in widely-used 3D graphics formats, + and then use \QB to import them into \QDS. + + You can use the Qt online installer to install \QB if you have a license, or + download \QB from the \l{https://marketplace.qt.io/}{Qt Marketplace}. + + For best results when importing assets, follow the guidelines for creating and exporting them. \list @@ -50,13 +54,13 @@ \li \l{Exporting Designs from Adobe Photoshop} You can use the \QBPS export tool in Adobe Photoshop to convert - artwork into Qt Quick files (.ui.qml) that you can import to + artwork into \e {.metadata} format that you can import into projects in \QDS. \li \l{Exporting Designs from Sketch} You can use the \QBSK export tool in Sketch to convert artwork into - Qt Quick files that you can import to projects in \QDS. + metadata that you can import into projects in \QDS. \li \l{Exporting 3D Assets} diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-overview.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-overview.qdoc index d6f0b8239c9..26eda08a083 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-overview.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-overview.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Design Studio documentation. @@ -32,7 +32,8 @@ \title Exporting Designs from Adobe Photoshop - You can use \QBPS to export designs from Adobe Photoshop to .ui.qml files. + You can use \QBPS to export designs from Adobe Photoshop to \e {.metadata} + format that you can \l{Importing 2D Assets}{import} to projects in \QDS. \image studio-ps-export.png @@ -43,13 +44,12 @@ \li \l{Setting Up Qt Bridge for Adobe Photoshop} You must install and set up the \QBPS export tool before you can use - it to convert artwork into Qt Quick files that you can import to - projects in \QDS. + it to export artwork. \li \l{Using Qt Bridge for Adobe Photoshop} To get the best results when you use \QBPS to export designs from - Photoshop to Qt Quick files, you should follow the guidelines for - working with Photoshop and organizing your assets. + Photoshop, you should follow the guidelines for working with + Photoshop and organizing your assets. \endlist */ diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-using.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-using.qdoc index 61adb5a0ab4..ff12226ab42 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-using.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-ps-using.qdoc @@ -33,7 +33,8 @@ \section1 Organizing Assets To get the best results when you use \QBPS to export designs from Adobe - Photoshop to \QDS, follow these guidelines when working with Photoshop: + Photoshop for importing them to \QDS, follow these guidelines when working + with Photoshop: \list \li Arrange your art into artboards and organize it into groups and @@ -55,9 +56,9 @@ when you export designs from Adobe Photoshop and import them into \QDS. When you use \QBPS to export your designs, you will determine how you want - each group or layer exported: as a \e component or \e child. A component is - a single QML file that can contain other assets. A child is a single PNG - file that you can use within QML files. + each group or layer exported: as a \e component or \e child. A component + will be imported as a single QML file that can contain other assets. A child + will be imported as a single PNG file that you can use within QML files. If you plan to use pieces of your artwork as separate images in the UI, group them on an artboard as separate layers. You can then export the group @@ -74,7 +75,7 @@ Place different parts of the UI, such as menus and pop-ups, on separate artboards to be able to export them as components or children and to - import them as QML and PNG files that you can drag and drop to the + import them as QML and PNG files that you can drag and drop to \uicontrol {Form Editor} in \QDS Design mode while creating a UI. \QDS offers predefined sets of UI controls that you can modify according @@ -85,12 +86,13 @@ However, if you want your UI controls, such as check boxes, to look exactly like they do in Photoshop, you have to create the control in an Artboard and use the artboard in the layers where the control instance is to be created. - \QB exports the control as a custom QML component that you can program in + \QB imports the control as a custom QML component that you can program in \QDS. \section1 Exporting Assets - Each artboard is exported automatically as a component. That is, a separate + Each artboard is exported automatically as a component, which means that it + will be imported as a separate QML file that contains all the artwork on the artboard, except layers that are set to be skipped or exported as child items. You determine how each group or layer in an artboard is exported: as a component or a child @@ -147,13 +149,14 @@ \li In the \uicontrol {Export As} field, select the export type for the group or layer: \list - \li \uicontrol Component creates a separate QML file for the - selected artboard, group, or layer that contains all the - artwork in it, except layers that are set to be skipped or - exported as child items. - \li \uicontrol Child creates a separate PNG file for each asset - of the selected group or layer, with references to the - images in the component file. + \li \uicontrol Component exports the selected artboard, group, + or layer with metadata. The exported data can be used later + to import the component as a separate QML file that contains + all the artwork in it, except layers that are set to be + skipped or exported as child items. + \li \uicontrol Child exports each asset of the selected group + or layer as a separate PNG file, with references + to the images in the component file. \li \uicontrol Merged merges the selected groups and layers into the parent as one item. \li \uicontrol Skipped completely skips the selected layer. @@ -162,9 +165,9 @@ to reuse. For example, you can use an artboard to define a component, such as a button, and reuse it in other artboards. \li In the \uicontrol {QML Type} field, specify the QML type - or Studio component to morph this layer into. The generated - component will be of this type. For example, if you drew a - rectangle, you can export it as a Rectangle Studio component. + or Studio component to morph this layer into. The component that is + generated during import will be of this type. For example, if you + drew a rectangle, you can export it as a Rectangle Studio component. You can provide the import statement of the module where the QML type is defined in the \uicontrol {Add Imports} field. \li In the \uicontrol {Add Imports} field, enter additional @@ -225,8 +228,8 @@ PSD Document instance. You can undo the temporary changes done in the function \e preExport(...). \li customDefaultQmlId(name, instance) - The function is called for settings the default QML id of the layer. The returned value - is used for the QML id. Return \e Falsey to use the auto generated QML id instead. + The function is called for setting the default QML id of the layer. The returned value + is used for the QML id. Return \c false to use the auto generated QML id instead. The parameter \a name is the auto generated QML id by the plugin and \a instance is the PSD layer instance. \endlist diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-overview.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-overview.qdoc index a897ab044d9..a85a2473101 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-overview.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-overview.qdoc @@ -32,7 +32,8 @@ \title Exporting Designs from Sketch - You can use \QBSK to export designs from Sketch to .ui.qml files. + You can use \QBSK to export designs from Sketch to \e {.metadata} + format that you can \l{Importing 2D Assets}{import} to projects in \QDS. \image studio-sketch-export.png @@ -43,13 +44,12 @@ \li \l{Setting Up Qt Bridge for Sketch} You must install Sketch and the \QBSK export tool before you can use - the tool to convert artwork into Qt Quick files that you can import - to projects in \QDS. + the tool to export artwork. \li \l{Using Qt Bridge for Sketch} To get the best results when you use \QBSK to export designs from - Sketch to Qt Quick files, you should follow the guidelines for - working with Sketch and organizing your assets. + Sketch, you should follow the guidelines for working with Sketch and + organizing your assets. \endlist */ diff --git a/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-using.qdoc b/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-using.qdoc index 82b9c0b8076..677c1c610e7 100644 --- a/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-using.qdoc +++ b/doc/qtdesignstudio/src/qtbridge/qtbridge-sketch-using.qdoc @@ -77,10 +77,10 @@ The relationships between artboards and layers are preserved when you export designs from Sketch and import them into \QDS. - An artboard can only be exported as a component or skipped. A component is - a separate QML file that contains all the artwork on the artboard, except - layers that are set to be skipped or exported as child items. The child - items can contain graphical assets or text. + An artboard can only be exported as a component or skipped. A component will + be imported as a separate QML file that contains all the artwork on the + artboard, except layers that are set to be skipped or exported as child + items. The child items can contain graphical assets or text. To use the contents of an artboard as a single image in the UI, you can merge the groups and layers when you export them. During import, the @@ -149,23 +149,24 @@ \li In the \uicontrol {Export As} field, select the export type for the group or layer: \list - \li \uicontrol Component creates a separate QML file for the - selected symbol that contains all the artwork in it, except - layers or groups that are set to be skipped or exported as - child items. - \li \uicontrol Child creates a separate file for each asset - of the selected group or layer, with references to the - images in the component file. You select the image format - in the \uicontrol {Asset Format} field. + \li \uicontrol Component exports the selected symbol with + metadata. The exported data can be used later to import + the component as a separate QML file that contains all + the artwork in it, except layers or groups that are set + to be skipped or exported as child items. + \li \uicontrol Child exports each asset of the selected group + or layer a separate PNG file, with references + to the images in the component file. You select the image + format in the \uicontrol {Asset Format} field. \li \uicontrol Merged merges the selected groups and layers into the parent artboard or group as one item. \li \uicontrol Skipped completely skips the selected layer. \endlist \li In the \uicontrol {QML Type} field, specify the QML type or \l {Studio Components}{Qt Quick Studio Component} to morph this - layer into. The generated component will be of this type. For - example, if you drew a rectangle, you can export it as a - \l Rectangle component. + layer into. The component that is generated during import will be + of this type. For example, if you drew a rectangle, you can export + it as a \l Rectangle component. You can provide the import statement of the module where the QML type is defined in the \uicontrol {QML Imports} field. \li In the \uicontrol {QML Imports} field, enter From ebf03b5c23e2222f52315b3544c93062910e9c5c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 1 Jul 2020 08:41:00 +0200 Subject: [PATCH 23/23] QmlDesigner: Fix compile with Qt 5.12 Change-Id: I630496ae7351026d207fb5c87e2eb32e2d2aff34 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/assetexporterplugin/componentexporter.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/assetexporterplugin/componentexporter.h b/src/plugins/qmldesigner/assetexporterplugin/componentexporter.h index 3668f372bfb..e2017b785c2 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/componentexporter.h +++ b/src/plugins/qmldesigner/assetexporterplugin/componentexporter.h @@ -28,6 +28,7 @@ #include #include +#include #include "utils/qtcassert.h"