aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/designercore')
-rw-r--r--src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/include/abstractview.h5
-rw-r--r--src/plugins/qmldesigner/designercore/include/metainforeader.h1
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodehints.h2
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodemetainfo.h1
-rw-r--r--src/plugins/qmldesigner/designercore/include/qmlitemnode.h7
-rw-r--r--src/plugins/qmldesigner/designercore/include/subcomponentmanager.h2
-rw-r--r--src/plugins/qmldesigner/designercore/include/viewmanager.h2
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h4
-rw-r--r--src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp27
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp24
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp5
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp8
-rw-r--r--src/plugins/qmldesigner/designercore/model/abstractview.cpp15
-rw-r--r--src/plugins/qmldesigner/designercore/model/modelmerger.cpp40
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlanchors.cpp119
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp55
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp13
-rw-r--r--src/plugins/qmldesigner/designercore/model/viewmanager.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.h2
-rw-r--r--src/plugins/qmldesigner/designercore/rewritertransaction.cpp2
25 files changed, 207 insertions, 147 deletions
diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp
index 809fe37ed4..7b30dcd179 100644
--- a/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp
+++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrefactoring.cpp
@@ -111,7 +111,7 @@ bool QmlRefactoring::addProperty(int parentLocation,
const TypeName &dynamicTypeName)
{
if (parentLocation < 0)
- return false;
+ return true; /* Node is not in hierarchy, yet and operation can be ignored. */
AddPropertyVisitor visit(*textModifier, parentLocation, name, value, propertyType, m_propertyOrder, dynamicTypeName);
return visit(qmlDocument->qmlProgram());
diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h
index d32a403e5c..dcbeb5ee74 100644
--- a/src/plugins/qmldesigner/designercore/include/abstractview.h
+++ b/src/plugins/qmldesigner/designercore/include/abstractview.h
@@ -39,6 +39,8 @@
#include <QObject>
#include <QPointer>
+#include <functional>
+
QT_BEGIN_NAMESPACE
class QStyle;
class QToolButton;
@@ -263,6 +265,9 @@ public:
void activateTimelineRecording(const ModelNode &timeline);
void deactivateTimelineRecording();
+ using OperationBlock = std::function<void()>;
+ bool executeInTransaction(const QByteArray &identifier, const OperationBlock &lambda);
+
protected:
void setModel(Model * model);
void removeModel();
diff --git a/src/plugins/qmldesigner/designercore/include/metainforeader.h b/src/plugins/qmldesigner/designercore/include/metainforeader.h
index 20672e0e05..eb725b5f86 100644
--- a/src/plugins/qmldesigner/designercore/include/metainforeader.h
+++ b/src/plugins/qmldesigner/designercore/include/metainforeader.h
@@ -39,7 +39,6 @@ class ItemLibraryEntry;
namespace Internal {
-
class MetaInfoReader : protected QmlJS::SimpleAbstractStreamReader
{
Q_DECLARE_TR_FUNCTIONS(QmlDesigner::Internal::MetaInfoReader)
diff --git a/src/plugins/qmldesigner/designercore/include/nodehints.h b/src/plugins/qmldesigner/designercore/include/nodehints.h
index 1e8b7d99e4..7fed390ee0 100644
--- a/src/plugins/qmldesigner/designercore/include/nodehints.h
+++ b/src/plugins/qmldesigner/designercore/include/nodehints.h
@@ -64,9 +64,11 @@ public:
bool isStackedContainer() const;
bool canBeReparentedTo(const ModelNode &potenialParent);
QString indexPropertyForStackedContainer() const;
+ QStringList visibleNonDefaultProperties() const;
bool takesOverRenderingOfChildren() const;
bool visibleInNavigator() const;
bool visibleInLibrary() const;
+ QString forceNonDefaultProperty() const;
QHash<QString, QString> hints() const;
static NodeHints fromModelNode(const ModelNode &modelNode);
diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h
index 5d2d171ae7..09daa924aa 100644
--- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h
+++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h
@@ -85,6 +85,7 @@ public:
bool defaultPropertyIsComponent() const;
TypeName typeName() const;
+ TypeName simplifiedTypeName() const;
int majorVersion() const;
int minorVersion() const;
diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h
index f857a36432..1560ebb3ff 100644
--- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h
+++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h
@@ -53,10 +53,15 @@ public:
static bool isItemOrWindow(const ModelNode &modelNode);
static QmlItemNode createQmlItemNode(AbstractView *view,
+ const ItemLibraryEntry &itemLibraryEntry,
+ const QPointF &position,
+ QmlItemNode parentQmlItemNode);
+
+ static QmlObjectNode createQmlObjectNode(AbstractView *view,
const ItemLibraryEntry &itemLibraryEntry,
const QPointF &position,
QmlItemNode parentQmlItemNode);
- static QmlItemNode createQmlItemNode(AbstractView *view,
+ static QmlObjectNode createQmlObjectNode(AbstractView *view,
const ItemLibraryEntry &itemLibraryEntry,
const QPointF &position,
NodeAbstractProperty parentproperty);
diff --git a/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h b/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h
index dc2f0732ee..da21c17cd9 100644
--- a/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h
+++ b/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h
@@ -60,7 +60,7 @@ private: // functions
void addImport(int pos, const Import &import);
void removeImport(int pos);
void parseDirectories();
- QList<QFileInfo> watchedFiles(const QString &canonicalDirPath);
+ QFileInfoList watchedFiles(const QString &canonicalDirPath);
void unregisterQmlFile(const QFileInfo &fileInfo, const QString &qualifier);
void registerQmlFile(const QFileInfo &fileInfo, const QString &qualifier, bool addToLibrary);
Model *model() const;
diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h
index 4673e341cc..71c869916e 100644
--- a/src/plugins/qmldesigner/designercore/include/viewmanager.h
+++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h
@@ -80,7 +80,7 @@ public:
void disableWidgets();
void enableWidgets();
- void pushFileOnCrumbleBar(const Utils::FileName &fileName);
+ void pushFileOnCrumbleBar(const Utils::FilePath &fileName);
void pushInFileComponentOnCrumbleBar(const ModelNode &modelNode);
void nextFileIsCalledInternally();
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
index 609db1fe95..c0723bf751 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp
@@ -143,17 +143,17 @@ NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceV
const int second = 1000;
const int waitConstant = 8 * second;
if (m_qmlPuppetEditorProcess->waitForStarted(waitConstant)) {
- connect(m_qmlPuppetEditorProcess.data(), static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
+ connect(m_qmlPuppetEditorProcess.data(), QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
m_qmlPuppetEditorProcess.data(), &QProcess::deleteLater);
qCInfo(instanceViewBenchmark) << "puppets started:" << m_benchmarkTimer.elapsed();
if (runModus == NormalModus) {
m_qmlPuppetPreviewProcess->waitForStarted(waitConstant / 2);
- connect(m_qmlPuppetPreviewProcess.data(), static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
+ connect(m_qmlPuppetPreviewProcess.data(), QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
m_qmlPuppetPreviewProcess.data(), &QProcess::deleteLater);
m_qmlPuppetRenderProcess->waitForStarted(waitConstant / 2);
- connect(m_qmlPuppetRenderProcess.data(), static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
+ connect(m_qmlPuppetRenderProcess.data(), QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
m_qmlPuppetRenderProcess.data(), &QProcess::deleteLater);
}
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
index d0309aacaa..60565261d2 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h
@@ -29,8 +29,8 @@
#include <QPointer>
#include <QProcess>
+#include <QElapsedTimer>
#include <QFile>
-#include <QTime>
#include <QTimer>
QT_BEGIN_NAMESPACE
@@ -127,7 +127,7 @@ private:
quint32 m_thirdLastReadCommandCounter = 0;
RunModus m_runModus;
int m_synchronizeId = -1;
- QTime m_benchmarkTimer;
+ QElapsedTimer m_benchmarkTimer;
bool m_destructing = false;
};
diff --git a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp
index 8ab932e8b1..0959dd4a9e 100644
--- a/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/puppetcreator.cpp
@@ -90,7 +90,7 @@ QHash<Core::Id, PuppetCreator::PuppetType> PuppetCreator::m_qml2PuppetForKitPupp
QByteArray PuppetCreator::qtHash() const
{
- QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitInformation::qtVersion(m_kit);
+ QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitAspect::qtVersion(m_kit);
if (currentQtVersion) {
return QCryptographicHash::hash(currentQtVersion->qmakeProperty("QT_INSTALL_DATA").toUtf8(),
QCryptographicHash::Sha1)
@@ -102,7 +102,7 @@ QByteArray PuppetCreator::qtHash() const
QDateTime PuppetCreator::qtLastModified() const
{
- QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitInformation::qtVersion(m_kit);
+ QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitAspect::qtVersion(m_kit);
if (currentQtVersion)
return QFileInfo(currentQtVersion->qmakeProperty("QT_INSTALL_LIBS")).lastModified();
@@ -153,7 +153,7 @@ QString PuppetCreator::getStyleConfigFileName() const
{
#ifndef QMLDESIGNER_TEST
if (m_currentProject) {
- for (const Utils::FileName &fileName : m_currentProject->files(ProjectExplorer::Project::SourceFiles)) {
+ for (const Utils::FilePath &fileName : m_currentProject->files(ProjectExplorer::Project::SourceFiles)) {
if (fileName.fileName() == "qtquickcontrols2.conf")
return fileName.toString();
}
@@ -419,10 +419,10 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
Utils::Environment environment = Utils::Environment::systemEnvironment();
if (!useOnlyFallbackPuppet())
m_kit->addToEnvironment(environment);
- const QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(m_kit);
+ const QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(m_kit);
if (QTC_GUARD(qt)) { // Kits without a Qt version should not have a puppet!
// Update PATH to include QT_HOST_BINS
- const Utils::FileName qtBinPath = qt->binPath();
+ const Utils::FilePath qtBinPath = qt->binPath();
environment.prependOrSetPath(qtBinPath.toString());
}
environment.set("QML_BAD_GUI_RENDER_LOOP", "true");
@@ -472,10 +472,15 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
if (!styleConfigFileName.isEmpty())
environment.appendOrSet("QT_QUICK_CONTROLS_CONF", styleConfigFileName);
+ QStringList customFileSelectors;
+
if (m_currentProject && m_currentProject->activeTarget()) {
QStringList designerImports = m_currentProject->activeTarget()
->additionalData("QmlDesignerImportPath").toStringList();
importPaths.append(designerImports);
+
+ customFileSelectors = m_currentProject->activeTarget()
+ ->additionalData("CustomFileSelectorsData").toStringList();
}
if (m_availablePuppetType == FallbackPuppet)
@@ -483,10 +488,14 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
environment.appendOrSet("QML2_IMPORT_PATH", importPaths.join(pathSep), pathSep);
+ if (!customFileSelectors.isEmpty())
+ environment.appendOrSet("QML_FILE_SELECTORS", customFileSelectors.join(","), pathSep);
+
qCInfo(puppetStart) << Q_FUNC_INFO;
qCInfo(puppetStart) << "Puppet qrc mapping" << m_qrcMapping;
qCInfo(puppetStart) << "Puppet import paths:" << importPaths;
qCInfo(puppetStart) << "Puppet environment:" << environment.toStringList();
+ qCInfo(puppetStart) << "Puppet selectors:" << customFileSelectors;
return environment.toProcessEnvironment();
}
@@ -497,18 +506,18 @@ QString PuppetCreator::buildCommand() const
m_kit->addToEnvironment(environment);
ProjectExplorer::ToolChain *toolChain
- = ProjectExplorer::ToolChainKitInformation::toolChain(m_kit,
+ = ProjectExplorer::ToolChainKitAspect::toolChain(m_kit,
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
if (toolChain)
- return toolChain->makeCommand(environment);
+ return toolChain->makeCommand(environment).toString();
return QString();
}
QString PuppetCreator::qmakeCommand() const
{
- QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitInformation::qtVersion(m_kit);
+ QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitAspect::qtVersion(m_kit);
if (currentQtVersion)
return currentQtVersion->qmakeCommand().toString();
@@ -595,7 +604,7 @@ static bool nonEarlyQt5Version(const QtSupport::QtVersionNumber &currentQtVersio
bool PuppetCreator::qtIsSupported() const
{
- QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitInformation::qtVersion(m_kit);
+ QtSupport::BaseQtVersion *currentQtVersion = QtSupport::QtKitAspect::qtVersion(m_kit);
return currentQtVersion
&& currentQtVersion->isValid()
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp
index be7623323d..dcb350c448 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp
@@ -51,7 +51,6 @@
namespace QmlDesigner {
-
static bool isSwipeView(const ModelNode &node)
{
if (node.metaInfo().isValid()
@@ -193,6 +192,19 @@ QString NodeHints::indexPropertyForStackedContainer() const
return Internal::evaluateExpression(expression, modelNode(), ModelNode()).toString();
}
+QStringList NodeHints::visibleNonDefaultProperties() const
+{
+ if (!isValid())
+ return {};
+
+ const QString expression = m_hints.value("visibleNonDefaultProperties");
+
+ if (expression.isEmpty())
+ return {};
+
+ return Internal::evaluateExpression(expression, modelNode(), ModelNode()).toString().split(",");
+}
+
bool NodeHints::takesOverRenderingOfChildren() const
{
if (!isValid())
@@ -214,6 +226,16 @@ bool NodeHints::visibleInLibrary() const
return evaluateBooleanExpression("visibleInLibrary", true);
}
+QString NodeHints::forceNonDefaultProperty() const
+{
+ const QString expression = m_hints.value("forceNonDefaultProperty");
+
+ if (expression.isEmpty())
+ return {};
+
+ return Internal::evaluateExpression(expression, modelNode(), ModelNode()).toString();
+}
+
QHash<QString, QString> NodeHints::hints() const
{
return m_hints;
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
index 9c88cd130a..25ff950644 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
@@ -1483,6 +1483,11 @@ TypeName NodeMetaInfo::typeName() const
return m_privateData->qualfiedTypeName();
}
+TypeName NodeMetaInfo::simplifiedTypeName() const
+{
+ return typeName().split('.').constLast();
+}
+
int NodeMetaInfo::majorVersion() const
{
return m_privateData->majorVersion();
diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp
index bc9dd3c184..85a84af9a3 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp
@@ -202,8 +202,8 @@ void SubComponentManager::parseDirectory(const QString &canonicalDirPath, bool a
dir.setNameFilters(QStringList(s_qmlFilePattern));
dir.setFilter(QDir::Files | QDir::Readable | QDir::CaseSensitive);
- QList<QFileInfo> monitoredList = watchedFiles(canonicalDirPath);
- QList<QFileInfo> newList;
+ QFileInfoList monitoredList = watchedFiles(canonicalDirPath);
+ QFileInfoList newList;
foreach (const QFileInfo &qmlFile, dir.entryInfoList()) {
if (QFileInfo(m_filePath.toLocalFile()) == qmlFile) {
// do not parse main file
@@ -280,9 +280,9 @@ void SubComponentManager::parseFile(const QString &canonicalFilePath)
}
// dirInfo must already contain a canonical path
-QList<QFileInfo> SubComponentManager::watchedFiles(const QString &canonicalDirPath)
+QFileInfoList SubComponentManager::watchedFiles(const QString &canonicalDirPath)
{
- QList<QFileInfo> files;
+ QFileInfoList files;
foreach (const QString &monitoredFile, m_watcher.files()) {
QFileInfo fileInfo(monitoredFile);
diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp
index 68e11782df..eb7ed16b9a 100644
--- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp
+++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp
@@ -44,7 +44,6 @@
namespace QmlDesigner {
-
/*!
\class QmlDesigner::AbstractView
\ingroup CoreModel
@@ -617,6 +616,20 @@ void AbstractView::deactivateTimelineRecording()
model()->d->notifyCurrentTimelineChanged(ModelNode());
}
+bool AbstractView::executeInTransaction(const QByteArray &identifier, const AbstractView::OperationBlock &lambda)
+{
+ try {
+ RewriterTransaction transaction = beginRewriterTransaction(identifier);
+ lambda();
+ transaction.commit();
+ } catch (const Exception &e) {
+ e.showException();
+ return false;
+ }
+
+ return true;
+}
+
QList<ModelNode> AbstractView::allModelNodes() const
{
return toModelNodeList(model()->d->allNodes());
diff --git a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
index 161cf1f9f5..8517f9cb82 100644
--- a/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/modelmerger.cpp
@@ -178,29 +178,23 @@ void ModelMerger::replaceModel(const ModelNode &modelNode)
view()->model()->changeImports(modelNode.model()->imports(), {});
view()->model()->setFileUrl(modelNode.model()->fileUrl());
- try {
- RewriterTransaction transaction(view()->beginRewriterTransaction(QByteArrayLiteral("ModelMerger::replaceModel")));
-
- ModelNode rootNode(view()->rootModelNode());
-
- foreach (const PropertyName &propertyName, rootNode.propertyNames())
- rootNode.removeProperty(propertyName);
-
- QHash<QString, QString> idRenamingHash;
- setupIdRenamingHash(modelNode, idRenamingHash, view());
-
- syncAuxiliaryProperties(rootNode, modelNode);
- syncVariantProperties(rootNode, modelNode);
- syncBindingProperties(rootNode, modelNode, idRenamingHash);
- syncId(rootNode, modelNode, idRenamingHash);
- syncNodeProperties(rootNode, modelNode, idRenamingHash, view());
- syncNodeListProperties(rootNode, modelNode, idRenamingHash, view());
- m_view->changeRootNodeType(modelNode.type(), modelNode.majorVersion(), modelNode.minorVersion());
-
- transaction.commit();
- } catch (const RewritingException &e) {
- qWarning() << e.description(); //silent error
- }
+ view()->executeInTransaction("ModelMerger::replaceModel", [this, modelNode](){
+ ModelNode rootNode(view()->rootModelNode());
+
+ foreach (const PropertyName &propertyName, rootNode.propertyNames())
+ rootNode.removeProperty(propertyName);
+
+ QHash<QString, QString> idRenamingHash;
+ setupIdRenamingHash(modelNode, idRenamingHash, view());
+
+ syncAuxiliaryProperties(rootNode, modelNode);
+ syncVariantProperties(rootNode, modelNode);
+ syncBindingProperties(rootNode, modelNode, idRenamingHash);
+ syncId(rootNode, modelNode, idRenamingHash);
+ syncNodeProperties(rootNode, modelNode, idRenamingHash, view());
+ syncNodeListProperties(rootNode, modelNode, idRenamingHash, view());
+ m_view->changeRootNodeType(modelNode.type(), modelNode.majorVersion(), modelNode.minorVersion());
+ });
}
} //namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp b/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp
index c7a9e5aa28..ba821dd788 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlanchors.cpp
@@ -31,7 +31,6 @@
namespace QmlDesigner {
-
static PropertyName lineTypeToString(AnchorLineType lineType)
{
switch (lineType) {
@@ -162,22 +161,23 @@ void QmlAnchors::setAnchor(AnchorLineType sourceAnchorLine,
const QmlItemNode &targetQmlItemNode,
AnchorLineType targetAnchorLine)
{
- RewriterTransaction transaction = qmlItemNode().view()->beginRewriterTransaction(QByteArrayLiteral("QmlAnchors::setAnchor"));
- if (qmlItemNode().isInBaseState()) {
- if ((qmlItemNode().nodeInstance().hasAnchor("anchors.fill") && (sourceAnchorLine & AnchorLineFill))
- || ((qmlItemNode().nodeInstance().hasAnchor("anchors.centerIn") && (sourceAnchorLine & AnchorLineCenter)))) {
- removeAnchor(sourceAnchorLine);
- }
+ qmlItemNode().view()->executeInTransaction("QmlAnchors::setAnchor", [this, sourceAnchorLine, targetQmlItemNode, targetAnchorLine](){
+ if (qmlItemNode().isInBaseState()) {
+ if ((qmlItemNode().nodeInstance().hasAnchor("anchors.fill") && (sourceAnchorLine & AnchorLineFill))
+ || ((qmlItemNode().nodeInstance().hasAnchor("anchors.centerIn") && (sourceAnchorLine & AnchorLineCenter)))) {
+ removeAnchor(sourceAnchorLine);
+ }
- const PropertyName propertyName = anchorPropertyName(sourceAnchorLine);
- ModelNode targetModelNode = targetQmlItemNode.modelNode();
- QString targetExpression = targetModelNode.validId();
- if (targetQmlItemNode.modelNode() == qmlItemNode().modelNode().parentProperty().parentModelNode())
- targetExpression = QLatin1String("parent");
- if (sourceAnchorLine != AnchorLineCenter && sourceAnchorLine != AnchorLineFill)
- targetExpression = targetExpression + QLatin1Char('.') + QString::fromLatin1(lineTypeToString(targetAnchorLine));
- qmlItemNode().modelNode().bindingProperty(propertyName).setExpression(targetExpression);
- }
+ const PropertyName propertyName = anchorPropertyName(sourceAnchorLine);
+ ModelNode targetModelNode = targetQmlItemNode.modelNode();
+ QString targetExpression = targetModelNode.validId();
+ if (targetQmlItemNode.modelNode() == qmlItemNode().modelNode().parentProperty().parentModelNode())
+ targetExpression = QLatin1String("parent");
+ if (sourceAnchorLine != AnchorLineCenter && sourceAnchorLine != AnchorLineFill)
+ targetExpression = targetExpression + QLatin1Char('.') + QString::fromLatin1(lineTypeToString(targetAnchorLine));
+ qmlItemNode().modelNode().bindingProperty(propertyName).setExpression(targetExpression);
+ }
+ });
}
bool detectHorizontalCycle(const ModelNode &node, QList<ModelNode> knownNodeList)
@@ -316,47 +316,49 @@ AnchorLine QmlAnchors::instanceAnchor(AnchorLineType sourceAnchorLine) const
void QmlAnchors::removeAnchor(AnchorLineType sourceAnchorLine)
{
- RewriterTransaction transaction = qmlItemNode().view()->beginRewriterTransaction(QByteArrayLiteral("QmlAnchors::removeAnchor"));
- if (qmlItemNode().isInBaseState()) {
- const PropertyName propertyName = anchorPropertyName(sourceAnchorLine);
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.fill") && (sourceAnchorLine & AnchorLineFill)) {
- qmlItemNode().modelNode().removeProperty("anchors.fill");
- qmlItemNode().modelNode().bindingProperty("anchors.top").setExpression(QLatin1String("parent.top"));
- qmlItemNode().modelNode().bindingProperty("anchors.left").setExpression(QLatin1String("parent.left"));
- qmlItemNode().modelNode().bindingProperty("anchors.bottom").setExpression(QLatin1String("parent.bottom"));
- qmlItemNode().modelNode().bindingProperty("anchors.right").setExpression(QLatin1String("parent.right"));
+ qmlItemNode().view()->executeInTransaction("QmlAnchors::removeAnchor", [this, sourceAnchorLine](){
+ if (qmlItemNode().isInBaseState()) {
+ const PropertyName propertyName = anchorPropertyName(sourceAnchorLine);
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.fill") && (sourceAnchorLine & AnchorLineFill)) {
+ qmlItemNode().modelNode().removeProperty("anchors.fill");
+ qmlItemNode().modelNode().bindingProperty("anchors.top").setExpression(QLatin1String("parent.top"));
+ qmlItemNode().modelNode().bindingProperty("anchors.left").setExpression(QLatin1String("parent.left"));
+ qmlItemNode().modelNode().bindingProperty("anchors.bottom").setExpression(QLatin1String("parent.bottom"));
+ qmlItemNode().modelNode().bindingProperty("anchors.right").setExpression(QLatin1String("parent.right"));
+
+ } else if (qmlItemNode().nodeInstance().hasAnchor("anchors.centerIn") && (sourceAnchorLine & AnchorLineCenter)) {
+ qmlItemNode().modelNode().removeProperty("anchors.centerIn");
+ qmlItemNode().modelNode().bindingProperty("anchors.horizontalCenter").setExpression(QLatin1String("parent.horizontalCenter"));
+ qmlItemNode().modelNode().bindingProperty("anchors.verticalCenter").setExpression(QLatin1String("parent.verticalCenter"));
+ }
- } else if (qmlItemNode().nodeInstance().hasAnchor("anchors.centerIn") && (sourceAnchorLine & AnchorLineCenter)) {
- qmlItemNode().modelNode().removeProperty("anchors.centerIn");
- qmlItemNode().modelNode().bindingProperty("anchors.horizontalCenter").setExpression(QLatin1String("parent.horizontalCenter"));
- qmlItemNode().modelNode().bindingProperty("anchors.verticalCenter").setExpression(QLatin1String("parent.verticalCenter"));
+ qmlItemNode().modelNode().removeProperty(propertyName);
}
-
- qmlItemNode().modelNode().removeProperty(propertyName);
- }
+ });
}
void QmlAnchors::removeAnchors()
{
- RewriterTransaction transaction = qmlItemNode().view()->beginRewriterTransaction(QByteArrayLiteral("QmlAnchors::removeAnchors"));
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.fill"))
- qmlItemNode().modelNode().removeProperty("anchors.fill");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.centerIn"))
- qmlItemNode().modelNode().removeProperty("anchors.centerIn");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.top"))
- qmlItemNode().modelNode().removeProperty("anchors.top");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.left"))
- qmlItemNode().modelNode().removeProperty("anchors.left");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.right"))
- qmlItemNode().modelNode().removeProperty("anchors.right");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.bottom"))
- qmlItemNode().modelNode().removeProperty("anchors.bottom");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.horizontalCenter"))
- qmlItemNode().modelNode().removeProperty("anchors.horizontalCenter");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.verticalCenter"))
- qmlItemNode().modelNode().removeProperty("anchors.verticalCenter");
- if (qmlItemNode().nodeInstance().hasAnchor("anchors.baseline"))
- qmlItemNode().modelNode().removeProperty("anchors.baseline");
+ qmlItemNode().view()->executeInTransaction("QmlAnchors::removeAnchors", [this](){
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.fill"))
+ qmlItemNode().modelNode().removeProperty("anchors.fill");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.centerIn"))
+ qmlItemNode().modelNode().removeProperty("anchors.centerIn");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.top"))
+ qmlItemNode().modelNode().removeProperty("anchors.top");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.left"))
+ qmlItemNode().modelNode().removeProperty("anchors.left");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.right"))
+ qmlItemNode().modelNode().removeProperty("anchors.right");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.bottom"))
+ qmlItemNode().modelNode().removeProperty("anchors.bottom");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.horizontalCenter"))
+ qmlItemNode().modelNode().removeProperty("anchors.horizontalCenter");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.verticalCenter"))
+ qmlItemNode().modelNode().removeProperty("anchors.verticalCenter");
+ if (qmlItemNode().nodeInstance().hasAnchor("anchors.baseline"))
+ qmlItemNode().modelNode().removeProperty("anchors.baseline");
+ });
}
bool QmlAnchors::instanceHasAnchor(AnchorLineType sourceAnchorLine) const
@@ -533,13 +535,14 @@ void QmlAnchors::removeMargin(AnchorLineType sourceAnchorLineType)
void QmlAnchors::removeMargins()
{
- RewriterTransaction transaction = qmlItemNode().view()->beginRewriterTransaction(QByteArrayLiteral("QmlAnchors::removeMargins"));
- removeMargin(AnchorLineLeft);
- removeMargin(AnchorLineRight);
- removeMargin(AnchorLineTop);
- removeMargin(AnchorLineBottom);
- removeMargin(AnchorLineHorizontalCenter);
- removeMargin(AnchorLineVerticalCenter);
+ qmlItemNode().view()->executeInTransaction("QmlAnchors::removeMargins", [this](){
+ removeMargin(AnchorLineLeft);
+ removeMargin(AnchorLineRight);
+ removeMargin(AnchorLineTop);
+ removeMargin(AnchorLineBottom);
+ removeMargin(AnchorLineHorizontalCenter);
+ removeMargin(AnchorLineVerticalCenter);
+ });
}
void QmlAnchors::fill()
diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index f02ca1ead7..65b34f1de4 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -85,8 +85,15 @@ static QmlItemNode createQmlItemNodeFromSource(AbstractView *view, const QString
return QmlItemNode();
}
+QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view,
+ const ItemLibraryEntry &itemLibraryEntry,
+ const QPointF &position,
+ QmlItemNode parentQmlItemNode)
+{
+ return QmlItemNode(createQmlObjectNode(view, itemLibraryEntry, position, parentQmlItemNode));
+}
-QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode)
+QmlObjectNode QmlItemNode::createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, QmlItemNode parentQmlItemNode)
{
if (!parentQmlItemNode.isValid())
parentQmlItemNode = QmlItemNode(view->rootModelNode());
@@ -95,16 +102,14 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
NodeAbstractProperty parentProperty = parentQmlItemNode.defaultNodeAbstractProperty();
- return QmlItemNode::createQmlItemNode(view, itemLibraryEntry, position, parentProperty);
+ return QmlItemNode::createQmlObjectNode(view, itemLibraryEntry, position, parentProperty);
}
-QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty)
+QmlObjectNode QmlItemNode::createQmlObjectNode(AbstractView *view, const ItemLibraryEntry &itemLibraryEntry, const QPointF &position, NodeAbstractProperty parentproperty)
{
- QmlItemNode newQmlItemNode;
-
- try {
- RewriterTransaction transaction = view->beginRewriterTransaction(QByteArrayLiteral("QmlItemNode::createQmlItemNode"));
+ QmlObjectNode newQmlObjectNode;
+ view->executeInTransaction("QmlItemNode::createQmlItemNode", [=, &newQmlObjectNode, &parentproperty](){
NodeMetaInfo metaInfo = view->model()->metaInfo(itemLibraryEntry.typeName());
int minorVersion = metaInfo.minorVersion();
@@ -130,34 +135,31 @@ QmlItemNode QmlItemNode::createQmlItemNode(AbstractView *view, const ItemLibrary
}
}
- newQmlItemNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList));
+ newQmlObjectNode = QmlItemNode(view->createModelNode(itemLibraryEntry.typeName(), majorVersion, minorVersion, propertyPairList));
} else {
- newQmlItemNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
+ newQmlObjectNode = createQmlItemNodeFromSource(view, itemLibraryEntry.qmlSource(), position);
}
if (parentproperty.isValid())
- parentproperty.reparentHere(newQmlItemNode);
+ parentproperty.reparentHere(newQmlObjectNode);
- if (!newQmlItemNode.isValid())
- return newQmlItemNode;
+ if (!newQmlObjectNode.isValid())
+ return;
- newQmlItemNode.setId(view->generateNewId(itemLibraryEntry.name()));
+ newQmlObjectNode.setId(view->generateNewId(itemLibraryEntry.name()));
for (const auto &propertyBindingEntry : propertyBindingList)
- newQmlItemNode.modelNode().bindingProperty(propertyBindingEntry.first).setExpression(propertyBindingEntry.second);
+ newQmlObjectNode.modelNode().bindingProperty(propertyBindingEntry.first).setExpression(propertyBindingEntry.second);
for (const auto &propertyBindingEntry : propertyEnumList)
- newQmlItemNode.modelNode().variantProperty(propertyBindingEntry.first).setEnumeration(propertyBindingEntry.second.toUtf8());
+ newQmlObjectNode.modelNode().variantProperty(propertyBindingEntry.first).setEnumeration(propertyBindingEntry.second.toUtf8());
- Q_ASSERT(newQmlItemNode.isValid());
- }
- catch (const RewritingException &e) {
- e.showException();
- }
+ Q_ASSERT(newQmlObjectNode.isValid());
+ });
- Q_ASSERT(newQmlItemNode.isValid());
+ Q_ASSERT(newQmlObjectNode.isValid());
- return newQmlItemNode;
+ return newQmlObjectNode;
}
QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QString &imageName, const QPointF &position, QmlItemNode parentQmlItemNode)
@@ -174,10 +176,8 @@ QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QS
{
QmlItemNode newQmlItemNode;
- if (parentproperty.isValid()) {
- RewriterTransaction transaction = view->beginRewriterTransaction(QByteArrayLiteral("QmlItemNode::createQmlItemNodeFromImage"));
-
- if (view->model()->hasNodeMetaInfo("QtQuick.Image")) {
+ if (parentproperty.isValid() && view->model()->hasNodeMetaInfo("QtQuick.Image")) {
+ view->executeInTransaction("QmlItemNode::createQmlItemNodeFromImage", [=, &newQmlItemNode, &parentproperty](){
NodeMetaInfo metaInfo = view->model()->metaInfo("QtQuick.Image");
QList<QPair<PropertyName, QVariant> > propertyPairList;
propertyPairList.append({PropertyName("x"), QVariant(qRound(position.x()))});
@@ -200,8 +200,7 @@ QmlItemNode QmlItemNode::createQmlItemNodeFromImage(AbstractView *view, const QS
newQmlItemNode.modelNode().variantProperty("fillMode").setEnumeration("Image.PreserveAspectFit");
Q_ASSERT(newQmlItemNode.isValid());
- }
- Q_ASSERT(newQmlItemNode.isValid());
+ });
}
return newQmlItemNode;
diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp
index 65ed482bfb..53e29b7157 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp
@@ -263,7 +263,7 @@ QString QmlObjectNode::stripedTranslatableText(const PropertyName &name) const
return regularExpressionPatter.cap(2);
return instanceValue(name).toString();
}
- return modelNode().variantProperty(name).value().toString();
+ return instanceValue(name).toString();
}
QString QmlObjectNode::expression(const PropertyName &name) const
diff --git a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
index 08105bf2be..8ab244fe2b 100644
--- a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp
@@ -41,12 +41,10 @@ using namespace QmlDesigner::Internal;
inline static QString properColorName(const QColor &color)
{
- QString s;
if (color.alpha() == 255)
- s.sprintf("#%02x%02x%02x", color.red(), color.green(), color.blue());
+ return QString::asprintf("#%02x%02x%02x", color.red(), color.green(), color.blue());
else
- s.sprintf("#%02x%02x%02x%02x", color.alpha(), color.red(), color.green(), color.blue());
- return s;
+ return QString::asprintf("#%02x%02x%02x%02x", color.alpha(), color.red(), color.green(), color.blue());
}
inline static QString doubleToString(double d)
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 739011f092..b9b82f5714 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -48,10 +48,10 @@
#include <qmljs/qmljscheck.h>
#include <qmljs/qmljsutils.h>
#include <qmljs/qmljsmodelmanagerinterface.h>
-#include <qmljs/qmljsqrcparser.h>
#include <qmljs/qmljsinterpreter.h>
#include <qmljs/qmljsvalueowner.h>
+#include <utils/qrcparser.h>
#include <utils/qtcassert.h>
#include <QSet>
@@ -372,6 +372,13 @@ bool smartVeryFuzzyCompare(const QVariant &value1, const QVariant &value2)
return false;
}
+bool smartColorCompare(const QVariant &value1, const QVariant &value2)
+{
+ if ((value1.type() == QVariant::Color) || (value2.type() == QVariant::Color))
+ return value1.value<QColor>().rgba() == value2.value<QColor>().rgba();
+ return false;
+}
+
bool equals(const QVariant &a, const QVariant &b)
{
if (a.canConvert<QmlDesigner::Enumeration>() && b.canConvert<QmlDesigner::Enumeration>())
@@ -380,6 +387,8 @@ bool equals(const QVariant &a, const QVariant &b)
return true;
if (smartVeryFuzzyCompare(a, b))
return true;
+ if (smartColorCompare(a, b))
+ return true;
return false;
}
@@ -457,7 +466,7 @@ public:
if (!name.isEmpty() && name != QLatin1String("."))
typeName.prepend(name + QLatin1Char('.'));
} else if (importInfo.isValid() && importInfo.type() == ImportType::QrcDirectory) {
- QString path = QrcParser::normalizedQrcDirectoryPath(importInfo.path());
+ QString path = Utils::QrcParser::normalizedQrcDirectoryPath(importInfo.path());
path = path.mid(1, path.size() - ((path.size() > 1) ? 2 : 1));
const QString name = path.replace(QLatin1Char('/'), QLatin1Char('.'));
if (!name.isEmpty())
diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp
index c22ce39ad1..c2f36fad90 100644
--- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp
+++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp
@@ -384,7 +384,7 @@ void ViewManager::enableWidgets()
view->enableWidget();
}
-void ViewManager::pushFileOnCrumbleBar(const Utils::FileName &fileName)
+void ViewManager::pushFileOnCrumbleBar(const Utils::FilePath &fileName)
{
crumbleBar()->pushFile(fileName);
}
diff --git a/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp b/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp
index 149a76ef51..9b319a814d 100644
--- a/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp
+++ b/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.cpp
@@ -190,7 +190,7 @@ QStandardItem *WidgetPluginPath::createModelItem()
QStandardItem *failedCategory = nullptr;
const auto end = m_plugins.end();
for (auto it = m_plugins.begin(); it != end; ++it) {
- QStandardItem *pluginItem = new QStandardItem(Utils::FileName::fromString(it->path).fileName());
+ QStandardItem *pluginItem = new QStandardItem(Utils::FilePath::fromString(it->path).fileName());
if (instance(*it)) {
pluginItem->appendRow(new QStandardItem(QString::fromUtf8(it->instanceGuard->metaObject()->className())));
pathItem->appendRow(pluginItem);
diff --git a/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.h b/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.h
index 13ad38fcd3..2ad7d554f4 100644
--- a/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.h
+++ b/src/plugins/qmldesigner/designercore/pluginmanager/widgetpluginpath.h
@@ -40,8 +40,6 @@ namespace QmlDesigner {
class IWidgetPlugin;
namespace Internal {
-
-
// Dumb plugin data structure. Note that whereas QObjects can
// casted to an interface, QPointer does not work with the
// interface class, so, we need a separate QPointer as a guard
diff --git a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
index 1cbe8f8cac..1bae709e0c 100644
--- a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
+++ b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
@@ -39,8 +39,6 @@
namespace QmlDesigner {
-
-
QList<QByteArray> RewriterTransaction::m_identifierList;
bool RewriterTransaction::m_activeIdentifier = qEnvironmentVariableIsSet("QML_DESIGNER_TRACE_REWRITER_TRANSACTION");