aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2022-07-11 14:10:13 +0200
committerTim Jenssen <tim.jenssen@qt.io>2022-07-12 09:20:04 +0000
commitd6c10e775d7535a177e069d4b86ed1330b0666dc (patch)
treed13c60151d145c13d77eca1aee8d04116dbd327a /share/qtcreator/qml
parenta74582a9d399d83386757ac160ce1090f97a490a (diff)
qmlpuppet: remove qmlprivategate DesignerSupport < Qt 5.6
Task-number: QTCREATORBUG-26600 Change-Id: I629c8cd1f497ed2dd354ff461aa890a77bdc2a01 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'share/qtcreator/qml')
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.h5
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp1
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5captureimagenodeinstanceserver.cpp4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp28
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp18
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h6
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp4
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp20
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp26
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp48
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h7
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.cpp292
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.h82
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/designersupportdelegate.h30
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.cpp358
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.h95
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp727
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri40
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp647
23 files changed, 381 insertions, 2071 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
index 76deb3a3b3..ed9be0d3d5 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.cpp
@@ -24,9 +24,11 @@
****************************************************************************/
#include "iconrenderer.h"
+
#include "../editor3d/selectionboxgeometry.h"
#include "../editor3d/generalhelper.h"
+#include <private/qquickdesignersupport_p.h>
#include <QtQml/qqmlcomponent.h>
#include <QtQml/qqmlengine.h>
#include <QtQml/qqmlproperty.h>
@@ -63,7 +65,7 @@ IconRenderer::IconRenderer(int size, const QString &filePath, const QString &sou
void IconRenderer::setupRender()
{
- DesignerSupport::activateDesignerMode();
+ QQuickDesignerSupport::activateDesignerMode();
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
DesignerSupport::activateDesignerWindowManager();
#endif
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.h
index 6488024930..f7917ba41f 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/iconrenderer/iconrenderer.h
@@ -28,11 +28,10 @@
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
-#include <designersupportdelegate.h>
-
QT_BEGIN_NAMESPACE
class QQuickWindow;
class QQuickItem;
+class QQuickDesignerSupport;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
class QQuickRenderControl;
class QRhi;
@@ -66,7 +65,7 @@ private:
QQuickWindow *m_window = nullptr;
QQuickItem *m_contentItem = nullptr;
QQuickItem *m_containerItem = nullptr;
- DesignerSupport m_designerSupport;
+ std::unique_ptr<QQuickDesignerSupport> m_designerSupport;
bool m_is3D = false;
int m_focusStep = 0;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index ad46fc86c3..53e42b0a71 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -80,7 +80,6 @@
#define NANOTRACE_SCOPE(cat, name)
#endif
-#include <designersupportdelegate.h>
#include <QAbstractAnimation>
#include <QDebug>
#include <QDir>
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp
index 8bd21d9e9f..563b3a4702 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qmlstatenodeinstance.cpp
@@ -28,7 +28,7 @@
#include "qmlpropertychangesnodeinstance.h"
#include <qmlprivategate.h>
-#include <designersupportdelegate.h>
+#include <private/qquickdesignersupport_p.h>
namespace QmlDesigner {
namespace Internal {
@@ -62,7 +62,7 @@ void setAllNodesDirtyRecursive([[maybe_unused]] QQuickItem *parentItem)
const QList<QQuickItem *> children = parentItem->childItems();
for (QQuickItem *childItem : children)
setAllNodesDirtyRecursive(childItem);
- DesignerSupport::addDirty(parentItem, QQuickDesignerSupport::Content);
+ QQuickDesignerSupport::addDirty(parentItem, QQuickDesignerSupport::Content);
#endif
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5captureimagenodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5captureimagenodeinstanceserver.cpp
index dccfb19d57..b6ac90a002 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5captureimagenodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5captureimagenodeinstanceserver.cpp
@@ -34,6 +34,8 @@
#include <QQuickItem>
#include <QQuickView>
+#include <private/qquickdesignersupport_p.h>
+
namespace QmlDesigner {
namespace {
@@ -77,7 +79,7 @@ void Qt5CaptureImageNodeInstanceServer::collectItemChangesAndSendChangeCommands(
if (QQuickItem *qitem = rooNodeInstance.rootQuickItem())
qitem->setClip(true);
- DesignerSupport::polishItems(quickWindow());
+ QQuickDesignerSupport::polishItems(quickWindow());
QImage image = renderImage(rooNodeInstance, m_minimumSize, m_maximumSize);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp
index 53c82ccc8b..1c29cfb102 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp
@@ -33,6 +33,8 @@
#include <QImage>
#include <QQuickView>
+#include <private/qquickdesignersupport_p.h>
+
namespace QmlDesigner {
namespace {
@@ -92,7 +94,7 @@ void Qt5CapturePreviewNodeInstanceServer::collectItemChangesAndSendChangeCommand
if (!inFunction) {
inFunction = true;
- DesignerSupport::polishItems(quickWindow());
+ QQuickDesignerSupport::polishItems(quickWindow());
QVector<CapturedDataCommand::StateData> stateDatas;
stateDatas.push_back(collectStateData(rootNodeInstance(), nodeInstances(), 0));
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
index 12fba4d048..7d6c39e6f1 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
@@ -75,7 +75,7 @@
#include "../editor3d/linegeometry.h"
#include "../editor3d/icongizmoimageprovider.h"
-#include <designersupportdelegate.h>
+#include <private/qquickdesignersupport_p.h>
#include <qmlprivategate.h>
#include <quickitemnodeinstance.h>
@@ -195,7 +195,7 @@ void Qt5InformationNodeInstanceServer::createAuxiliaryQuickView(const QUrl &url,
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
viewData.window = new QQuickView(quickView()->engine(), quickView());
viewData.window->setFormat(quickView()->format());
- DesignerSupport::createOpenGLContext(static_cast<QQuickView *>(viewData.window.data()));
+ QQuickDesignerSupport::createOpenGLContext(static_cast<QQuickView *>(viewData.window.data()));
#else
viewData.renderControl = new QQuickRenderControl;
viewData.window = new QQuickWindow(viewData.renderControl);
@@ -211,7 +211,7 @@ void Qt5InformationNodeInstanceServer::createAuxiliaryQuickView(const QUrl &url,
}
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
- DesignerSupport::setRootItem(static_cast<QQuickView *>(viewData.window.data()), viewData.rootItem);
+ QQuickDesignerSupport::setRootItem(static_cast<QQuickView *>(viewData.window.data()), viewData.rootItem);
#else
viewData.window->contentItem()->setSize(viewData.rootItem->size());
viewData.window->setGeometry(0, 0, viewData.rootItem->width(), viewData.rootItem->height());
@@ -957,7 +957,7 @@ void Qt5InformationNodeInstanceServer::updateNodesRecursive(QQuickItem *item)
if (item->flags() & QQuickItem::ItemHasContents)
item->update();
} else {
- DesignerSupport::updateDirtyNode(item);
+ QQuickDesignerSupport::updateDirtyNode(item);
}
}
@@ -1394,18 +1394,18 @@ void Qt5InformationNodeInstanceServer::token(const TokenCommand &command)
bool Qt5InformationNodeInstanceServer::isDirtyRecursiveForNonInstanceItems(QQuickItem *item) const
{
- static DesignerSupport::DirtyType informationsDirty = DesignerSupport::DirtyType(DesignerSupport::TransformUpdateMask
- | DesignerSupport::ContentUpdateMask
- | DesignerSupport::Visible
- | DesignerSupport::ZValue
- | DesignerSupport::OpacityValue);
+ static QQuickDesignerSupport::DirtyType informationsDirty = QQuickDesignerSupport::DirtyType(QQuickDesignerSupport::TransformUpdateMask
+ | QQuickDesignerSupport::ContentUpdateMask
+ | QQuickDesignerSupport::Visible
+ | QQuickDesignerSupport::ZValue
+ | QQuickDesignerSupport::OpacityValue);
- if (DesignerSupport::isDirty(item, informationsDirty))
+ if (QQuickDesignerSupport::isDirty(item, informationsDirty))
return true;
foreach (QQuickItem *childItem, item->childItems()) {
if (!hasInstanceForObject(childItem)) {
- if (DesignerSupport::isDirty(childItem, informationsDirty))
+ if (QQuickDesignerSupport::isDirty(childItem, informationsDirty))
return true;
else if (isDirtyRecursiveForNonInstanceItems(childItem))
return true;
@@ -1417,7 +1417,7 @@ bool Qt5InformationNodeInstanceServer::isDirtyRecursiveForNonInstanceItems(QQuic
bool Qt5InformationNodeInstanceServer::isDirtyRecursiveForParentInstances(QQuickItem *item) const
{
- if (DesignerSupport::isDirty(item, DesignerSupport::TransformUpdateMask))
+ if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::TransformUpdateMask))
return true;
QQuickItem *parentItem = item->parentItem();
@@ -1883,7 +1883,7 @@ void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
if (!inFunction) {
inFunction = true;
- DesignerSupport::polishItems(quickWindow());
+ QQuickDesignerSupport::polishItems(quickWindow());
QSet<ServerNodeInstance> informationChangedInstanceSet;
QVector<InstancePropertyPair> propertyChangedList;
@@ -1898,7 +1898,7 @@ void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
else if (isDirtyRecursiveForParentInstances(item))
informationChangedInstanceSet.insert(instance);
- if (DesignerSupport::isDirty(item, DesignerSupport::ParentChanged)) {
+ if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::ParentChanged)) {
m_parentChangedSet.insert(instance);
informationChangedInstanceSet.insert(instance);
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp
index 8b1221a4f4..2dd18c58d8 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceclientproxy.cpp
@@ -36,8 +36,6 @@
#include "qt5testnodeinstanceserver.h"
#include "quickitemnodeinstance.h"
-#include <designersupportdelegate.h>
-
#if defined(Q_OS_UNIX)
#include <unistd.h>
#elif defined(Q_OS_WIN)
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp
index 18ba701ecc..9f2bb28d4a 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.cpp
@@ -33,7 +33,7 @@
#include <QQuickView>
#include <QQuickWindow>
-#include <designersupportdelegate.h>
+#include <private/qquickdesignersupport_p.h>
#include <addimportcontainer.h>
#include <createscenecommand.h>
#include <reparentinstancescommand.h>
@@ -69,7 +69,7 @@ Qt5NodeInstanceServer::Qt5NodeInstanceServer(NodeInstanceClientInterface *nodeIn
: NodeInstanceServer(nodeInstanceClient)
{
if (!ViewConfig::isParticleViewMode())
- DesignerSupport::activateDesignerMode();
+ QQuickDesignerSupport::activateDesignerMode();
}
Qt5NodeInstanceServer::~Qt5NodeInstanceServer()
@@ -106,7 +106,7 @@ void Qt5NodeInstanceServer::initializeView()
QSurfaceFormat::setDefaultFormat(surfaceFormat);
view->setFormat(surfaceFormat);
- DesignerSupport::createOpenGLContext(view);
+ QQuickDesignerSupport::createOpenGLContext(view);
m_qmlEngine = view->engine();
#else
m_viewData.renderControl = new QQuickRenderControl;
@@ -138,7 +138,7 @@ void Qt5NodeInstanceServer::setRootItem(QQuickItem *item)
{
m_viewData.rootItem = item;
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
- DesignerSupport::setRootItem(quickView(), item);
+ QQuickDesignerSupport::setRootItem(quickView(), item);
#else
quickWindow()->setGeometry(0, 0, item->width(), item->height());
// Insert an extra item above the root to adjust root item position to 0,0 to make entire
@@ -163,13 +163,13 @@ void Qt5NodeInstanceServer::resizeCanvasToRootItem()
m_viewData.contentItem->setPosition(-m_viewData.rootItem->position());
#endif
quickWindow()->resize(rootNodeInstance().boundingRect().size().toSize());
- DesignerSupport::addDirty(rootNodeInstance().rootQuickItem(), QQuickDesignerSupport::Size);
+ QQuickDesignerSupport::addDirty(rootNodeInstance().rootQuickItem(), QQuickDesignerSupport::Size);
}
void Qt5NodeInstanceServer::resetAllItems()
{
foreach (QQuickItem *item, allItems())
- DesignerSupport::resetDirty(item);
+ QQuickDesignerSupport::resetDirty(item);
}
void Qt5NodeInstanceServer::setupScene(const CreateSceneCommand &command)
@@ -524,12 +524,12 @@ QImage Qt5NodeInstanceServer::grabItem([[maybe_unused]] QQuickItem *item)
void Qt5NodeInstanceServer::refreshBindings()
{
- DesignerSupport::refreshExpressions(context());
+ QQuickDesignerSupport::refreshExpressions(context());
}
-DesignerSupport *Qt5NodeInstanceServer::designerSupport()
+QQuickDesignerSupport *Qt5NodeInstanceServer::designerSupport()
{
- return &m_designerSupport;
+ return m_designerSupport.get();
}
void Qt5NodeInstanceServer::createScene(const CreateSceneCommand &command)
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h
index 4c6dd2c743..6558e4f74c 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5nodeinstanceserver.h
@@ -29,11 +29,11 @@
#include <QtQuick/qquickwindow.h>
#include "nodeinstanceserver.h"
-#include <designersupportdelegate.h>
QT_BEGIN_NAMESPACE
class QQuickItem;
class QQmlEngine;
+class QQuickDesignerSupport;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
class QQuickRenderControl;
class QRhi;
@@ -62,7 +62,7 @@ public:
QQmlEngine *engine() const override;
void refreshBindings() override;
- DesignerSupport *designerSupport();
+ QQuickDesignerSupport *designerSupport();
void createScene(const CreateSceneCommand &command) override;
void clearScene(const ClearSceneCommand &command) override;
@@ -102,7 +102,7 @@ protected:
private:
RenderViewData m_viewData;
- DesignerSupport m_designerSupport;
+ std::unique_ptr<QQuickDesignerSupport> m_designerSupport;
QQmlEngine *m_qmlEngine = nullptr;
};
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp
index f61ba1a342..e2889350f1 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5previewnodeinstanceserver.cpp
@@ -33,7 +33,7 @@
#include <QQuickView>
#include <QQuickItem>
-#include <designersupportdelegate.h>
+#include <private/qquickdesignersupport_p.h>
namespace QmlDesigner {
@@ -72,7 +72,7 @@ void Qt5PreviewNodeInstanceServer::collectItemChangesAndSendChangeCommands()
if (!inFunction && nodeInstanceClient()->bytesToWrite() < 10000) {
inFunction = true;
- DesignerSupport::polishItems(quickWindow());
+ QQuickDesignerSupport::polishItems(quickWindow());
QVector<ImageContainer> imageContainerVector;
imageContainerVector.append(ImageContainer(0, renderPreviewImage(), -1));
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
index 59e7a4aa82..5ec06bf033 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5rendernodeinstanceserver.cpp
@@ -58,7 +58,7 @@
#include "dummycontextobject.h"
-#include <designersupportdelegate.h>
+#include <private/qquickdesignersupport_p.h>
namespace QmlDesigner {
@@ -74,33 +74,33 @@ void Qt5RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands()
if (!inFunction) {
inFunction = true;
- DesignerSupport::polishItems(quickWindow());
+ QQuickDesignerSupport::polishItems(quickWindow());
if (quickWindow() && nodeInstanceClient()->bytesToWrite() < 10000) {
bool windowDirty = false;
foreach (QQuickItem *item, allItems()) {
if (item) {
if (Internal::QuickItemNodeInstance::unifiedRenderPath()) {
- if (DesignerSupport::isDirty(item, DesignerSupport::AllMask)) {
+ if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::AllMask)) {
windowDirty = true;
break;
}
} else {
if (hasInstanceForObject(item)) {
- if (DesignerSupport::isDirty(item, DesignerSupport::ContentUpdateMask))
+ if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::ContentUpdateMask))
m_dirtyInstanceSet.insert(instanceForObject(item));
if (QQuickItem *effectParent = parentEffectItem(item)) {
- if ((DesignerSupport::isDirty(
+ if ((QQuickDesignerSupport::isDirty(
item,
- DesignerSupport::DirtyType(
- DesignerSupport::TransformUpdateMask
- | DesignerSupport::Visible
- | DesignerSupport::ContentUpdateMask)))
+ QQuickDesignerSupport::DirtyType(
+ QQuickDesignerSupport::TransformUpdateMask
+ | QQuickDesignerSupport::Visible
+ | QQuickDesignerSupport::ContentUpdateMask)))
&& hasInstanceForObject(effectParent)) {
m_dirtyInstanceSet.insert(instanceForObject(effectParent));
}
}
- } else if (DesignerSupport::isDirty(item, DesignerSupport::AllMask)) {
+ } else if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::AllMask)) {
ServerNodeInstance ancestorInstance = findNodeInstanceForItem(
item->parentItem());
if (ancestorInstance.isValid())
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp
index 9edb567d5b..f6f8149162 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5testnodeinstanceserver.cpp
@@ -25,9 +25,6 @@
#include "qt5testnodeinstanceserver.h"
-#include <QQuickItem>
-#include <QQuickView>
-
#include "servernodeinstance.h"
#include "childrenchangeeventfilter.h"
#include "propertyabstractcontainer.h"
@@ -60,7 +57,10 @@
#include "dummycontextobject.h"
-#include <designersupportdelegate.h>
+#include <QQuickItem>
+#include <QQuickView>
+
+#include <private/qquickdesignersupport_p.h>
namespace QmlDesigner {
@@ -257,7 +257,7 @@ void Qt5TestNodeInstanceServer::removeSharedMemory(const RemoveSharedMemoryComma
void QmlDesigner::Qt5TestNodeInstanceServer::collectItemChangesAndSendChangeCommands()
{
- DesignerSupport::polishItems(quickWindow());
+ QQuickDesignerSupport::polishItems(quickWindow());
QSet<ServerNodeInstance> informationChangedInstanceSet;
QVector<InstancePropertyPair> propertyChangedList;
@@ -272,7 +272,7 @@ void QmlDesigner::Qt5TestNodeInstanceServer::collectItemChangesAndSendChangeComm
informationChangedInstanceSet.insert(instance);
- if (DesignerSupport::isDirty(item, DesignerSupport::ParentChanged)) {
+ if (QQuickDesignerSupport::isDirty(item, QQuickDesignerSupport::ParentChanged)) {
parentChangedSet.insert(instance);
informationChangedInstanceSet.insert(instance);
}
@@ -342,18 +342,18 @@ void Qt5TestNodeInstanceServer::sendChildrenChangedCommand(const QList<ServerNod
bool Qt5TestNodeInstanceServer::isDirtyRecursiveForNonInstanceItems(QQuickItem *item) const
{
- static DesignerSupport::DirtyType informationsDirty = DesignerSupport::DirtyType(DesignerSupport::TransformUpdateMask
- | DesignerSupport::ContentUpdateMask
- | DesignerSupport::Visible
- | DesignerSupport::ZValue
- | DesignerSupport::OpacityValue);
+ static QQuickDesignerSupport::DirtyType informationsDirty = QQuickDesignerSupport::DirtyType(QQuickDesignerSupport::TransformUpdateMask
+ | QQuickDesignerSupport::ContentUpdateMask
+ | QQuickDesignerSupport::Visible
+ | QQuickDesignerSupport::ZValue
+ | QQuickDesignerSupport::OpacityValue);
- if (DesignerSupport::isDirty(item, informationsDirty))
+ if (QQuickDesignerSupport::isDirty(item, informationsDirty))
return true;
foreach (QQuickItem *childItem, item->childItems()) {
if (!hasInstanceForObject(childItem)) {
- if (DesignerSupport::isDirty(childItem, informationsDirty))
+ if (QQuickDesignerSupport::isDirty(childItem, informationsDirty))
return true;
else if (isDirtyRecursiveForNonInstanceItems(childItem))
return true;
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
index 60d9060325..76fb43a598 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
@@ -31,6 +31,8 @@
#include <QtQuick/private/qquickitem_p.h>
#include <QtQuick/private/qquickshadereffectsource_p.h>
+#include <private/qquickdesignersupport_p.h>
+
#include <QQmlProperty>
#include <QQmlExpression>
#include <QQuickView>
@@ -86,7 +88,7 @@ static QTransform transformForItem(QQuickItem *item, NodeInstanceServer *nodeIns
if (isContentItem(item, nodeInstanceServer))
return QTransform();
- QTransform toParentTransform = DesignerSupport::parentTransform(item);
+ QTransform toParentTransform = QQuickDesignerSupport::parentTransform(item);
if (item->parentItem() && !nodeInstanceServer->hasInstanceForObject(item->parentItem())) {
return transformForItem(item->parentItem(), nodeInstanceServer) * toParentTransform;
@@ -97,7 +99,7 @@ static QTransform transformForItem(QQuickItem *item, NodeInstanceServer *nodeIns
QTransform QuickItemNodeInstance::transform() const
{ if (quickItem()->parentItem())
- return DesignerSupport::parentTransform(quickItem());
+ return QQuickDesignerSupport::parentTransform(quickItem());
return QTransform();
}
@@ -262,7 +264,7 @@ QStringList QuickItemNodeInstance::allStates() const
{
QStringList list;
- QList<QObject*> stateList = DesignerSupport::statesForItem(quickItem());
+ QList<QObject*> stateList = QQuickDesignerSupport::statesForItem(quickItem());
for (QObject *state : stateList) {
QQmlProperty property(state, "name");
if (property.isValid())
@@ -277,7 +279,7 @@ void QuickItemNodeInstance::updateDirtyNode([[maybe_unused]] QQuickItem *item)
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
if (s_unifiedRenderPath)
return;
- DesignerSupport::updateDirtyNode(item);
+ QQuickDesignerSupport::updateDirtyNode(item);
#endif
}
@@ -319,7 +321,7 @@ void QuickItemNodeInstance::setHiddenInEditor(bool hide)
QRectF QuickItemNodeInstance::contentItemBoundingBox() const
{
if (contentItem()) {
- QTransform contentItemTransform = DesignerSupport::parentTransform(contentItem());
+ QTransform contentItemTransform = QQuickDesignerSupport::parentTransform(contentItem());
return contentItemTransform.mapRect(contentItem()->boundingRect());
}
@@ -367,7 +369,7 @@ static QTransform contentTransformForItem(QQuickItem *item, NodeInstanceServer *
{
QTransform contentTransform;
if (item->parentItem() && !nodeInstanceServer->hasInstanceForObject(item->parentItem())) {
- contentTransform = DesignerSupport::parentTransform(item->parentItem());
+ contentTransform = QQuickDesignerSupport::parentTransform(item->parentItem());
return contentTransformForItem(item->parentItem(), nodeInstanceServer) * contentTransform;
}
@@ -381,7 +383,7 @@ QTransform QuickItemNodeInstance::contentTransform() const
QTransform QuickItemNodeInstance::sceneTransform() const
{
- return DesignerSupport::windowTransform(quickItem());
+ return QQuickDesignerSupport::windowTransform(quickItem());
}
double QuickItemNodeInstance::opacity() const
@@ -418,7 +420,7 @@ QSizeF QuickItemNodeInstance::size() const
{
double width;
- if (DesignerSupport::isValidHeight(quickItem())) { // isValidHeight is QQuickItemPrivate::get(item)->widthValid
+ if (QQuickDesignerSupport::isValidHeight(quickItem())) { // isValidHeight is QQuickItemPrivate::get(item)->widthValid
width = quickItem()->width();
} else {
width = quickItem()->implicitWidth();
@@ -426,7 +428,7 @@ QSizeF QuickItemNodeInstance::size() const
double height;
- if (DesignerSupport::isValidWidth(quickItem())) { // isValidWidth is QQuickItemPrivate::get(item)->heightValid
+ if (QQuickDesignerSupport::isValidWidth(quickItem())) { // isValidWidth is QQuickItemPrivate::get(item)->heightValid
height = quickItem()->height();
} else {
height = quickItem()->implicitHeight();
@@ -438,7 +440,7 @@ QSizeF QuickItemNodeInstance::size() const
static QTransform contentItemTransformForItem(QQuickItem *item, NodeInstanceServer *nodeInstanceServer)
{
- QTransform toParentTransform = DesignerSupport::parentTransform(item);
+ QTransform toParentTransform = QQuickDesignerSupport::parentTransform(item);
if (item->parentItem() && !nodeInstanceServer->hasInstanceForObject(item->parentItem())) {
return transformForItem(item->parentItem(), nodeInstanceServer) * toParentTransform;
@@ -457,7 +459,7 @@ QTransform QuickItemNodeInstance::contentItemTransform() const
int QuickItemNodeInstance::penWidth() const
{
- return DesignerSupport::borderWidth(quickItem());
+ return QQuickDesignerSupport::borderWidth(quickItem());
}
double QuickItemNodeInstance::x() const
@@ -576,7 +578,7 @@ bool QuickItemNodeInstance::isRenderable() const
QList<ServerNodeInstance> QuickItemNodeInstance::stateInstances() const
{
QList<ServerNodeInstance> instanceList;
- QList<QObject*> stateList = DesignerSupport::statesForItem(quickItem());
+ QList<QObject*> stateList = QQuickDesignerSupport::statesForItem(quickItem());
foreach (QObject *state, stateList)
{
if (state && nodeInstanceServer()->hasInstanceForObject(state))
@@ -604,7 +606,7 @@ void QuickItemNodeInstance::setHasContent(bool hasContent)
m_hasContent = hasContent;
}
-DesignerSupport *QuickItemNodeInstance::designerSupport() const
+QQuickDesignerSupport *QuickItemNodeInstance::designerSupport() const
{
return qt5NodeInstanceServer()->designerSupport();
}
@@ -623,7 +625,7 @@ void QuickItemNodeInstance::updateDirtyNodesRecursive(QQuickItem *parentItem) co
QmlPrivateGate::disableNativeTextRendering(parentItem);
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
- DesignerSupport::updateDirtyNode(parentItem);
+ QQuickDesignerSupport::updateDirtyNode(parentItem);
#endif
}
@@ -642,7 +644,7 @@ void QuickItemNodeInstance::setAllNodesDirtyRecursive([[maybe_unused]] QQuickIte
const QList<QQuickItem *> children = parentItem->childItems();
for (QQuickItem *childItem : children)
setAllNodesDirtyRecursive(childItem);
- DesignerSupport::addDirty(parentItem, QQuickDesignerSupport::Content);
+ QQuickDesignerSupport::addDirty(parentItem, QQuickDesignerSupport::Content);
#endif
}
@@ -930,7 +932,7 @@ void QuickItemNodeInstance::resetProperty(const PropertyName &name)
if (name == "layer.enabled" || name == "layer.effect")
setAllNodesDirtyRecursive(quickItem());
- DesignerSupport::resetAnchor(quickItem(), QString::fromUtf8(name));
+ QQuickDesignerSupport::resetAnchor(quickItem(), QString::fromUtf8(name));
if (name == "anchors.fill") {
resetHorizontal();
@@ -964,12 +966,12 @@ void QuickItemNodeInstance::resetProperty(const PropertyName &name)
bool QuickItemNodeInstance::isAnchoredByChildren() const
{
- return DesignerSupport::areChildrenAnchoredTo(quickItem(), quickItem());
+ return QQuickDesignerSupport::areChildrenAnchoredTo(quickItem(), quickItem());
}
bool QuickItemNodeInstance::hasAnchor(const PropertyName &name) const
{
- return DesignerSupport::hasAnchor(quickItem(), QString::fromUtf8(name));
+ return QQuickDesignerSupport::hasAnchor(quickItem(), QString::fromUtf8(name));
}
static bool isValidAnchorName(const PropertyName &name)
@@ -989,11 +991,11 @@ static bool isValidAnchorName(const PropertyName &name)
QPair<PropertyName, ServerNodeInstance> QuickItemNodeInstance::anchor(const PropertyName &name) const
{
- if (!isValidAnchorName(name) || !DesignerSupport::hasAnchor(quickItem(), QString::fromUtf8(name)))
+ if (!isValidAnchorName(name) || !QQuickDesignerSupport::hasAnchor(quickItem(), QString::fromUtf8(name)))
return ObjectNodeInstance::anchor(name);
QPair<QString, QObject*> nameObjectPair =
- DesignerSupport::anchorLineTarget(quickItem(), QString::fromUtf8(name), context());
+ QQuickDesignerSupport::anchorLineTarget(quickItem(), QString::fromUtf8(name), context());
QObject *targetObject = nameObjectPair.second;
PropertyName targetName = nameObjectPair.first.toUtf8();
@@ -1013,7 +1015,7 @@ bool QuickItemNodeInstance::isAnchoredBySibling() const
if (quickItem()->parentItem()) {
foreach (QQuickItem *siblingItem, quickItem()->parentItem()->childItems()) { // search in siblings for a anchor to this item
if (siblingItem) {
- if (DesignerSupport::isAnchoredTo(siblingItem, quickItem()))
+ if (QQuickDesignerSupport::isAnchoredTo(siblingItem, quickItem()))
return true;
}
}
@@ -1049,13 +1051,13 @@ void QuickItemNodeInstance::markRepeaterParentDirty() const
// If a Repeater instance was changed in any way, the parent must be marked dirty to rerender it
const QByteArray type("QQuickRepeater");
if (ServerNodeInstance::isSubclassOf(item, type))
- DesignerSupport::addDirty(parentItem, QQuickDesignerSupport::Content);
+ QQuickDesignerSupport::addDirty(parentItem, QQuickDesignerSupport::Content);
// Repeater's parent must also be dirtied when a child of a repeater was changed
if (ServerNodeInstance::isSubclassOf(parentItem, type)) {
QQuickItem *parentsParent = parentItem->parentItem();
if (parentsParent)
- DesignerSupport::addDirty(parentsParent, QQuickDesignerSupport::Content);
+ QQuickDesignerSupport::addDirty(parentsParent, QQuickDesignerSupport::Content);
}
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h
index 50cf494e8e..f2ee6f3aac 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h
@@ -30,7 +30,10 @@
#include "objectnodeinstance.h"
#include <QQuickItem>
-#include <designersupportdelegate.h>
+
+QT_BEGIN_NAMESPACE
+class QQuickDesignerSupport;
+QT_END_NAMESPACE
namespace QmlDesigner {
namespace Internal {
@@ -115,7 +118,7 @@ protected:
void setMovable(bool movable);
void setResizable(bool resizable);
void setHasContent(bool hasContent);
- DesignerSupport *designerSupport() const;
+ QQuickDesignerSupport *designerSupport() const;
Qt5NodeInstanceServer *qt5NodeInstanceServer() const;
void updateDirtyNodesRecursive(QQuickItem *parentItem) const;
void updateAllDirtyNodesRecursive(QQuickItem *parentItem) const;
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.cpp
deleted file mode 100644
index 8562901f6f..0000000000
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.cpp
+++ /dev/null
@@ -1,292 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "designercustomobjectdata.h"
-
-#include <qmlprivategate.h>
-
-#include <QQmlContext>
-#include <QQmlEngine>
-
-#include <private/qqmlbinding_p.h>
-
-namespace QmlDesigner {
-
-namespace Internal {
-
-namespace QmlPrivateGate {
-
-QHash<QObject *, DesignerCustomObjectData*> m_objectToDataHash;
-
-DesignerCustomObjectData::DesignerCustomObjectData(QObject *object)
- : m_object(object)
-{
- if (object) {
- populateResetHashes();
- m_objectToDataHash.insert(object, this);
- QObject::connect(object, &QObject::destroyed, [=] {
- m_objectToDataHash.remove(object);
- delete this;
- });
- }
-}
-
-void DesignerCustomObjectData::registerData(QObject *object)
-{
- new DesignerCustomObjectData(object);
-}
-
-DesignerCustomObjectData *DesignerCustomObjectData::get(QObject *object)
-{
- return m_objectToDataHash.value(object);
-}
-
-QVariant DesignerCustomObjectData::getResetValue(QObject *object, const PropertyName &propertyName)
-{
- DesignerCustomObjectData* data = get(object);
-
- if (data)
- return data->getResetValue(propertyName);
-
- return QVariant();
-}
-
-void DesignerCustomObjectData::doResetProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName)
-{
- DesignerCustomObjectData* data = get(object);
-
- if (data)
- data->doResetProperty(context, propertyName);
-}
-
-bool DesignerCustomObjectData::hasValidResetBinding(QObject *object, const PropertyName &propertyName)
-{
- DesignerCustomObjectData* data = get(object);
-
- if (data)
- return data->hasValidResetBinding(propertyName);
-
- return false;
-}
-
-bool DesignerCustomObjectData::hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged)
-{
- DesignerCustomObjectData* data = get(object);
-
- if (data)
- return data->hasBindingForProperty(context, propertyName, hasChanged);
-
- return false;
-}
-
-void DesignerCustomObjectData::setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression)
-{
- DesignerCustomObjectData* data = get(object);
-
- if (data)
- data->setPropertyBinding(context, propertyName, expression);
-}
-
-void DesignerCustomObjectData::keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName)
-{
- DesignerCustomObjectData* data = get(object);
-
- if (data)
- data->keepBindingFromGettingDeleted(context, propertyName);
-}
-
-void DesignerCustomObjectData::populateResetHashes()
-{
- PropertyNameList propertyNameList = QmlPrivateGate::propertyNameListForWritableProperties(object());
-
- foreach (const PropertyName &propertyName, propertyNameList) {
- QQmlProperty property(object(), QString::fromUtf8(propertyName), QQmlEngine::contextForObject(object()));
-
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- QQmlAbstractBinding::Ptr binding = QQmlAbstractBinding::Ptr(QQmlPropertyPrivate::binding(property));
-#else
- QQmlAbstractBinding::Pointer binding = QQmlAbstractBinding::getPointer(QQmlPropertyPrivate::binding(property));
-#endif
-
- if (binding) {
- m_resetBindingHash.insert(propertyName, binding);
- } else if (property.isWritable()) {
- m_resetValueHash.insert(propertyName, property.read());
- }
- }
-
- m_resetValueHash.insert("Layout.rowSpan", 1);
- m_resetValueHash.insert("Layout.columnSpan", 1);
- m_resetValueHash.insert("Layout.fillHeight", false);
- m_resetValueHash.insert("Layout.fillWidth", false);
-}
-
-QObject *DesignerCustomObjectData::object() const
-{
- return m_object;
-}
-
-QVariant DesignerCustomObjectData::getResetValue(const PropertyName &propertyName) const
-{
- return m_resetValueHash.value(propertyName);
-}
-
-void DesignerCustomObjectData::doResetProperty(QQmlContext *context, const PropertyName &propertyName)
-{
- QQmlProperty property(object(), QString::fromUtf8(propertyName), context);
-
- if (!property.isValid())
- return;
-
- QVariant oldValue = property.read();
- if (oldValue.type() == QVariant::Url) {
- QUrl url = oldValue.toUrl();
- QString path = url.toLocalFile();
- /* ### TODO
- if (QFileInfo(path).exists() && nodeInstanceServer())
- nodeInstanceServer()->removeFilePropertyFromFileSystemWatcher(object(), propertyName, path);
- */
- }
-
-
- QQmlAbstractBinding *binding = QQmlPropertyPrivate::binding(property);
- if (binding && !(hasValidResetBinding(propertyName) && getResetBinding(propertyName) == binding)) {
- binding->setEnabled(false, 0);
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- //Refcounting is taking care
-#else
- binding->destroy();
-#endif
- }
-
-
- if (hasValidResetBinding(propertyName)) {
- QQmlAbstractBinding *binding = getResetBinding(propertyName);
-
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- QQmlBinding *qmlBinding = dynamic_cast<QQmlBinding*>(binding);
- if (qmlBinding)
- qmlBinding->setTarget(property);
- QQmlPropertyPrivate::setBinding(binding, QQmlPropertyPrivate::None, QQmlPropertyPrivate::DontRemoveBinding);
- if (qmlBinding)
- qmlBinding->update();
-#else
- QQmlPropertyPrivate::setBinding(property, binding, QQmlPropertyPrivate::DontRemoveBinding);
- binding->update();
-#endif
-
- } else if (property.isResettable()) {
- property.reset();
- } else if (property.propertyTypeCategory() == QQmlProperty::List) {
- QQmlListReference list = qvariant_cast<QQmlListReference>(property.read());
-
- if (!QmlPrivateGate::hasFullImplementedListInterface(list)) {
- qWarning() << "Property list interface not fully implemented for Class " << property.property().typeName() << " in property " << property.name() << "!";
- return;
- }
-
- list.clear();
- } else if (property.isWritable()) {
- if (property.read() == getResetValue(propertyName))
- return;
-
- property.write(getResetValue(propertyName));
- }
-}
-
-bool DesignerCustomObjectData::hasValidResetBinding(const PropertyName &propertyName) const
-{
- return m_resetBindingHash.contains(propertyName) && m_resetBindingHash.value(propertyName).data();
-}
-
-QQmlAbstractBinding *DesignerCustomObjectData::getResetBinding(const PropertyName &propertyName) const
-{
- return m_resetBindingHash.value(propertyName).data();
-}
-
-bool DesignerCustomObjectData::hasBindingForProperty(QQmlContext *context, const PropertyName &propertyName, bool *hasChanged) const
-{
- if (QmlPrivateGate::isPropertyBlackListed(propertyName))
- return false;
-
- QQmlProperty property(object(), QString::fromUtf8(propertyName), context);
-
- bool hasBinding = QQmlPropertyPrivate::binding(property);
-
- if (hasChanged) {
- *hasChanged = hasBinding != m_hasBindingHash.value(propertyName, false);
- if (*hasChanged)
- m_hasBindingHash.insert(propertyName, hasBinding);
- }
-
- return QQmlPropertyPrivate::binding(property);
-}
-
-void DesignerCustomObjectData::setPropertyBinding(QQmlContext *context, const PropertyName &propertyName, const QString &expression)
-{
- QQmlProperty property(object(), QString::fromUtf8(propertyName), context);
-
- if (!property.isValid())
- return;
-
- if (property.isProperty()) {
- QQmlBinding *binding = new QQmlBinding(expression, object(), context);
- binding->setTarget(property);
- binding->setNotifyOnValueChanged(true);
-
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- QQmlPropertyPrivate::setBinding(binding, QQmlPropertyPrivate::None, QQmlPropertyPrivate::DontRemoveBinding);
- //Refcounting is taking take care of deletion
-#else
- QQmlAbstractBinding *oldBinding = QQmlPropertyPrivate::setBinding(property, binding);
- if (oldBinding && !hasValidResetBinding(propertyName))
- oldBinding->destroy();
-#endif
- binding->update();
- if (binding->hasError()) {
- if (property.property().userType() == QVariant::String)
- property.write(QVariant(QString("#%1#").arg(expression)));
- }
-
- } else {
- qWarning() << Q_FUNC_INFO << ": Cannot set binding for property" << propertyName << ": property is unknown for type";
- }
-}
-
-void DesignerCustomObjectData::keepBindingFromGettingDeleted(
- [[maybe_unused]] QQmlContext *context, [[maybe_unused]] const PropertyName &propertyName)
-{
-#if (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
- QQmlProperty property(object(), QString::fromUtf8(propertyName), context);
- QQmlPropertyPrivate::setBinding(property, 0, QQmlPropertyPrivate::BypassInterceptor
- | QQmlPropertyPrivate::DontRemoveBinding);
-#endif
-}
-
-
-} // namespace QmlPrivateGate
-} // namespace Internal
-} // namespace QmlDesigner
-
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.h b/share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.h
deleted file mode 100644
index c7030fe400..0000000000
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/designercustomobjectdata.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include "nodeinstanceglobal.h"
-
-#include <QHash>
-#include <QObject>
-#include <QVariant>
-
-#include <private/qqmlbinding_p.h>
-
-QT_BEGIN_NAMESPACE
-class QQmlContext;
-QT_END_NAMESPACE
-
-namespace QmlDesigner {
-
-namespace Internal {
-
-namespace QmlPrivateGate {
-
-class DesignerCustomObjectData
-{
-public:
- static void registerData(QObject *object);
- static DesignerCustomObjectData *get(QObject *object);
- static QVariant getResetValue(QObject *object, const PropertyName &propertyName);
- static void doResetProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName);
- static bool hasValidResetBinding(QObject *object, const PropertyName &propertyName);
- static bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged);
- static void setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression);
- static void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName);
-
-private:
- DesignerCustomObjectData(QObject *object);
- void populateResetHashes();
- QObject *object() const;
- QVariant getResetValue(const PropertyName &propertyName) const;
- void doResetProperty(QQmlContext *context, const PropertyName &propertyName);
- bool hasValidResetBinding(const PropertyName &propertyName) const;
- QQmlAbstractBinding *getResetBinding(const PropertyName &propertyName) const;
- bool hasBindingForProperty(QQmlContext *context, const PropertyName &propertyName, bool *hasChanged) const;
- void setPropertyBinding(QQmlContext *context, const PropertyName &propertyName, const QString &expression);
- void keepBindingFromGettingDeleted(QQmlContext *context, const PropertyName &propertyName);
-
- QObject *m_object;
- QHash<PropertyName, QVariant> m_resetValueHash;
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- QHash<PropertyName, QQmlAbstractBinding::Ptr> m_resetBindingHash;
-#else
- QHash<PropertyName, QWeakPointer<QQmlAbstractBinding> > m_resetBindingHash;
-#endif
- mutable QHash<PropertyName, bool> m_hasBindingHash;
-};
-
-} // namespace QmlPrivateGate
-} // namespace Internal
-} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/designersupportdelegate.h b/share/qtcreator/qml/qmlpuppet/qmlprivategate/designersupportdelegate.h
deleted file mode 100644
index aaae84b47b..0000000000
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/designersupportdelegate.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
-#include <private/qquickdesignersupport_p.h>
-#else
-#include <designersupport.h>
-#endif
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.cpp
deleted file mode 100644
index 420234a645..0000000000
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.cpp
+++ /dev/null
@@ -1,358 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "metaobject.h"
-
-#include <QSharedPointer>
-#include <QMetaProperty>
-#include <qnumeric.h>
-#include <QDebug>
-
-#include <private/qqmlengine_p.h>
-#include <private/qqmlpropertycache_p.h>
-
-namespace QmlDesigner {
-
-namespace Internal {
-
-namespace QmlPrivateGate {
-
-static QHash<QDynamicMetaObjectData *, bool> nodeInstanceMetaObjectList;
-static void (*notifyPropertyChangeCallBack)(QObject*, const PropertyName &propertyName) = 0;
-
-struct MetaPropertyData {
- inline QPair<QVariant, bool> &getDataRef(int idx) {
- while (m_data.count() <= idx)
- m_data << QPair<QVariant, bool>(QVariant(), false);
- return m_data[idx];
- }
-
- inline QVariant &getData(int idx) {
- QPair<QVariant, bool> &prop = getDataRef(idx);
- if (!prop.second) {
- prop.first = QVariant();
- prop.second = true;
- }
- return prop.first;
- }
-
- inline bool hasData(int idx) const {
- if (idx >= m_data.count())
- return false;
- return m_data[idx].second;
- }
-
- inline int count() { return m_data.count(); }
-
- QList<QPair<QVariant, bool> > m_data;
-};
-
-static bool constructedMetaData(const QQmlVMEMetaData* data)
-{
- return data->propertyCount == 0
-#if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
- && data->varPropertyCount == 0
-#endif
- && data->aliasCount == 0
- && data->signalCount == 0
- && data->methodCount == 0;
-}
-
-static QQmlVMEMetaData* fakeMetaData()
-{
- QQmlVMEMetaData* data = new QQmlVMEMetaData;
-#if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
- data->varPropertyCount = 0;
-#endif
- data->propertyCount = 0;
- data->aliasCount = 0;
- data->signalCount = 0;
- data->methodCount = 0;
-
- return data;
-}
-
-static const QQmlVMEMetaData* vMEMetaDataForObject(QObject *object)
-{
- QQmlVMEMetaObject *metaObject = QQmlVMEMetaObject::get(object);
- if (metaObject)
- return metaObject->metaData;
-
- return fakeMetaData();
-}
-
-static QQmlPropertyCache *cacheForObject(QObject *object, QQmlEngine *engine)
-{
- QQmlVMEMetaObject *metaObject = QQmlVMEMetaObject::get(object);
- if (metaObject)
- return metaObject->cache;
-
- return QQmlEnginePrivate::get(engine)->cache(object);
-}
-
-MetaObject* MetaObject::getNodeInstanceMetaObject(QObject *object, QQmlEngine *engine)
-{
- //Avoid setting up multiple MetaObjects on the same QObject
- QObjectPrivate *op = QObjectPrivate::get(object);
- QDynamicMetaObjectData *parent = op->metaObject;
- if (nodeInstanceMetaObjectList.contains(parent))
- return static_cast<MetaObject *>(parent);
-
- // we just create one and the ownership goes automatically to the object in nodeinstance see init method
- return new MetaObject(object, engine);
-}
-
-void MetaObject::init(QObject *object, QQmlEngine *engine)
-{
- //Creating QQmlOpenMetaObjectType
- m_type = new QQmlOpenMetaObjectType(metaObjectParent(), engine);
- m_type->addref();
- //Assigning type to this
- copyTypeMetaObject();
-
- //Assign this to object
- QObjectPrivate *op = QObjectPrivate::get(object);
- op->metaObject = this;
-
- //create cache
- cache = m_cache = QQmlEnginePrivate::get(engine)->cache(this);
- cache->addref();
-
- //If our parent is not a VMEMetaObject we just se the flag to false again
- if (constructedMetaData(metaData))
- QQmlData::get(object)->hasVMEMetaObject = false;
-
- nodeInstanceMetaObjectList.insert(this, true);
- hasAssignedMetaObjectData = true;
-}
-
-MetaObject::MetaObject(QObject *object, QQmlEngine *engine)
- : QQmlVMEMetaObject(object, cacheForObject(object, engine), vMEMetaDataForObject(object)),
- m_context(engine->contextForObject(object)),
- m_data(new MetaPropertyData),
- m_cache(0)
-{
- init(object, engine);
-
- QQmlData *ddata = QQmlData::get(object, false);
-
- //Assign cache to object
- if (ddata && ddata->propertyCache) {
- cache->setParent(ddata->propertyCache);
- cache->invalidate(engine, this);
- ddata->propertyCache = m_cache;
- }
-
-}
-
-MetaObject::~MetaObject()
-{
- if (cache->count() > 1) // qml is crashing because the property cache is not removed from the engine
- cache->release();
- else
- m_type->release();
-
- nodeInstanceMetaObjectList.remove(this);
-}
-
-void MetaObject::createNewDynamicProperty(const QString &name)
-{
- [[maybe_unused]] int id = m_type->createProperty(name.toUtf8());
- copyTypeMetaObject();
- setValue(id, QVariant());
- Q_ASSERT(id >= 0);
-
- //Updating cache
- QQmlPropertyCache *oldParent = m_cache->parent();
- QQmlEnginePrivate::get(m_context->engine())->cache(this)->invalidate(m_context->engine(), this);
- m_cache->setParent(oldParent);
-
- QQmlProperty property(myObject(), name, m_context);
- Q_ASSERT(property.isValid());
-}
-
-void MetaObject::setValue(int id, const QVariant &value)
-{
- QPair<QVariant, bool> &prop = m_data->getDataRef(id);
- prop.first = propertyWriteValue(id, value);
- prop.second = true;
- QMetaObject::activate(myObject(), id + m_type->signalOffset(), 0);
-}
-
-QVariant MetaObject::propertyWriteValue(int, const QVariant &value)
-{
- return value;
-}
-
-const QAbstractDynamicMetaObject *MetaObject::dynamicMetaObjectParent() const
-{
- if (QQmlVMEMetaObject::parent.isT1())
- return QQmlVMEMetaObject::parent.asT1()->toDynamicMetaObject(QQmlVMEMetaObject::object);
- else
- return 0;
-}
-
-const QMetaObject *MetaObject::metaObjectParent() const
-{
- if (QQmlVMEMetaObject::parent.isT1())
- return QQmlVMEMetaObject::parent.asT1()->toDynamicMetaObject(QQmlVMEMetaObject::object);
-
- return QQmlVMEMetaObject::parent.asT2();
-}
-
-int MetaObject::propertyOffset() const
-{
- return cache->propertyOffset();
-}
-
-int MetaObject::openMetaCall(QMetaObject::Call call, int id, void **a)
-{
- if ((call == QMetaObject::ReadProperty || call == QMetaObject::WriteProperty)
- && id >= m_type->propertyOffset()) {
- int propId = id - m_type->propertyOffset();
- if (call == QMetaObject::ReadProperty) {
- //propertyRead(propId);
- *reinterpret_cast<QVariant *>(a[0]) = m_data->getData(propId);
- } else if (call == QMetaObject::WriteProperty) {
- if (propId <= m_data->count() || m_data->m_data[propId].first != *reinterpret_cast<QVariant *>(a[0])) {
- //propertyWrite(propId);
- QPair<QVariant, bool> &prop = m_data->getDataRef(propId);
- prop.first = propertyWriteValue(propId, *reinterpret_cast<QVariant *>(a[0]));
- prop.second = true;
- //propertyWritten(propId);
- activate(myObject(), m_type->signalOffset() + propId, 0);
- }
- }
- return -1;
- } else {
- QAbstractDynamicMetaObject *directParent = parent();
- if (directParent)
- return directParent->metaCall(call, id, a);
- else
- return myObject()->qt_metacall(call, id, a);
- }
-}
-
-int MetaObject::metaCall(QMetaObject::Call call, int id, void **a)
-{
- int metaCallReturnValue = -1;
-
- const QMetaProperty propertyById = QQmlVMEMetaObject::property(id);
-
- if (call == QMetaObject::WriteProperty
- && propertyById.userType() == QMetaType::QVariant
- && reinterpret_cast<QVariant *>(a[0])->type() == QVariant::Double
- && qIsNaN(reinterpret_cast<QVariant *>(a[0])->toDouble())) {
- return -1;
- }
-
- if (call == QMetaObject::WriteProperty
- && propertyById.userType() == QMetaType::Double
- && qIsNaN(*reinterpret_cast<double*>(a[0]))) {
- return -1;
- }
-
- if (call == QMetaObject::WriteProperty
- && propertyById.userType() == QMetaType::Float
- && qIsNaN(*reinterpret_cast<float*>(a[0]))) {
- return -1;
- }
-
- QVariant oldValue;
-
- if (call == QMetaObject::WriteProperty && !propertyById.hasNotifySignal())
- {
- oldValue = propertyById.read(myObject());
- }
-
- QAbstractDynamicMetaObject *directParent = parent();
- if (directParent && id < directParent->propertyOffset()) {
- metaCallReturnValue = directParent->metaCall(call, id, a);
- } else {
- openMetaCall(call, id, a);
- }
-
- /*
- if ((call == QMetaObject::WriteProperty || call == QMetaObject::ReadProperty) && metaCallReturnValue < 0) {
- if (objectNodeInstance
- && objectNodeInstance->nodeInstanceServer()
- && objectNodeInstance->nodeInstanceServer()->dummyContextObject()
- && !(objectNodeInstance && !objectNodeInstance->isRootNodeInstance()
- && property(id).name() == QLatin1String("parent"))) {
-
- QObject *contextDummyObject = objectNodeInstance->nodeInstanceServer()->dummyContextObject();
- int propertyIndex = contextDummyObject->metaObject()->indexOfProperty(propertyById.name());
- if (propertyIndex >= 0)
- metaCallReturnValue = contextDummyObject->qt_metacall(call, propertyIndex, a);
- }
- }
- */
-
- if (call == QMetaObject::WriteProperty
- && !propertyById.hasNotifySignal()
- && oldValue != propertyById.read(myObject()))
- notifyPropertyChange(id);
-
- return metaCallReturnValue;
-}
-
-void MetaObject::notifyPropertyChange(int id)
-{
- const QMetaProperty propertyById = property(id);
-
- if (id < propertyOffset()) {
- if (notifyPropertyChangeCallBack)
- notifyPropertyChangeCallBack(myObject(), propertyById.name());
- } else {
- if (notifyPropertyChangeCallBack)
- notifyPropertyChangeCallBack(myObject(), name(id - propertyOffset()));
- }
-}
-
-int MetaObject::count() const
-{
- return m_type->propertyCount();
-}
-
-QByteArray MetaObject::name(int idx) const
-{
- return m_type->propertyName(idx);
-}
-
-void MetaObject::copyTypeMetaObject()
-{
- *static_cast<QMetaObject *>(this) = *m_type->metaObject();
-}
-
-void MetaObject::registerNotifyPropertyChangeCallBack(void (*callback)(QObject *, const PropertyName &))
-{
- notifyPropertyChangeCallBack = callback;
-}
-
-} // namespace QmlPrivateGate
-
-} // namespace Internal
-
-} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.h b/share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.h
deleted file mode 100644
index ccb2879f15..0000000000
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/metaobject.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <QQmlContext>
-#include <QScopedPointer>
-#include <private/qqmlopenmetaobject_p.h>
-#include <private/qqmlvmemetaobject_p.h>
-
-#include "nodeinstanceglobal.h"
-
-namespace QmlDesigner {
-
-namespace Internal {
-
-namespace QmlPrivateGate {
-
-void createNewDynamicProperty(QObject *object, QQmlEngine *engine, const QString &name);
-void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine);
-
-struct MetaPropertyData;
-
-class MetaObject : public QQmlVMEMetaObject
-{
-public:
- ~MetaObject() override;
-
- static void registerNotifyPropertyChangeCallBack(void (*callback)(QObject*, const PropertyName &propertyName));
-
-protected:
- MetaObject(QObject *object, QQmlEngine *engine);
- static MetaObject* getNodeInstanceMetaObject(QObject *object, QQmlEngine *engine);
-
- void createNewDynamicProperty(const QString &name);
- int openMetaCall(QMetaObject::Call _c, int _id, void **_a);
- using QQmlVMEMetaObject::metaCall;
- int metaCall(QMetaObject::Call _c, int _id, void **_a) override;
- void notifyPropertyChange(int id);
- void setValue(int id, const QVariant &value);
- QVariant propertyWriteValue(int, const QVariant &);
-
- QObject *myObject() const { return QQmlVMEMetaObject::object; }
- QAbstractDynamicMetaObject *parent() const { return const_cast<QAbstractDynamicMetaObject *>(dynamicMetaObjectParent()); }
-
- const QAbstractDynamicMetaObject *dynamicMetaObjectParent() const;
-
- const QMetaObject *metaObjectParent() const;
-
- int propertyOffset() const;
-
- int count() const;
- QByteArray name(int) const;
-
- void copyTypeMetaObject();
-
-private:
- void init(QObject *, QQmlEngine *engine);
-
- QPointer<QQmlContext> m_context;
- QQmlOpenMetaObjectType *m_type;
- QScopedPointer<MetaPropertyData> m_data;
- //QAbstractDynamicMetaObject *m_parent;
- QQmlPropertyCache *m_cache;
-
-
- friend void createNewDynamicProperty(QObject *object, QQmlEngine *engine, const QString &name);
- friend void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine);
-};
-
-} // namespace QmlPrivateGate
-} // namespace Internal
-} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp
index af83af5dd3..6e2a7a1014 100644
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.cpp
@@ -25,15 +25,25 @@
#include "qmlprivategate.h"
-#include "metaobject.h"
-#include "designercustomobjectdata.h"
-
#include <objectnodeinstance.h>
#include <nodeinstanceserver.h>
#include <QQuickItem>
#include <QQmlComponent>
#include <QFileInfo>
+#include <QProcessEnvironment>
+
+#include <private/qabstractfileengine_p.h>
+#include <private/qfsfileengine_p.h>
+
+#include <private/qquickdesignersupport_p.h>
+#include <private/qquickdesignersupportmetainfo_p.h>
+#include <private/qquickdesignersupportitems_p.h>
+#include <private/qquickdesignersupportproperties_p.h>
+#include <private/qquickdesignersupportpropertychanges_p.h>
+#include <private/qquickdesignersupportstates_p.h>
+#include <private/qqmldata_p.h>
+#include <private/qqmlcomponentattached_p.h>
#include <private/qabstractanimation_p.h>
#include <private/qobject_p.h>
@@ -42,18 +52,16 @@
#include <private/qquicktextinput_p.h>
#include <private/qquicktextedit_p.h>
#include <private/qquicktransition_p.h>
+#include <private/qquickloader_p.h>
#include <private/qquickanimation_p.h>
#include <private/qqmlmetatype_p.h>
#include <private/qqmltimer_p.h>
-#include <private/qquickstategroup_p.h>
-#include <private/qquickpropertychanges_p.h>
-#include <private/qquickstateoperations_p.h>
-
-
-#include <designersupportdelegate.h>
-#include <cstring>
+#ifdef QUICK3D_MODULE
+#include <private/qquick3dobject_p.h>
+#include <private/qquick3drepeater_p.h>
+#endif
namespace QmlDesigner {
@@ -63,326 +71,171 @@ namespace QmlPrivateGate {
bool isPropertyBlackListed(const QmlDesigner::PropertyName &propertyName)
{
- if (propertyName.contains(".") && propertyName.contains("__"))
- return true;
-
- if (propertyName.count(".") > 1)
- return true;
-
- return false;
+ return QQuickDesignerSupportProperties::isPropertyBlackListed(propertyName);
}
-static void addToPropertyNameListIfNotBlackListed(PropertyNameList *propertyNameList, const PropertyName &propertyName)
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
+
+static void addToPropertyNameListIfNotBlackListed(
+ PropertyNameList *propertyNameList, const QQuickQQuickDesignerSupport::PropertyName &propertyName)
{
- if (!isPropertyBlackListed(propertyName))
+ if (!QQuickDesignerSupportProperties::isPropertyBlackListed(propertyName))
propertyNameList->append(propertyName);
}
-PropertyNameList allPropertyNames(QObject *object,
- const PropertyName &baseName,
- QObjectList *inspectedObjects)
+PropertyNameList allPropertyNamesInline(QObject *object,
+ const PropertyName &baseName = {},
+ QObjectList *inspectedObjects = nullptr,
+ int depth = 0)
{
- PropertyNameList propertyNameList;
+ QQuickQQuickDesignerSupport::PropertyNameList propertyNameList;
QObjectList localObjectList;
- if (inspectedObjects == 0)
+ if (inspectedObjects == nullptr)
inspectedObjects = &localObjectList;
-
- if (inspectedObjects->contains(object))
+ if (depth > 2)
return propertyNameList;
- inspectedObjects->append(object);
-
+ if (!inspectedObjects->contains(object))
+ inspectedObjects->append(object);
const QMetaObject *metaObject = object->metaObject();
- for (int index = 0; index < metaObject->propertyCount(); ++index) {
- QMetaProperty metaProperty = metaObject->property(index);
- QQmlProperty declarativeProperty(object, QLatin1String(metaProperty.name()));
- if (declarativeProperty.isValid() && declarativeProperty.propertyTypeCategory() == QQmlProperty::Object) {
- if (declarativeProperty.name() != "parent") {
- QObject *childObject = QQmlMetaType::toQObject(declarativeProperty.read());
- if (childObject)
- propertyNameList.append(allPropertyNames(childObject, baseName + PropertyName(metaProperty.name()) + '.', inspectedObjects));
- }
- } else if (QQmlValueTypeFactory::valueType(metaProperty.userType())) {
- QQmlValueType *valueType = QQmlValueTypeFactory::valueType(metaProperty.userType());
- valueType->setValue(metaProperty.read(object));
- propertyNameList.append(baseName + PropertyName(metaProperty.name()));
- propertyNameList.append(allPropertyNames(valueType, baseName + PropertyName(metaProperty.name()) + '.', inspectedObjects));
- } else {
- propertyNameList.append(baseName + PropertyName(metaProperty.name()));
- }
- }
-
- return propertyNameList;
-}
-
-PropertyNameList propertyNameListForWritableProperties(QObject *object,
- const PropertyName &baseName,
- QObjectList *inspectedObjects)
-{
- PropertyNameList propertyNameList;
-
- QObjectList localObjectList;
- if (inspectedObjects == 0)
- inspectedObjects = &localObjectList;
-
-
- if (inspectedObjects->contains(object))
- return propertyNameList;
-
- inspectedObjects->append(object);
+ QStringList deferredPropertyNames;
+ const int namesIndex = metaObject->indexOfClassInfo("DeferredPropertyNames");
+ if (namesIndex != -1) {
+ QMetaClassInfo classInfo = metaObject->classInfo(namesIndex);
+ deferredPropertyNames = QString::fromUtf8(classInfo.value()).split(QLatin1Char(','));
+ }
- const QMetaObject *metaObject = object->metaObject();
for (int index = 0; index < metaObject->propertyCount(); ++index) {
QMetaProperty metaProperty = metaObject->property(index);
- QQmlProperty declarativeProperty(object, QLatin1String(metaProperty.name()));
- if (declarativeProperty.isValid() && !declarativeProperty.isWritable() && declarativeProperty.propertyTypeCategory() == QQmlProperty::Object) {
- if (declarativeProperty.name() != "parent") {
+ QQmlProperty declarativeProperty(object, QString::fromUtf8(metaProperty.name()));
+ if (declarativeProperty.isValid()
+ && declarativeProperty.propertyTypeCategory() == QQmlProperty::Object) {
+ if (declarativeProperty.name() != QLatin1String("parent")
+ && !deferredPropertyNames.contains(declarativeProperty.name())) {
QObject *childObject = QQmlMetaType::toQObject(declarativeProperty.read());
if (childObject)
- propertyNameList.append(propertyNameListForWritableProperties(childObject, baseName + PropertyName(metaProperty.name()) + '.', inspectedObjects));
+ propertyNameList.append(
+ allPropertyNamesInline(childObject,
+ baseName
+ + QQuickQQuickDesignerSupport::PropertyName(
+ metaProperty.name())
+ + '.',
+ inspectedObjects,
+ depth + 1));
}
- } else if (QQmlValueTypeFactory::valueType(metaProperty.userType())) {
- QQmlValueType *valueType = QQmlValueTypeFactory::valueType(metaProperty.userType());
+ } else if (QQmlGadgetPtrWrapper *valueType
+ = QQmlGadgetPtrWrapper::instance(qmlEngine(object), metaProperty.userType())) {
valueType->setValue(metaProperty.read(object));
- propertyNameList.append(propertyNameListForWritableProperties(valueType, baseName + PropertyName(metaProperty.name()) + '.', inspectedObjects));
- }
-
- if (metaProperty.isReadable() && metaProperty.isWritable()) {
- addToPropertyNameListIfNotBlackListed(&propertyNameList, baseName + PropertyName(metaProperty.name()));
+ propertyNameList.append(baseName
+ + QQuickQQuickDesignerSupport::PropertyName(metaProperty.name()));
+ propertyNameList.append(
+ allPropertyNamesInline(valueType,
+ baseName
+ + QQuickQQuickDesignerSupport::PropertyName(metaProperty.name())
+ + '.',
+ inspectedObjects,
+ depth + 1));
+ } else {
+ addToPropertyNameListIfNotBlackListed(&propertyNameList,
+ baseName
+ + QQuickQQuickDesignerSupport::PropertyName(
+ metaProperty.name()));
}
}
return propertyNameList;
}
+#endif
-static void stopAnimation(QObject *object)
-{
- if (object == 0)
- return;
-
- QQuickTransition *transition = qobject_cast<QQuickTransition*>(object);
- QQuickAbstractAnimation *animation = qobject_cast<QQuickAbstractAnimation*>(object);
- QQmlTimer *timer = qobject_cast<QQmlTimer*>(object);
- if (transition) {
- transition->setFromState("");
- transition->setToState("");
- } else if (animation) {
-// QQuickScriptAction *scriptAimation = qobject_cast<QQuickScriptAction*>(animation);
-// if (scriptAimation) FIXME
-// scriptAimation->setScript(QQmlScriptString());
- animation->setLoops(1);
- animation->complete();
- animation->setDisableUserControl();
- } else if (timer) {
- timer->blockSignals(true);
- }
-}
-
-static void allSubObject(QObject *object, QObjectList &objectList)
+PropertyNameList allPropertyNames(QObject *object)
{
- // don't add null pointer and stop if the object is already in the list
- if (!object || objectList.contains(object))
- return;
-
- objectList.append(object);
-
- for (int index = QObject::staticMetaObject.propertyOffset();
- index < object->metaObject()->propertyCount();
- index++) {
- QMetaProperty metaProperty = object->metaObject()->property(index);
-
- // search recursive in property objects
- if (metaProperty.isReadable()
- && metaProperty.isWritable()
- && QQmlMetaType::isQObject(metaProperty.userType())) {
- if (strcmp(metaProperty.name(), "parent") != 0) {
- QObject *propertyObject = QQmlMetaType::toQObject(metaProperty.read(object));
- allSubObject(propertyObject, objectList);
- }
-
- }
-
- // search recursive in property object lists
- if (metaProperty.isReadable()
- && QQmlMetaType::isList(metaProperty.userType())) {
- QQmlListReference list(object, metaProperty.name());
- if (list.canCount() && list.canAt()) {
- for (int i = 0; i < list.count(); i++) {
- QObject *propertyObject = list.at(i);
- allSubObject(propertyObject, objectList);
-
- }
- }
- }
- }
-
- // search recursive in object children list
- foreach (QObject *childObject, object->children()) {
- allSubObject(childObject, objectList);
- }
-
- // search recursive in quick item childItems list
- QQuickItem *quickItem = qobject_cast<QQuickItem*>(object);
- if (quickItem) {
- foreach (QQuickItem *childItem, quickItem->childItems()) {
- allSubObject(childItem, objectList);
- }
- }
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ return QQuickDesignerSupportProperties::allPropertyNames(object);
+#elif QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
+ return allPropertyNamesInline(object);
+#else
+ return QQuickDesignerSupportProperties::allPropertyNames(object);
+#endif
}
-static QString qmlDesignerRCPath()
+PropertyNameList propertyNameListForWritableProperties(QObject *object)
{
- static const QString qmlDesignerRcPathsString = QString::fromLocal8Bit(
- qgetenv("QMLDESIGNER_RC_PATHS"));
- return qmlDesignerRcPathsString;
+ return QQuickDesignerSupportProperties::propertyNameListForWritableProperties(object);
}
-static void fixResourcePathsForObject(QObject *object)
+void tweakObjects(QObject *object)
{
- static const bool qmlDesignerRcPathsIsEmpty = qmlDesignerRCPath().isEmpty();
- if (qmlDesignerRcPathsIsEmpty)
- return;
-
- PropertyNameList propertyNameList = propertyNameListForWritableProperties(object);
-
- foreach (const PropertyName &propertyName, propertyNameList) {
- QQmlProperty property(object, QString::fromUtf8(propertyName), QQmlEngine::contextForObject(object));
-
- const QVariant value = property.read();
- const QVariant fixedValue = fixResourcePaths(value);
- if (value != fixedValue) {
- property.write(fixedValue);
- }
- }
+ QQuickDesignerSupportItems::tweakObjects(object);
}
-void tweakObjects(QObject *object)
+void createNewDynamicProperty(QObject *object, QQmlEngine *engine, const QString &name)
{
- QObjectList objectList;
- allSubObject(object, objectList);
- foreach (QObject* childObject, objectList) {
- stopAnimation(childObject);
- fixResourcePathsForObject(childObject);
- }
+ QQuickDesignerSupportProperties::createNewDynamicProperty(object, engine, name);
}
-static QObject *createDummyWindow(QQmlEngine *engine)
+void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine)
{
- QQmlComponent component(engine, QUrl(QStringLiteral("qrc:/qtquickplugin/mockfiles/Window.qml")));
- return component.create();
+ QQuickDesignerSupportProperties::registerNodeInstanceMetaObject(object, engine);
}
-static bool isWindowMetaObject(const QMetaObject *metaObject)
+static bool isMetaObjectofType(const QMetaObject *metaObject, const QByteArray &type)
{
if (metaObject) {
- if (metaObject->className() == QByteArrayLiteral("QWindow"))
+ if (metaObject->className() == type)
return true;
- return isWindowMetaObject(metaObject->superClass());
+ return isMetaObjectofType(metaObject->superClass(), type);
}
return false;
}
-static bool isWindow(QObject *object) {
+static bool isQuickStyleItem(QObject *object)
+{
if (object)
- return isWindowMetaObject(object->metaObject());
+ return isMetaObjectofType(object->metaObject(), "QQuickStyleItem");
return false;
}
-static QQmlType *getQmlType(const QString &typeName, int majorNumber, int minorNumber)
-{
- return QQmlMetaType::qmlType(typeName, majorNumber, minorNumber);
-}
-
-static bool isCrashingType(QQmlType *type)
+static bool isDelegateModel(QObject *object)
{
- if (type) {
- if (type->qmlTypeName() == QStringLiteral("QtMultimedia/MediaPlayer"))
- return true;
-
- if (type->qmlTypeName() == QStringLiteral("QtMultimedia/Audio"))
- return true;
-
- if (type->qmlTypeName() == QStringLiteral("QtQuick.Controls/MenuItem"))
- return true;
-
- if (type->qmlTypeName() == QStringLiteral("QtQuick.Controls/Menu"))
- return true;
-
- if (type->qmlTypeName() == QStringLiteral("QtQuick/Timer"))
- return true;
- }
+ if (object)
+ return isMetaObjectofType(object->metaObject(), "QQmlDelegateModel");
return false;
}
-void createNewDynamicProperty(QObject *object, QQmlEngine *engine, const QString &name)
-{
- MetaObject::getNodeInstanceMetaObject(object, engine)->createNewDynamicProperty(name);
-}
-
-void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine)
-{
- // we just create one and the ownership goes automatically to the object in nodeinstance see init method
- MetaObject::getNodeInstanceMetaObject(object, engine);
-}
-
+// This is used in share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp
QObject *createPrimitive(const QString &typeName, int majorNumber, int minorNumber, QQmlContext *context)
{
- [[maybe_unused]] ComponentCompleteDisabler disableComponentComplete;
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
- QObject *object = 0;
- QQmlType *type = getQmlType(typeName, majorNumber, minorNumber);
-
- if (isCrashingType(type)) {
- object = new QObject;
- } else if (type) {
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)) // TODO remove hack later if we only support >= 5.2
- if ( type->isComposite()) {
- object = createComponent(type->sourceUrl(), context);
- } else
+ QTypeRevision revision = QTypeRevision::zero();
+ if (majorNumber > 0)
+ revision = QTypeRevision::fromVersion(majorNumber, minorNumber);
+ return QQuickDesignerSupportItems::createPrimitive(typeName, revision, context);
+#else
+ return QQuickDesignerSupportItems::createPrimitive(typeName, majorNumber, minorNumber, context);
#endif
- {
- if (type->typeName() == "QQmlComponent") {
- object = new QQmlComponent(context->engine(), 0);
- } else {
- object = type->create();
- }
- }
-
- if (isWindow(object)) {
- delete object;
- object = createDummyWindow(context->engine());
- }
-
- }
-
- if (!object) {
- qWarning() << "QuickDesigner: Cannot create an object of type"
- << QString("%1 %2,%3").arg(typeName).arg(majorNumber).arg(minorNumber)
- << "- type isn't known to declarative meta type system";
- }
-
- tweakObjects(object);
-
- if (object && QQmlEngine::contextForObject(object) == 0)
- QQmlEngine::setContextForObject(object, context);
-
- QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership);
+}
- return object;
+static QString qmlDesignerRCPath()
+{
+ static const QString qmlDesignerRcPathsString = QString::fromLocal8Bit(
+ qgetenv("QMLDESIGNER_RC_PATHS"));
+ return qmlDesignerRcPathsString;
}
QVariant fixResourcePaths(const QVariant &value)
{
- if (value.type() == QVariant::Url) {
+ if (value.type() == QVariant::Url)
+ {
const QUrl url = value.toUrl();
if (url.scheme() == QLatin1String("qrc")) {
const QString path = QLatin1String("qrc:") + url.path();
@@ -416,7 +269,7 @@ QVariant fixResourcePaths(const QVariant &value)
if (QFileInfo::exists(fixedPath)) {
fixedPath.replace(QLatin1String("//"), QLatin1String("/"));
fixedPath.replace(QLatin1Char('\\'), QLatin1Char('/'));
- return fixedPath;
+ return QUrl::fromLocalFile(fixedPath);
}
}
}
@@ -426,24 +279,9 @@ QVariant fixResourcePaths(const QVariant &value)
return value;
}
-
QObject *createComponent(const QUrl &componentUrl, QQmlContext *context)
{
- [[maybe_unused]] ComponentCompleteDisabler disableComponentComplete;
-
- QQmlComponent component(context->engine(), componentUrl);
-
- QObject *object = component.beginCreate(context);
- QmlPrivateGate::tweakObjects(object);
- component.completeCreate();
- QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership);
-
- if (component.isError()) {
- qWarning() << "Error in:" << Q_FUNC_INFO << componentUrl;
- foreach (const QQmlError &error, component.errors())
- qWarning() << error;
- }
- return object;
+ return QQuickDesignerSupportItems::createComponent(componentUrl, context);
}
bool hasFullImplementedListInterface(const QQmlListReference &list)
@@ -453,32 +291,90 @@ bool hasFullImplementedListInterface(const QQmlListReference &list)
void registerCustomData(QObject *object)
{
- DesignerCustomObjectData::registerData(object);
+ QQuickDesignerSupportProperties::registerCustomData(object);
}
QVariant getResetValue(QObject *object, const PropertyName &propertyName)
{
- return DesignerCustomObjectData::getResetValue(object, propertyName);
+ if (propertyName == "Layout.rowSpan")
+ return 1;
+ else if (propertyName == "Layout.columnSpan")
+ return 1;
+ else if (propertyName == "Layout.fillHeight")
+ return false;
+ else if (propertyName == "Layout.fillWidth")
+ return false;
+ else
+ return QQuickDesignerSupportProperties::getResetValue(object, propertyName);
+}
+
+static void setProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QVariant &value)
+{
+ QQmlProperty property(object, QString::fromUtf8(propertyName), context);
+ property.write(value);
}
void doResetProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName)
{
- DesignerCustomObjectData::doResetProperty(object, context, propertyName);
+ if (propertyName == "Layout.rowSpan")
+ setProperty(object, context, propertyName, getResetValue(object, propertyName));
+ else if (propertyName == "Layout.columnSpan")
+ setProperty(object, context, propertyName, getResetValue(object, propertyName));
+ else if (propertyName == "Layout.fillHeight")
+ setProperty(object, context, propertyName, getResetValue(object, propertyName));
+ else if (propertyName == "Layout.fillWidth")
+ setProperty(object, context, propertyName, getResetValue(object, propertyName));
+ else
+ QQuickDesignerSupportProperties::doResetProperty(object, context, propertyName);
}
bool hasValidResetBinding(QObject *object, const PropertyName &propertyName)
{
- return DesignerCustomObjectData::hasValidResetBinding(object, propertyName);
+ if (propertyName == "Layout.rowSpan")
+ return true;
+ else if (propertyName == "Layout.columnSpan")
+ return true;
+ else if (propertyName == "Layout.fillHeight")
+ return true;
+ else if (propertyName == "Layout.fillWidth")
+ return true;
+ return QQuickDesignerSupportProperties::hasValidResetBinding(object, propertyName);
}
bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged)
{
- return DesignerCustomObjectData::hasBindingForProperty(object, context, propertyName, hasChanged);
+ return QQuickDesignerSupportProperties::hasBindingForProperty(object, context, propertyName, hasChanged);
}
void setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression)
{
- DesignerCustomObjectData::setPropertyBinding(object, context, propertyName, expression);
+ QQuickDesignerSupportProperties::setPropertyBinding(object, context, propertyName, expression);
+}
+
+void emitComponentComplete(QObject *item)
+{
+ if (!item)
+ return;
+
+ QQmlData *data = QQmlData::get(item);
+ if (data && data->context) {
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ QQmlComponentAttached *componentAttached = data->context->componentAttached;
+#else
+ QQmlComponentAttached *componentAttached = data->context->componentAttacheds();
+#endif
+ while (componentAttached) {
+ if (componentAttached->parent())
+ if (componentAttached->parent() == item)
+ emit componentAttached->completed();
+
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ componentAttached = componentAttached->next;
+#else
+ componentAttached = componentAttached->next();
+#endif
+ }
+ }
}
void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInstanceServer)
@@ -486,9 +382,16 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta
if (object) {
QQuickItem *item = qobject_cast<QQuickItem*>(object);
- if (item && DesignerSupport::isComponentComplete(item))
+ if (item && QQuickDesignerSupport::isComponentComplete(item))
+ return;
+#ifdef QUICK3D_MODULE
+ auto obj3d = qobject_cast<QQuick3DRepeater *>(object);
+ if (obj3d && QQuick3DObjectPrivate::get(obj3d)->componentComplete)
return;
+#endif
+ if (!nodeInstanceServer->hasInstanceForObject(item))
+ emitComponentComplete(object);
QList<QObject*> childList = object->children();
if (item) {
@@ -503,12 +406,21 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta
doComponentCompleteRecursive(child, nodeInstanceServer);
}
- if (item) {
- static_cast<QQmlParserStatus*>(item)->componentComplete();
- } else {
- QQmlParserStatus *qmlParserStatus = dynamic_cast< QQmlParserStatus*>(object);
- if (qmlParserStatus)
- qmlParserStatus->componentComplete();
+ if (!isQuickStyleItem(object) && !isDelegateModel(object)) {
+ if (item) {
+ static_cast<QQmlParserStatus *>(item)->componentComplete();
+ } else {
+ QQmlParserStatus *qmlParserStatus = dynamic_cast<QQmlParserStatus *>(object);
+ if (qmlParserStatus) {
+ qmlParserStatus->componentComplete();
+ auto *anim = dynamic_cast<QQuickAbstractAnimation *>(object);
+ if (anim && ViewConfig::isParticleViewMode()) {
+ nodeInstanceServer->addAnimation(anim);
+ anim->setEnableUserControl();
+ anim->stop();
+ }
+ }
+ }
}
}
}
@@ -516,145 +428,80 @@ void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInsta
void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName)
{
- DesignerCustomObjectData::keepBindingFromGettingDeleted(object, context, propertyName);
+ QQuickDesignerSupportProperties::keepBindingFromGettingDeleted(object, context, propertyName);
}
bool objectWasDeleted(QObject *object)
{
- return QObjectPrivate::get(object)->wasDeleted;
+ return QQuickDesignerSupportItems::objectWasDeleted(object);
}
void disableNativeTextRendering(QQuickItem *item)
{
- QQuickText *text = qobject_cast<QQuickText*>(item);
- if (text)
- text->setRenderType(QQuickText::QtRendering);
-
- QQuickTextInput *textInput = qobject_cast<QQuickTextInput*>(item);
- if (textInput)
- textInput->setRenderType(QQuickTextInput::QtRendering);
-
- QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit*>(item);
- if (textEdit)
- textEdit->setRenderType(QQuickTextEdit::QtRendering);
+ QQuickDesignerSupportItems::disableNativeTextRendering(item);
}
void disableTextCursor(QQuickItem *item)
{
- foreach (QQuickItem *childItem, item->childItems())
- disableTextCursor(childItem);
-
- QQuickTextInput *textInput = qobject_cast<QQuickTextInput*>(item);
- if (textInput)
- textInput->setCursorVisible(false);
-
- QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit*>(item);
- if (textEdit)
- textEdit->setCursorVisible(false);
+ QQuickDesignerSupportItems::disableTextCursor(item);
}
void disableTransition(QObject *object)
{
- QQuickTransition *transition = qobject_cast<QQuickTransition*>(object);
- Q_ASSERT(transition);
- transition->setToState("invalidState");
- transition->setFromState("invalidState");
+ QQuickDesignerSupportItems::disableTransition(object);
}
void disableBehaivour(QObject *object)
{
- QQuickBehavior* behavior = qobject_cast<QQuickBehavior*>(object);
- Q_ASSERT(behavior);
- behavior->setEnabled(false);
+ QQuickDesignerSupportItems::disableBehaivour(object);
}
void stopUnifiedTimer()
{
- QUnifiedTimer::instance()->setSlowdownFactor(0.00001);
- QUnifiedTimer::instance()->setSlowModeEnabled(true);
+ QQuickDesignerSupportItems::stopUnifiedTimer();
}
bool isPropertyQObject(const QMetaProperty &metaProperty)
{
- return QQmlMetaType::isQObject(metaProperty.userType());
+ return QQuickDesignerSupportProperties::isPropertyQObject(metaProperty);
}
QObject *readQObjectProperty(const QMetaProperty &metaProperty, QObject *object)
{
- return QQmlMetaType::toQObject(metaProperty.read(object));
+ return QQuickDesignerSupportProperties::readQObjectProperty(metaProperty, object);
}
namespace States {
bool isStateActive(QObject *object, QQmlContext *context)
{
- QQuickState *stateObject = qobject_cast<QQuickState*>(object);
-
- if (!stateObject)
- return false;
- QQuickStateGroup *stateGroup = stateObject->stateGroup();
-
- QQmlProperty property(object, "name", context);
-
- return stateObject && stateGroup && stateGroup->state() == property.read();
+ return QQuickDesignerSupportStates::isStateActive(object, context);
}
void activateState(QObject *object, QQmlContext *context)
{
- QQuickState *stateObject = qobject_cast<QQuickState*>(object);
-
- if (!stateObject)
- return;
-
- QQuickStateGroup *stateGroup = stateObject->stateGroup();
-
- QQmlProperty property(object, "name", context);
-
- stateGroup->setState(property.read().toString());
+ QQuickDesignerSupportStates::activateState(object, context);
}
void deactivateState(QObject *object)
{
- QQuickState *stateObject = qobject_cast<QQuickState*>(object);
-
- if (!stateObject)
- return;
-
- QQuickStateGroup *stateGroup = stateObject->stateGroup();
-
- if (stateGroup)
- stateGroup->setState(QString());
+ QQuickDesignerSupportStates::deactivateState(object);
}
bool changeValueInRevertList(QObject *state, QObject *target, const PropertyName &propertyName, const QVariant &value)
{
- QQuickState *stateObject = qobject_cast<QQuickState*>(state);
-
- if (!stateObject)
- return false;
-
- return stateObject->changeValueInRevertList(target, QString::fromUtf8(propertyName), value);
+ return QQuickDesignerSupportStates::changeValueInRevertList(state, target, propertyName, value);
}
bool updateStateBinding(QObject *state, QObject *target, const PropertyName &propertyName, const QString &expression)
{
- QQuickState *stateObject = qobject_cast<QQuickState*>(state);
-
- if (!stateObject)
- return false;
-
- return stateObject->changeValueInRevertList(target, QString::fromUtf8(propertyName), expression);
+ return QQuickDesignerSupportStates::updateStateBinding(state, target, propertyName, expression);
}
-bool resetStateProperty(QObject *state, QObject *target, const PropertyName &propertyName, const QVariant & /* resetValue */)
+bool resetStateProperty(QObject *state, QObject *target, const PropertyName &propertyName, const QVariant &value)
{
- QQuickState *stateObject = qobject_cast<QQuickState*>(state);
-
- if (!stateObject)
- return false;
-
- return stateObject->removeEntryFromRevertList(target, QString::fromUtf8(propertyName));
+ return QQuickDesignerSupportStates::resetStateProperty(state, target, propertyName, value);
}
} //namespace States
@@ -663,137 +510,135 @@ namespace PropertyChanges {
void detachFromState(QObject *propertyChanges)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return;
-
- propertyChange->detachFromState();
+ return QQuickDesignerSupportPropertyChanges::detachFromState(propertyChanges);
}
void attachToState(QObject *propertyChanges)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return;
-
- propertyChange->attachToState();
+ return QQuickDesignerSupportPropertyChanges::attachToState(propertyChanges);
}
QObject *targetObject(QObject *propertyChanges)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return 0;
-
- return propertyChange->object();
+ return QQuickDesignerSupportPropertyChanges::targetObject(propertyChanges);
}
void removeProperty(QObject *propertyChanges, const PropertyName &propertyName)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return;
-
- propertyChange->removeProperty(QString::fromUtf8(propertyName));
+ QQuickDesignerSupportPropertyChanges::removeProperty(propertyChanges, propertyName);
}
QVariant getProperty(QObject *propertyChanges, const PropertyName &propertyName)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return QVariant();
-
- return propertyChange->property(QString::fromUtf8(propertyName));
+ return QQuickDesignerSupportPropertyChanges::getProperty(propertyChanges, propertyName);
}
void changeValue(QObject *propertyChanges, const PropertyName &propertyName, const QVariant &value)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return;
-
- propertyChange->changeValue(QString::fromUtf8(propertyName), value);
+ QQuickDesignerSupportPropertyChanges::changeValue(propertyChanges, propertyName, value);
}
void changeExpression(QObject *propertyChanges, const PropertyName &propertyName, const QString &expression)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return;
-
- propertyChange->changeExpression(QString::fromUtf8(propertyName), expression);
+ QQuickDesignerSupportPropertyChanges::changeExpression(propertyChanges, propertyName, expression);
}
QObject *stateObject(QObject *propertyChanges)
{
- QQuickPropertyChanges *propertyChange = qobject_cast<QQuickPropertyChanges*>(propertyChanges);
-
- if (!propertyChange)
- return 0;
-
- return propertyChange->state();
+ return QQuickDesignerSupportPropertyChanges::stateObject(propertyChanges);
}
bool isNormalProperty(const PropertyName &propertyName)
{
- QMetaObject metaObject = QQuickPropertyChanges::staticMetaObject;
-
- return (metaObject.indexOfProperty(propertyName) > 0); // 'restoreEntryValues', 'explicit'
+ return QQuickDesignerSupportPropertyChanges::isNormalProperty(propertyName);
}
-
} // namespace PropertyChanges
bool isSubclassOf(QObject *object, const QByteArray &superTypeName)
{
- if (object == 0)
- return false;
-
- const QMetaObject *metaObject = object->metaObject();
-
- while (metaObject) {
- QQmlType *qmlType = QQmlMetaType::qmlType(metaObject);
- if (qmlType && qmlType->qmlTypeName() == superTypeName) // ignore version numbers
- return true;
-
- if (metaObject->className() == superTypeName)
- return true;
-
- metaObject = metaObject->superClass();
- }
-
- return false;
+ return QQuickDesignerSupportMetaInfo::isSubclassOf(object, superTypeName);
}
void getPropertyCache(QObject *object, QQmlEngine *engine)
{
- QQmlEnginePrivate::get(engine)->cache(object->metaObject());
+#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
+ QQuickDesignerSupportProperties::getPropertyCache(object, engine);
+#else
+ Q_UNUSED(engine);
+ QQuickDesignerSupportProperties::getPropertyCache(object);
+#endif
}
void registerNotifyPropertyChangeCallBack(void (*callback)(QObject *, const PropertyName &))
{
- MetaObject::registerNotifyPropertyChangeCallBack(callback);
+ QQuickDesignerSupportMetaInfo::registerNotifyPropertyChangeCallBack(callback);
}
ComponentCompleteDisabler::ComponentCompleteDisabler()
{
- DesignerSupport::disableComponentComplete();
+ QQuickDesignerSupport::disableComponentComplete();
}
ComponentCompleteDisabler::~ComponentCompleteDisabler()
{
- DesignerSupport::enableComponentComplete();
+ QQuickDesignerSupport::enableComponentComplete();
+}
+
+class QrcEngineHandler : public QAbstractFileEngineHandler
+{
+public:
+ QAbstractFileEngine *create(const QString &fileName) const final;
+};
+
+QAbstractFileEngine *QrcEngineHandler::create(const QString &fileName) const
+{
+ if (fileName.startsWith(":/qt-project.org"))
+ return nullptr;
+
+ if (fileName.startsWith(":/qtquickplugin"))
+ return nullptr;
+
+ if (fileName.startsWith(":/")) {
+ const QStringList searchPaths = qmlDesignerRCPath().split(';');
+ foreach (const QString &qrcPath, searchPaths) {
+ const QStringList qrcDefintion = qrcPath.split('=');
+ if (qrcDefintion.count() == 2) {
+ QString fixedPath = fileName;
+ fixedPath.replace(":" + qrcDefintion.first(), qrcDefintion.last() + '/');
+
+ if (fileName == fixedPath)
+ return nullptr;
+
+ if (QFileInfo::exists(fixedPath)) {
+ fixedPath.replace("//", "/");
+ fixedPath.replace('\\', '/');
+ return new QFSFileEngine(fixedPath);
+ }
+ }
+ }
+ }
+
+ return nullptr;
}
+static QrcEngineHandler* s_qrcEngineHandler = nullptr;
+
+class EngineHandlerDeleter
+{
+public:
+ EngineHandlerDeleter()
+ {}
+ ~EngineHandlerDeleter()
+ { delete s_qrcEngineHandler; }
+};
+
void registerFixResourcePathsForObjectCallBack()
{
+ static EngineHandlerDeleter deleter;
+
+ if (!s_qrcEngineHandler)
+ s_qrcEngineHandler = new QrcEngineHandler();
}
} // namespace QmlPrivateGate
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri
index a72b032488..896ab52b00 100644
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri
+++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri
@@ -1,45 +1,7 @@
INCLUDEPATH += $$PWD/
-# in case we are building the puppet inside qtcreator we don't have the qtcreator.pri where this function comes from
-defineTest(minQtVersion) {
- maj = $$1
- min = $$2
- patch = $$3
- isEqual(QT_MAJOR_VERSION, $$maj) {
- isEqual(QT_MINOR_VERSION, $$min) {
- isEqual(QT_PATCH_VERSION, $$patch) {
- return(true)
- }
- greaterThan(QT_PATCH_VERSION, $$patch) {
- return(true)
- }
- }
- greaterThan(QT_MINOR_VERSION, $$min) {
- return(true)
- }
- }
- greaterThan(QT_MAJOR_VERSION, $$maj) {
- return(true)
- }
- return(false)
-}
-
-minQtVersion(5, 6, 0) {
HEADERS += \
$$PWD/qmlprivategate.h
SOURCES += \
- $$PWD/qmlprivategate_56.cpp
-
-} else {
-
-HEADERS += \
- $$PWD/qmlprivategate.h \
- $$PWD/metaobject.h \
- $$PWD/designercustomobjectdata.h
-
-SOURCES += \
- $$PWD/qmlprivategate.cpp \
- $$PWD/metaobject.cpp \
- $$PWD/designercustomobjectdata.cpp
-}
+ $$PWD/qmlprivategate.cpp
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp
deleted file mode 100644
index ba8c365ef8..0000000000
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate_56.cpp
+++ /dev/null
@@ -1,647 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "qmlprivategate.h"
-
-#include "designercustomobjectdata.h"
-
-#include <objectnodeinstance.h>
-#include <nodeinstanceserver.h>
-
-#include <QQuickItem>
-#include <QQmlComponent>
-#include <QFileInfo>
-#include <QProcessEnvironment>
-
-#include <private/qabstractfileengine_p.h>
-#include <private/qfsfileengine_p.h>
-
-#include <private/qquickdesignersupport_p.h>
-#include <private/qquickdesignersupportmetainfo_p.h>
-#include <private/qquickdesignersupportitems_p.h>
-#include <private/qquickdesignersupportproperties_p.h>
-#include <private/qquickdesignersupportpropertychanges_p.h>
-#include <private/qquickdesignersupportstates_p.h>
-#include <private/qqmldata_p.h>
-#include <private/qqmlcomponentattached_p.h>
-
-#include <private/qabstractanimation_p.h>
-#include <private/qobject_p.h>
-#include <private/qquickbehavior_p.h>
-#include <private/qquicktext_p.h>
-#include <private/qquicktextinput_p.h>
-#include <private/qquicktextedit_p.h>
-#include <private/qquicktransition_p.h>
-#include <private/qquickloader_p.h>
-
-#include <private/qquickanimation_p.h>
-#include <private/qqmlmetatype_p.h>
-#include <private/qqmltimer_p.h>
-
-#ifdef QUICK3D_MODULE
-#include <private/qquick3dobject_p.h>
-#include <private/qquick3drepeater_p.h>
-#endif
-
-namespace QmlDesigner {
-
-namespace Internal {
-
-namespace QmlPrivateGate {
-
-bool isPropertyBlackListed(const QmlDesigner::PropertyName &propertyName)
-{
- return QQuickDesignerSupportProperties::isPropertyBlackListed(propertyName);
-}
-
-#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
-
-static void addToPropertyNameListIfNotBlackListed(
- PropertyNameList *propertyNameList, const QQuickDesignerSupport::PropertyName &propertyName)
-{
- if (!QQuickDesignerSupportProperties::isPropertyBlackListed(propertyName))
- propertyNameList->append(propertyName);
-}
-
-PropertyNameList allPropertyNamesInline(QObject *object,
- const PropertyName &baseName = {},
- QObjectList *inspectedObjects = nullptr,
- int depth = 0)
-{
- QQuickDesignerSupport::PropertyNameList propertyNameList;
-
- QObjectList localObjectList;
-
- if (inspectedObjects == nullptr)
- inspectedObjects = &localObjectList;
-
- if (depth > 2)
- return propertyNameList;
-
- if (!inspectedObjects->contains(object))
- inspectedObjects->append(object);
-
- const QMetaObject *metaObject = object->metaObject();
-
- QStringList deferredPropertyNames;
- const int namesIndex = metaObject->indexOfClassInfo("DeferredPropertyNames");
- if (namesIndex != -1) {
- QMetaClassInfo classInfo = metaObject->classInfo(namesIndex);
- deferredPropertyNames = QString::fromUtf8(classInfo.value()).split(QLatin1Char(','));
- }
-
- for (int index = 0; index < metaObject->propertyCount(); ++index) {
- QMetaProperty metaProperty = metaObject->property(index);
- QQmlProperty declarativeProperty(object, QString::fromUtf8(metaProperty.name()));
- if (declarativeProperty.isValid()
- && declarativeProperty.propertyTypeCategory() == QQmlProperty::Object) {
- if (declarativeProperty.name() != QLatin1String("parent")
- && !deferredPropertyNames.contains(declarativeProperty.name())) {
- QObject *childObject = QQmlMetaType::toQObject(declarativeProperty.read());
- if (childObject)
- propertyNameList.append(
- allPropertyNamesInline(childObject,
- baseName
- + QQuickDesignerSupport::PropertyName(
- metaProperty.name())
- + '.',
- inspectedObjects,
- depth + 1));
- }
- } else if (QQmlGadgetPtrWrapper *valueType
- = QQmlGadgetPtrWrapper::instance(qmlEngine(object), metaProperty.userType())) {
- valueType->setValue(metaProperty.read(object));
- propertyNameList.append(baseName
- + QQuickDesignerSupport::PropertyName(metaProperty.name()));
- propertyNameList.append(
- allPropertyNamesInline(valueType,
- baseName
- + QQuickDesignerSupport::PropertyName(metaProperty.name())
- + '.',
- inspectedObjects,
- depth + 1));
- } else {
- addToPropertyNameListIfNotBlackListed(&propertyNameList,
- baseName
- + QQuickDesignerSupport::PropertyName(
- metaProperty.name()));
- }
- }
-
- return propertyNameList;
-}
-#endif
-
-PropertyNameList allPropertyNames(QObject *object)
-{
-#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
- return QQuickDesignerSupportProperties::allPropertyNames(object);
-#elif QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
- return allPropertyNamesInline(object);
-#else
- return QQuickDesignerSupportProperties::allPropertyNames(object);
-#endif
-}
-
-PropertyNameList propertyNameListForWritableProperties(QObject *object)
-{
- return QQuickDesignerSupportProperties::propertyNameListForWritableProperties(object);
-}
-
-void tweakObjects(QObject *object)
-{
- QQuickDesignerSupportItems::tweakObjects(object);
-}
-
-void createNewDynamicProperty(QObject *object, QQmlEngine *engine, const QString &name)
-{
- QQuickDesignerSupportProperties::createNewDynamicProperty(object, engine, name);
-}
-
-void registerNodeInstanceMetaObject(QObject *object, QQmlEngine *engine)
-{
- QQuickDesignerSupportProperties::registerNodeInstanceMetaObject(object, engine);
-}
-
-static bool isMetaObjectofType(const QMetaObject *metaObject, const QByteArray &type)
-{
- if (metaObject) {
- if (metaObject->className() == type)
- return true;
-
- return isMetaObjectofType(metaObject->superClass(), type);
- }
-
- return false;
-}
-
-static bool isQuickStyleItem(QObject *object)
-{
- if (object)
- return isMetaObjectofType(object->metaObject(), "QQuickStyleItem");
-
- return false;
-}
-
-static bool isDelegateModel(QObject *object)
-{
- if (object)
- return isMetaObjectofType(object->metaObject(), "QQmlDelegateModel");
-
- return false;
-}
-
-// This is used in share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.cpp
-QObject *createPrimitive(const QString &typeName, int majorNumber, int minorNumber, QQmlContext *context)
-{
-#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
-
- QTypeRevision revision = QTypeRevision::zero();
- if (majorNumber > 0)
- revision = QTypeRevision::fromVersion(majorNumber, minorNumber);
- return QQuickDesignerSupportItems::createPrimitive(typeName, revision, context);
-#else
- return QQuickDesignerSupportItems::createPrimitive(typeName, majorNumber, minorNumber, context);
-#endif
-}
-
-static QString qmlDesignerRCPath()
-{
- static const QString qmlDesignerRcPathsString = QString::fromLocal8Bit(
- qgetenv("QMLDESIGNER_RC_PATHS"));
- return qmlDesignerRcPathsString;
-}
-
-QVariant fixResourcePaths(const QVariant &value)
-{
- if (value.type() == QVariant::Url)
- {
- const QUrl url = value.toUrl();
- if (url.scheme() == QLatin1String("qrc")) {
- const QString path = QLatin1String("qrc:") + url.path();
- if (!qmlDesignerRCPath().isEmpty()) {
- const QStringList searchPaths = qmlDesignerRCPath().split(QLatin1Char(';'));
- foreach (const QString &qrcPath, searchPaths) {
- const QStringList qrcDefintion = qrcPath.split(QLatin1Char('='));
- if (qrcDefintion.count() == 2) {
- QString fixedPath = path;
- fixedPath.replace(QLatin1String("qrc:") + qrcDefintion.first(), qrcDefintion.last() + QLatin1Char('/'));
- if (QFileInfo::exists(fixedPath)) {
- fixedPath.replace(QLatin1String("//"), QLatin1String("/"));
- fixedPath.replace(QLatin1Char('\\'), QLatin1Char('/'));
- return QUrl::fromLocalFile(fixedPath);
- }
- }
- }
- }
- }
- }
- if (value.type() == QVariant::String) {
- const QString str = value.toString();
- if (str.contains(QLatin1String("qrc:"))) {
- if (!qmlDesignerRCPath().isEmpty()) {
- const QStringList searchPaths = qmlDesignerRCPath().split(QLatin1Char(';'));
- foreach (const QString &qrcPath, searchPaths) {
- const QStringList qrcDefintion = qrcPath.split(QLatin1Char('='));
- if (qrcDefintion.count() == 2) {
- QString fixedPath = str;
- fixedPath.replace(QLatin1String("qrc:") + qrcDefintion.first(), qrcDefintion.last() + QLatin1Char('/'));
- if (QFileInfo::exists(fixedPath)) {
- fixedPath.replace(QLatin1String("//"), QLatin1String("/"));
- fixedPath.replace(QLatin1Char('\\'), QLatin1Char('/'));
- return QUrl::fromLocalFile(fixedPath);
- }
- }
- }
- }
- }
- }
- return value;
-}
-
-QObject *createComponent(const QUrl &componentUrl, QQmlContext *context)
-{
- return QQuickDesignerSupportItems::createComponent(componentUrl, context);
-}
-
-bool hasFullImplementedListInterface(const QQmlListReference &list)
-{
- return list.isValid() && list.canCount() && list.canAt() && list.canAppend() && list.canClear();
-}
-
-void registerCustomData(QObject *object)
-{
- QQuickDesignerSupportProperties::registerCustomData(object);
-}
-
-QVariant getResetValue(QObject *object, const PropertyName &propertyName)
-{
- if (propertyName == "Layout.rowSpan")
- return 1;
- else if (propertyName == "Layout.columnSpan")
- return 1;
- else if (propertyName == "Layout.fillHeight")
- return false;
- else if (propertyName == "Layout.fillWidth")
- return false;
- else
- return QQuickDesignerSupportProperties::getResetValue(object, propertyName);
-}
-
-static void setProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QVariant &value)
-{
- QQmlProperty property(object, QString::fromUtf8(propertyName), context);
- property.write(value);
-}
-
-void doResetProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName)
-{
- if (propertyName == "Layout.rowSpan")
- setProperty(object, context, propertyName, getResetValue(object, propertyName));
- else if (propertyName == "Layout.columnSpan")
- setProperty(object, context, propertyName, getResetValue(object, propertyName));
- else if (propertyName == "Layout.fillHeight")
- setProperty(object, context, propertyName, getResetValue(object, propertyName));
- else if (propertyName == "Layout.fillWidth")
- setProperty(object, context, propertyName, getResetValue(object, propertyName));
- else
- QQuickDesignerSupportProperties::doResetProperty(object, context, propertyName);
-}
-
-bool hasValidResetBinding(QObject *object, const PropertyName &propertyName)
-{
- if (propertyName == "Layout.rowSpan")
- return true;
- else if (propertyName == "Layout.columnSpan")
- return true;
- else if (propertyName == "Layout.fillHeight")
- return true;
- else if (propertyName == "Layout.fillWidth")
- return true;
- return QQuickDesignerSupportProperties::hasValidResetBinding(object, propertyName);
-}
-
-bool hasBindingForProperty(QObject *object, QQmlContext *context, const PropertyName &propertyName, bool *hasChanged)
-{
- return QQuickDesignerSupportProperties::hasBindingForProperty(object, context, propertyName, hasChanged);
-}
-
-void setPropertyBinding(QObject *object, QQmlContext *context, const PropertyName &propertyName, const QString &expression)
-{
- QQuickDesignerSupportProperties::setPropertyBinding(object, context, propertyName, expression);
-}
-
-void emitComponentComplete(QObject *item)
-{
- if (!item)
- return;
-
- QQmlData *data = QQmlData::get(item);
- if (data && data->context) {
-#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
- QQmlComponentAttached *componentAttached = data->context->componentAttached;
-#else
- QQmlComponentAttached *componentAttached = data->context->componentAttacheds();
-#endif
- while (componentAttached) {
- if (componentAttached->parent())
- if (componentAttached->parent() == item)
- emit componentAttached->completed();
-
-#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
- componentAttached = componentAttached->next;
-#else
- componentAttached = componentAttached->next();
-#endif
- }
- }
-}
-
-void doComponentCompleteRecursive(QObject *object, NodeInstanceServer *nodeInstanceServer)
-{
- if (object) {
- QQuickItem *item = qobject_cast<QQuickItem*>(object);
-
- if (item && DesignerSupport::isComponentComplete(item))
- return;
-#ifdef QUICK3D_MODULE
- auto obj3d = qobject_cast<QQuick3DRepeater *>(object);
- if (obj3d && QQuick3DObjectPrivate::get(obj3d)->componentComplete)
- return;
-#endif
-
- if (!nodeInstanceServer->hasInstanceForObject(item))
- emitComponentComplete(object);
- QList<QObject*> childList = object->children();
-
- if (item) {
- foreach (QQuickItem *childItem, item->childItems()) {
- if (!childList.contains(childItem))
- childList.append(childItem);
- }
- }
-
- foreach (QObject *child, childList) {
- if (!nodeInstanceServer->hasInstanceForObject(child))
- doComponentCompleteRecursive(child, nodeInstanceServer);
- }
-
- if (!isQuickStyleItem(object) && !isDelegateModel(object)) {
- if (item) {
- static_cast<QQmlParserStatus *>(item)->componentComplete();
- } else {
- QQmlParserStatus *qmlParserStatus = dynamic_cast<QQmlParserStatus *>(object);
- if (qmlParserStatus) {
- qmlParserStatus->componentComplete();
- auto *anim = dynamic_cast<QQuickAbstractAnimation *>(object);
- if (anim && ViewConfig::isParticleViewMode()) {
- nodeInstanceServer->addAnimation(anim);
- anim->setEnableUserControl();
- anim->stop();
- }
- }
- }
- }
- }
-}
-
-
-void keepBindingFromGettingDeleted(QObject *object, QQmlContext *context, const PropertyName &propertyName)
-{
- QQuickDesignerSupportProperties::keepBindingFromGettingDeleted(object, context, propertyName);
-}
-
-bool objectWasDeleted(QObject *object)
-{
- return QQuickDesignerSupportItems::objectWasDeleted(object);
-}
-
-void disableNativeTextRendering(QQuickItem *item)
-{
- QQuickDesignerSupportItems::disableNativeTextRendering(item);
-}
-
-void disableTextCursor(QQuickItem *item)
-{
- QQuickDesignerSupportItems::disableTextCursor(item);
-}
-
-void disableTransition(QObject *object)
-{
- QQuickDesignerSupportItems::disableTransition(object);
-}
-
-void disableBehaivour(QObject *object)
-{
- QQuickDesignerSupportItems::disableBehaivour(object);
-}
-
-void stopUnifiedTimer()
-{
- QQuickDesignerSupportItems::stopUnifiedTimer();
-}
-
-bool isPropertyQObject(const QMetaProperty &metaProperty)
-{
- return QQuickDesignerSupportProperties::isPropertyQObject(metaProperty);
-}
-
-QObject *readQObjectProperty(const QMetaProperty &metaProperty, QObject *object)
-{
- return QQuickDesignerSupportProperties::readQObjectProperty(metaProperty, object);
-}
-
-namespace States {
-
-bool isStateActive(QObject *object, QQmlContext *context)
-{
-
- return QQuickDesignerSupportStates::isStateActive(object, context);
-}
-
-void activateState(QObject *object, QQmlContext *context)
-{
- QQuickDesignerSupportStates::activateState(object, context);
-}
-
-void deactivateState(QObject *object)
-{
- QQuickDesignerSupportStates::deactivateState(object);
-}
-
-bool changeValueInRevertList(QObject *state, QObject *target, const PropertyName &propertyName, const QVariant &value)
-{
- return QQuickDesignerSupportStates::changeValueInRevertList(state, target, propertyName, value);
-}
-
-bool updateStateBinding(QObject *state, QObject *target, const PropertyName &propertyName, const QString &expression)
-{
- return QQuickDesignerSupportStates::updateStateBinding(state, target, propertyName, expression);
-}
-
-bool resetStateProperty(QObject *state, QObject *target, const PropertyName &propertyName, const QVariant &value)
-{
- return QQuickDesignerSupportStates::resetStateProperty(state, target, propertyName, value);
-}
-
-} //namespace States
-
-namespace PropertyChanges {
-
-void detachFromState(QObject *propertyChanges)
-{
- return QQuickDesignerSupportPropertyChanges::detachFromState(propertyChanges);
-}
-
-void attachToState(QObject *propertyChanges)
-{
- return QQuickDesignerSupportPropertyChanges::attachToState(propertyChanges);
-}
-
-QObject *targetObject(QObject *propertyChanges)
-{
- return QQuickDesignerSupportPropertyChanges::targetObject(propertyChanges);
-}
-
-void removeProperty(QObject *propertyChanges, const PropertyName &propertyName)
-{
- QQuickDesignerSupportPropertyChanges::removeProperty(propertyChanges, propertyName);
-}
-
-QVariant getProperty(QObject *propertyChanges, const PropertyName &propertyName)
-{
- return QQuickDesignerSupportPropertyChanges::getProperty(propertyChanges, propertyName);
-}
-
-void changeValue(QObject *propertyChanges, const PropertyName &propertyName, const QVariant &value)
-{
- QQuickDesignerSupportPropertyChanges::changeValue(propertyChanges, propertyName, value);
-}
-
-void changeExpression(QObject *propertyChanges, const PropertyName &propertyName, const QString &expression)
-{
- QQuickDesignerSupportPropertyChanges::changeExpression(propertyChanges, propertyName, expression);
-}
-
-QObject *stateObject(QObject *propertyChanges)
-{
- return QQuickDesignerSupportPropertyChanges::stateObject(propertyChanges);
-}
-
-bool isNormalProperty(const PropertyName &propertyName)
-{
- return QQuickDesignerSupportPropertyChanges::isNormalProperty(propertyName);
-}
-
-} // namespace PropertyChanges
-
-bool isSubclassOf(QObject *object, const QByteArray &superTypeName)
-{
- return QQuickDesignerSupportMetaInfo::isSubclassOf(object, superTypeName);
-}
-
-void getPropertyCache(QObject *object, [[maybe_unused]] QQmlEngine *engine)
-{
-#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
- QQuickDesignerSupportProperties::getPropertyCache(object, engine);
-#else
- QQuickDesignerSupportProperties::getPropertyCache(object);
-#endif
-}
-
-void registerNotifyPropertyChangeCallBack(void (*callback)(QObject *, const PropertyName &))
-{
- QQuickDesignerSupportMetaInfo::registerNotifyPropertyChangeCallBack(callback);
-}
-
-ComponentCompleteDisabler::ComponentCompleteDisabler()
-{
- DesignerSupport::disableComponentComplete();
-}
-
-ComponentCompleteDisabler::~ComponentCompleteDisabler()
-{
- DesignerSupport::enableComponentComplete();
-}
-
-class QrcEngineHandler : public QAbstractFileEngineHandler
-{
-public:
- QAbstractFileEngine *create(const QString &fileName) const final;
-};
-
-QAbstractFileEngine *QrcEngineHandler::create(const QString &fileName) const
-{
- if (fileName.startsWith(":/qt-project.org"))
- return nullptr;
-
- if (fileName.startsWith(":/qtquickplugin"))
- return nullptr;
-
- if (fileName.startsWith(":/")) {
- const QStringList searchPaths = qmlDesignerRCPath().split(';');
- foreach (const QString &qrcPath, searchPaths) {
- const QStringList qrcDefintion = qrcPath.split('=');
- if (qrcDefintion.count() == 2) {
- QString fixedPath = fileName;
- fixedPath.replace(":" + qrcDefintion.first(), qrcDefintion.last() + '/');
-
- if (fileName == fixedPath)
- return nullptr;
-
- if (QFileInfo::exists(fixedPath)) {
- fixedPath.replace("//", "/");
- fixedPath.replace('\\', '/');
- return new QFSFileEngine(fixedPath);
- }
- }
- }
- }
-
- return nullptr;
-}
-
-static QrcEngineHandler* s_qrcEngineHandler = nullptr;
-
-class EngineHandlerDeleter
-{
-public:
- EngineHandlerDeleter()
- {}
- ~EngineHandlerDeleter()
- { delete s_qrcEngineHandler; }
-};
-
-void registerFixResourcePathsForObjectCallBack()
-{
- static EngineHandlerDeleter deleter;
-
- if (!s_qrcEngineHandler)
- s_qrcEngineHandler = new QrcEngineHandler();
-}
-
-} // namespace QmlPrivateGate
-} // namespace Internal
-} // namespace QmlDesigner