diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index 41055988fd..fcb52882f1 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -43,6 +43,14 @@ #include <qmldesignerconstants.h> #include <utils/algorithm.h> +#ifndef QMLDESIGNER_TEST +#include <projectexplorer/kit.h> +#include <projectexplorer/session.h> +#include <projectexplorer/target.h> +#include <qtsupport/baseqtversion.h> +#include <qtsupport/qtkitinformation.h> +#endif + #include <QQuickItem> #include <QRegularExpression> #include <QTimer> @@ -289,6 +297,7 @@ void MaterialBrowserView::modelAttached(Model *model) m_widget->materialBrowserModel()->setHasMaterialRoot(rootModelNode().isSubclassOf("QtQuick3D.Material")); m_hasQuick3DImport = model->hasImport("QtQuick3D"); + updateBundleMaterialsQuick3DVersion(); updateBundleMaterialsImportedState(); // Project load is already very busy and may even trigger puppet reset, so let's wait a moment @@ -482,6 +491,41 @@ void MaterialBrowserView::updateBundleMaterialsImportedState() m_widget->materialBrowserBundleModel()->updateImportedState(importedBundleMats); } +void MaterialBrowserView::updateBundleMaterialsQuick3DVersion() +{ + bool hasImport = false; + int major = -1; + int minor = -1; + const QString url {"QtQuick3D"}; + const auto imports = model()->imports(); + for (const auto &import : imports) { + if (import.url() == url) { + hasImport = true; + const int importMajor = import.majorVersion(); + if (major < importMajor) { + minor = -1; + major = importMajor; + } + if (major == importMajor) + minor = qMax(minor, import.minorVersion()); + } + } +#ifndef QMLDESIGNER_TEST + if (hasImport && major == -1) { + // Import without specifying version, so we take the kit version + auto target = ProjectExplorer::SessionManager::startupTarget(); + if (target) { + QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(target->kit()); + if (qtVersion) { + major = qtVersion->qtVersion().majorVersion; + minor = qtVersion->qtVersion().minorVersion; + } + } + } +#endif + m_widget->materialBrowserBundleModel()->setQuick3DImportVersion(major, minor); +} + ModelNode MaterialBrowserView::getBundleMaterialDefaultInstance(const TypeName &type) { const QList<ModelNode> materials = m_widget->materialBrowserModel()->materials(); @@ -511,6 +555,8 @@ void MaterialBrowserView::importsChanged(const QList<Import> &addedImports, cons bool hasQuick3DImport = model()->hasImport("QtQuick3D"); + updateBundleMaterialsQuick3DVersion(); + if (hasQuick3DImport == m_hasQuick3DImport) return; |