diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp index 50dbbc878e1..e7d1e431633 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp @@ -7,6 +7,7 @@ #include "assetslibrarymodel.h" #include "assetslibraryview.h" +#include #include #include #include @@ -100,7 +101,6 @@ AssetsLibraryWidget::AssetsLibraryWidget(AsynchronousImageCache &asynchronousFon , m_assetsIconProvider{new AssetsLibraryIconProvider(synchronousFontImageCache)} , m_assetsModel{new AssetsLibraryModel(this)} , m_assetsView{view} - , m_createTextures{view} , m_assetsWidget{Utils::makeUniqueObjectPtr(this)} { setWindowTitle(tr("Assets Library", "Title of assets library widget")); @@ -231,18 +231,20 @@ int AssetsLibraryWidget::qtVersion() const void AssetsLibraryWidget::addTextures(const QStringList &filePaths) { m_assetsView->executeInTransaction(__FUNCTION__, [&] { - m_createTextures.execute(filePaths, - AddTextureMode::Texture, - Utils3D::active3DSceneId(m_assetsView->model())); + CreateTexture(m_assetsView) + .execute(filePaths, + AddTextureMode::Texture, + Utils3D::active3DSceneId(m_assetsView->model())); }); } void AssetsLibraryWidget::addLightProbe(const QString &filePath) { m_assetsView->executeInTransaction(__FUNCTION__, [&] { - m_createTextures.execute({filePath}, - AddTextureMode::LightProbe, - Utils3D::active3DSceneId(m_assetsView->model())); + CreateTexture(m_assetsView) + .execute(filePath, + AddTextureMode::LightProbe, + Utils3D::active3DSceneId(m_assetsView->model())); }); } @@ -251,8 +253,9 @@ void AssetsLibraryWidget::updateContextMenuActionsEnableState() setHasMaterialLibrary(Utils3D::materialLibraryNode(m_assetsView).isValid() && m_assetsView->model()->hasImport("QtQuick3D")); - ModelNode activeSceneEnv = m_createTextures.resolveSceneEnv( - Utils3D::active3DSceneId(m_assetsView->model())); + ModelNode activeSceneEnv = Utils3D::resolveSceneEnv(m_assetsView, + Utils3D::active3DSceneId( + m_assetsView->model())); setHasSceneEnv(activeSceneEnv.isValid()); } diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h index 79deeb9efd3..5456fb139b4 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.h @@ -3,7 +3,6 @@ #pragma once -#include "createtexture.h" #include "previewtooltipbackend.h" #include @@ -135,7 +134,6 @@ private: AssetsLibraryIconProvider *m_assetsIconProvider = nullptr; AssetsLibraryModel *m_assetsModel = nullptr; AssetsLibraryView *m_assetsView = nullptr; - CreateTextures m_createTextures = nullptr; Utils::UniqueObjectPtr m_assetsWidget; std::unique_ptr m_fontPreviewTooltipBackend; diff --git a/src/plugins/qmldesigner/components/componentcore/createtexture.cpp b/src/plugins/qmldesigner/components/componentcore/createtexture.cpp index f595e0e47e7..cd8ea6cfd78 100644 --- a/src/plugins/qmldesigner/components/componentcore/createtexture.cpp +++ b/src/plugins/qmldesigner/components/componentcore/createtexture.cpp @@ -114,10 +114,10 @@ ModelNode CreateTexture::execute(const QString &filePath, AddTextureMode mode, i return {}; if (mode == AddTextureMode::LightProbe && sceneId != -1) - assignTextureAsLightProbe(texture, sceneId); + Utils3D::assignTextureAsLightProbe(m_view, texture, sceneId); - QTimer::singleShot(0, m_view, [this, texture]() { - if (m_view->model() && texture.isValid()) { + QTimer::singleShot(0, m_view, [view = m_view, texture]() { + if (view && view->model() && texture.isValid()) { QmlDesignerPlugin::instance()->mainWidget()->showDockWidget("MaterialBrowser"); Utils3D::selectTexture(texture); } @@ -210,6 +210,12 @@ ModelNode CreateTexture::execute(const ModelNode &texture) return duplicateTextureNode; } +void CreateTexture::execute(const QStringList &filePaths, AddTextureMode mode, int sceneId) +{ + for (const QString &path : filePaths) + execute(path, mode, sceneId); +} + bool CreateTexture::addFileToProject(const QString &filePath) { AddFilesResult result = ModelNodeOperations::addImageToProject( @@ -260,48 +266,4 @@ ModelNode CreateTexture::createTextureFromImage(const Utils::FilePath &assetPat return newTexNode; } -void CreateTexture::assignTextureAsLightProbe(const ModelNode &texture, int sceneId) -{ - ModelNode sceneEnvNode = resolveSceneEnv(sceneId); - QmlObjectNode sceneEnv = sceneEnvNode; - if (sceneEnv.isValid()) { - sceneEnv.setBindingProperty("lightProbe", texture.id()); - sceneEnv.setVariantProperty("backgroundMode", - QVariant::fromValue(Enumeration("SceneEnvironment", - "SkyBox"))); - } -} - -ModelNode CreateTexture::resolveSceneEnv(int sceneId) -{ - ModelNode activeSceneEnv; - ModelNode selectedNode = m_view->firstSelectedModelNode(); - - if (selectedNode.metaInfo().isQtQuick3DSceneEnvironment()) { - activeSceneEnv = selectedNode; - } else if (sceneId != -1) { - ModelNode activeScene = Utils3D::active3DSceneNode(m_view); - if (activeScene.isValid()) { - QmlObjectNode view3D; - if (activeScene.metaInfo().isQtQuick3DView3D()) { - view3D = activeScene; - } else { - ModelNode sceneParent = activeScene.parentProperty().parentModelNode(); - if (sceneParent.metaInfo().isQtQuick3DView3D()) - view3D = sceneParent; - } - if (view3D.isValid()) - activeSceneEnv = m_view->modelNodeForId(view3D.expression("environment")); - } - } - - return activeSceneEnv; -} - -void CreateTextures::execute(const QStringList &filePaths, AddTextureMode mode, int sceneId) -{ - for (const QString &path : filePaths) - CreateTexture::execute(path, mode, sceneId); -} - } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/createtexture.h b/src/plugins/qmldesigner/components/componentcore/createtexture.h index 450a7f7a0db..57ef9893cc0 100644 --- a/src/plugins/qmldesigner/components/componentcore/createtexture.h +++ b/src/plugins/qmldesigner/components/componentcore/createtexture.h @@ -3,7 +3,7 @@ #pragma once -#include +#include namespace Utils { class FilePath; @@ -16,10 +16,8 @@ class ModelNode; enum class AddTextureMode { Image, Texture, LightProbe }; -class CreateTexture : public QObject +class CreateTexture { - Q_OBJECT - public: CreateTexture(AbstractView *view); @@ -28,8 +26,7 @@ public: AddTextureMode mode = AddTextureMode::Texture, int sceneId = -1); ModelNode execute(const ModelNode &texture); - ModelNode resolveSceneEnv(int sceneId); - void assignTextureAsLightProbe(const ModelNode &texture, int sceneId); + void execute(const QStringList &filePaths, AddTextureMode mode, int sceneId = -1); private: bool addFileToProject(const QString &filePath); @@ -38,11 +35,4 @@ private: AbstractView *m_view = nullptr; }; -class CreateTextures : public CreateTexture -{ -public: - using CreateTexture::CreateTexture; - void execute(const QStringList &filePaths, AddTextureMode mode, int sceneId = -1); -}; - } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index dcf690e74a1..4f5bdab700d 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1915,10 +1915,8 @@ ModelNode createTextureNode(AbstractView *view, const QString &imagePath) { QTC_ASSERT(view, return {}); - auto textureCreator = new CreateTexture(view); - ModelNode texture = textureCreator->execute(imagePath, AddTextureMode::Texture); - textureCreator->deleteLater(); - return texture; + CreateTexture textureCreator(view); + return textureCreator.execute(imagePath, AddTextureMode::Texture); } bool dropAsImage3dTexture(const ModelNode &targetNode, diff --git a/src/plugins/qmldesigner/components/componentcore/utils3d.cpp b/src/plugins/qmldesigner/components/componentcore/utils3d.cpp index 7ddd0997cdf..e38fd544084 100644 --- a/src/plugins/qmldesigner/components/componentcore/utils3d.cpp +++ b/src/plugins/qmldesigner/components/componentcore/utils3d.cpp @@ -252,6 +252,43 @@ void applyMaterialToModels(AbstractView *view, const ModelNode &material, }); } +ModelNode resolveSceneEnv(AbstractView *view, int sceneId) +{ + ModelNode activeSceneEnv; + ModelNode selectedNode = view->firstSelectedModelNode(); + + if (selectedNode.metaInfo().isQtQuick3DSceneEnvironment()) { + activeSceneEnv = selectedNode; + } else if (sceneId != -1) { + ModelNode activeScene = Utils3D::active3DSceneNode(view); + if (activeScene.isValid()) { + QmlObjectNode view3D; + if (activeScene.metaInfo().isQtQuick3DView3D()) { + view3D = activeScene; + } else { + ModelNode sceneParent = activeScene.parentProperty().parentModelNode(); + if (sceneParent.metaInfo().isQtQuick3DView3D()) + view3D = sceneParent; + } + if (view3D.isValid()) + activeSceneEnv = view->modelNodeForId(view3D.expression("environment")); + } + } + + return activeSceneEnv; +} + +void assignTextureAsLightProbe(AbstractView *view, const ModelNode &texture, int sceneId) +{ + ModelNode sceneEnvNode = resolveSceneEnv(view, sceneId); + QmlObjectNode sceneEnv = sceneEnvNode; + if (sceneEnv.isValid()) { + sceneEnv.setBindingProperty("lightProbe", texture.id()); + sceneEnv.setVariantProperty("backgroundMode", + QVariant::fromValue(Enumeration("SceneEnvironment", "SkyBox"))); + } +} + // This method should be executed within a transaction as it performs multiple modifications to the model #ifdef QDS_USE_PROJECTSTORAGE ModelNode createMaterial(AbstractView *view, const TypeName &typeName) diff --git a/src/plugins/qmldesigner/components/componentcore/utils3d.h b/src/plugins/qmldesigner/components/componentcore/utils3d.h index 546c90f8e70..6a7899589c3 100644 --- a/src/plugins/qmldesigner/components/componentcore/utils3d.h +++ b/src/plugins/qmldesigner/components/componentcore/utils3d.h @@ -40,10 +40,14 @@ void selectTexture(const ModelNode &texture); ModelNode selectedMaterial(AbstractView *view); ModelNode selectedTexture(AbstractView *view); +ModelNode resolveSceneEnv(AbstractView *view, int sceneId); + QList getSelectedModels(AbstractView *view); void applyMaterialToModels(AbstractView *view, const ModelNode &material, const QList &models, bool add = false); +void assignTextureAsLightProbe(AbstractView *view, const ModelNode &texture, int sceneId); + #ifdef QDS_USE_PROJECTSTORAGE ModelNode createMaterial(AbstractView *view, const TypeName &typeName); #else diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp index 4bcf9e7fd9e..55c96dd9b4b 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp @@ -57,7 +57,6 @@ ContentLibraryView::ContentLibraryView(AsynchronousImageCache &imageCache, ExternalDependenciesInterface &externalDependencies) : AbstractView(externalDependencies) , m_imageCache(imageCache) - , m_createTexture(this) {} ContentLibraryView::~ContentLibraryView() @@ -88,15 +87,17 @@ WidgetInfo ContentLibraryView::widgetInfo() m_draggedBundleItem = item; }); - connect(m_widget, &ContentLibraryWidget::addTextureRequested, this, - [&] (const QString &texPath, AddTextureMode mode) { - executeInTransaction("ContentLibraryView::widgetInfo", [&]() { - m_createTexture.execute(texPath, mode, m_sceneId); - }); - }); + connect(m_widget, + &ContentLibraryWidget::addTextureRequested, + this, + [&](const QString &texPath, AddTextureMode mode) { + executeInTransaction("ContentLibraryView::widgetInfo", [&]() { + CreateTexture(this).execute(texPath, mode, m_sceneId); + }); + }); connect(m_widget, &ContentLibraryWidget::updateSceneEnvStateRequested, this, [&]() { - ModelNode activeSceneEnv = m_createTexture.resolveSceneEnv(m_sceneId); + ModelNode activeSceneEnv = Utils3D::resolveSceneEnv(this, m_sceneId); const bool sceneEnvExists = activeSceneEnv.isValid(); m_widget->texturesModel()->setHasSceneEnv(sceneEnvExists); m_widget->environmentsModel()->setHasSceneEnv(sceneEnvExists); diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.h b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.h index deba7b93a61..f42423fd7d2 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.h +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.h @@ -90,7 +90,6 @@ private: bool m_bundleMaterialAddToSelected = false; bool m_hasQuick3DImport = false; qint32 m_sceneId = -1; - CreateTexture m_createTexture; Utils::FilePath m_iconSavePath; QString m_generatedFolderName; QString m_bundleId; diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index 8d28cea7ca3..e736427139f 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -210,7 +210,7 @@ WidgetInfo MaterialBrowserView::widgetInfo() }); connect(texturesModel, &MaterialBrowserTexturesModel::updateSceneEnvStateRequested, this, [&]() { - ModelNode activeSceneEnv = CreateTexture(this).resolveSceneEnv(m_sceneId); + ModelNode activeSceneEnv = Utils3D::resolveSceneEnv(this, m_sceneId); const bool sceneEnvExists = activeSceneEnv.isValid(); m_widget->materialBrowserTexturesModel()->setHasSceneEnv(sceneEnvExists); }); @@ -223,12 +223,14 @@ WidgetInfo MaterialBrowserView::widgetInfo() m_widget->materialBrowserTexturesModel()->setHasSingleModelSelection(hasModel); }); - connect(texturesModel, &MaterialBrowserTexturesModel::applyAsLightProbeRequested, this, - [&] (const ModelNode &texture) { - executeInTransaction(__FUNCTION__, [&] { - CreateTexture(this).assignTextureAsLightProbe(texture, m_sceneId); - }); - }); + connect(texturesModel, + &MaterialBrowserTexturesModel::applyAsLightProbeRequested, + this, + [&](const ModelNode &texture) { + executeInTransaction(__FUNCTION__, [&] { + Utils3D::assignTextureAsLightProbe(this, texture, m_sceneId); + }); + }); } return createWidgetInfo(m_widget.data(), @@ -240,13 +242,9 @@ WidgetInfo MaterialBrowserView::widgetInfo() void MaterialBrowserView::createTextures(const QStringList &assetPaths) { - auto *create = new CreateTextures(this); - executeInTransaction("MaterialBrowserView::createTextures", [&]() { - create->execute(assetPaths, AddTextureMode::Texture, m_sceneId); + CreateTexture(this).execute(assetPaths, AddTextureMode::Texture, m_sceneId); }); - - create->deleteLater(); } void MaterialBrowserView::modelAttached(Model *model) @@ -741,11 +739,10 @@ void MaterialBrowserView::applyTextureToProperty(const QString &matId, const QSt { executeInTransaction(__FUNCTION__, [&] { if (m_appliedTextureId.isEmpty() && !m_appliedTexturePath.isEmpty()) { - auto texCreator = new CreateTexture(this); - ModelNode tex = texCreator->execute(m_appliedTexturePath, AddTextureMode::Texture); + CreateTexture texCreator(this); + ModelNode tex = texCreator.execute(m_appliedTexturePath, AddTextureMode::Texture); m_appliedTextureId = tex.id(); m_appliedTexturePath.clear(); - texCreator->deleteLater(); } QTC_ASSERT(!m_appliedTextureId.isEmpty(), return); diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index a97bf591459..54aff337002 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -300,10 +300,8 @@ void MaterialBrowserWidget::acceptBundleTextureDropOnMaterial(int matIndex, cons ModelNode mat = m_materialBrowserModel->materialAt(matIndex); QTC_ASSERT(mat.isValid(), return); - auto *creator = new CreateTexture(m_materialBrowserView); - m_materialBrowserView->executeInTransaction(__FUNCTION__, [&] { - ModelNode tex = creator->execute(bundleTexPath.toLocalFile()); + ModelNode tex = CreateTexture(m_materialBrowserView).execute(bundleTexPath.toLocalFile()); QTC_ASSERT(tex.isValid(), return); m_materialBrowserModel->selectMaterial(matIndex); @@ -312,8 +310,6 @@ void MaterialBrowserWidget::acceptBundleTextureDropOnMaterial(int matIndex, cons if (m_materialBrowserView->model()) m_materialBrowserView->model()->endDrag(); - - creator->deleteLater(); } void MaterialBrowserWidget::acceptAssetsDrop(const QList &urls) @@ -329,14 +325,12 @@ void MaterialBrowserWidget::acceptAssetsDropOnMaterial(int matIndex, const QList ModelNode mat = m_materialBrowserModel->materialAt(matIndex); QTC_ASSERT(mat.isValid(), return); - auto *creator = new CreateTexture(m_materialBrowserView); - - QString imageSrc = Utils::findOrDefault(urls, [] (const QUrl &url) { - return Asset(url.toLocalFile()).isValidTextureSource(); - }).toLocalFile(); + QString imageSrc = Utils::findOrDefault(urls, [](const QUrl &url) { + return Asset(url.toLocalFile()).isValidTextureSource(); + }).toLocalFile(); m_materialBrowserView->executeInTransaction(__FUNCTION__, [&] { - ModelNode tex = creator->execute(imageSrc); + ModelNode tex = CreateTexture(m_materialBrowserView).execute(imageSrc); QTC_ASSERT(tex.isValid(), return); m_materialBrowserModel->selectMaterial(matIndex); @@ -345,8 +339,6 @@ void MaterialBrowserWidget::acceptAssetsDropOnMaterial(int matIndex, const QList if (m_materialBrowserView->model()) m_materialBrowserView->model()->endDrag(); - - creator->deleteLater(); } void MaterialBrowserWidget::acceptTextureDropOnMaterial(int matIndex, const QString &texId) diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h index 6674397c77a..350b72dd608 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.h @@ -17,7 +17,6 @@ QT_FORWARD_DECLARE_CLASS(QPixmap) namespace QmlDesigner { -class CreateTextures; class DesignerActionManager; class Model; class ModelNode; @@ -88,7 +87,7 @@ public: void updateToolTipPixmap(const ModelNode &node, const QPixmap &pixmap); signals: - void toolTipPixmapUpdated(const QString &id, const QPixmap &pixmap) const; + void toolTipPixmapUpdated(const QString &id, const QPixmap &pixmap); private: void moveNodesInteractive(NodeAbstractProperty &parentProperty, const QList &modelNodes, @@ -107,7 +106,6 @@ private: bool moveNodeToParent(const NodeAbstractProperty &targetProperty, const ModelNode &newModelNode); QPointer m_view; - Utils::UniqueObjectPtr m_createTextures; mutable QHash m_nodeIndexHash; mutable QHash > m_rowCache; bool m_showOnlyVisibleItems = true; diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp index 767d97be673..74c1ba65a60 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorvalue.cpp @@ -521,9 +521,8 @@ void PropertyEditorValue::commitDrop(const QString &dropData) m_modelNode.view()->executeInTransaction(__FUNCTION__, [&] { ModelNode texture = m_modelNode.view()->modelNodeForInternalId(dropData.toInt()); if (!texture || !texture.metaInfo().isQtQuick3DTexture()) { - auto texCreator = new CreateTexture(m_modelNode.view()); - texture = texCreator->execute(dropData, AddTextureMode::Texture); - texCreator->deleteLater(); + CreateTexture texCreator(m_modelNode.view()); + texture = texCreator.execute(dropData, AddTextureMode::Texture); } // assign the texture to the property diff --git a/src/plugins/qmldesigner/components/textureeditor/textureeditorview.cpp b/src/plugins/qmldesigner/components/textureeditor/textureeditorview.cpp index 94c150626d6..64b1523303e 100644 --- a/src/plugins/qmldesigner/components/textureeditor/textureeditorview.cpp +++ b/src/plugins/qmldesigner/components/textureeditor/textureeditorview.cpp @@ -58,7 +58,6 @@ TextureEditorView::TextureEditorView(AsynchronousImageCache &imageCache, : AbstractView{externalDependencies} , m_imageCache(imageCache) , m_stackedWidget(new QStackedWidget) - , m_createTexture(new CreateTexture(this)) , m_dynamicPropertiesModel(new DynamicPropertiesModel(true, this)) { m_updateShortcut = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F12), m_stackedWidget); @@ -399,7 +398,7 @@ void TextureEditorView::handleToolBarAction(int action) case TextureEditorContextObject::AddNewTexture: { if (!model()) break; - m_createTexture->execute(); + CreateTexture(this).execute(); break; } @@ -845,7 +844,7 @@ void TextureEditorView::importsChanged([[maybe_unused]] const Imports &addedImpo void TextureEditorView::duplicateTexture(const ModelNode &texture) { QTC_ASSERT(texture.isValid(), return); - m_createTexture->execute(texture); + CreateTexture(this).execute(texture); } void TextureEditorView::customNotification([[maybe_unused]] const AbstractView *view, diff --git a/src/plugins/qmldesigner/components/textureeditor/textureeditorview.h b/src/plugins/qmldesigner/components/textureeditor/textureeditorview.h index 5611cf3ab6b..00336998b6c 100644 --- a/src/plugins/qmldesigner/components/textureeditor/textureeditorview.h +++ b/src/plugins/qmldesigner/components/textureeditor/textureeditorview.h @@ -18,7 +18,6 @@ QT_END_NAMESPACE namespace QmlDesigner { -class CreateTexture; class DynamicPropertiesModel; class ModelNode; class QmlObjectNode; @@ -126,7 +125,6 @@ private: bool m_selectedTextureChanged = false; QPointer m_colorDialog; - QPointer m_createTexture; DynamicPropertiesModel *m_dynamicPropertiesModel = nullptr; };