aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2021-08-24 12:36:58 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2021-08-26 14:18:37 +0000
commit30827fe4016cbbc62d4eb0291d4af7c5dc54d007 (patch)
tree12339129b14b1557fc244286a7c06ae83634ba12 /share
parent90027cd298359a70f35b6feca98609a3c7fc67e3 (diff)
QmlDesigner: Implement visibility for unified render path
If the item is set to invisible we set visible to false in the render and preview puppets. This will have no effect on the value in the property editor. Changing the actual value of visible can have side-effects on the rendering in some rare cases. Task-number: QDS-4932 Change-Id: I5ce0925ebff8f5e4e64bc71fd5d33d6154b85f91 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp5
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp5
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp21
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h3
6 files changed, 38 insertions, 0 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index e31c4932cf..67fa5096bd 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -1529,4 +1529,9 @@ void NodeInstanceServer::registerFonts(const QUrl &resourceUrl) const
QFontDatabase::addApplicationFont(it.next());
}
+bool NodeInstanceServer::isInformationServer() const
+{
+ return false;
+}
+
} // namespace QmlDesigner
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
index 92fc069690..018b4da242 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.h
@@ -220,6 +220,8 @@ public:
virtual QImage grabWindow() = 0;
virtual QImage grabItem(QQuickItem *item) = 0;
+ virtual bool isInformationServer() const;
+
public slots:
void refreshLocalFileProperty(const QString &path);
void refreshDummyData(const QString &path);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
index ad9de63f57..19e864e638 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
@@ -2085,6 +2085,11 @@ void Qt5InformationNodeInstanceServer::handleInstanceHidden(const ServerNodeInst
#endif
}
+bool Qt5InformationNodeInstanceServer::isInformationServer() const
+{
+ return true;
+}
+
// update 3D view size when it changes in creator side
void Qt5InformationNodeInstanceServer::update3DViewState(const Update3dViewStateCommand &command)
{
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h
index ed4f97d81b..d827075c45 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h
@@ -75,6 +75,8 @@ public:
void handleInstanceLocked(const ServerNodeInstance &instance, bool enable, bool checkAncestors) override;
void handleInstanceHidden(const ServerNodeInstance &instance, bool enable, bool checkAncestors) override;
+ bool isInformationServer() const override;
+
private slots:
void handleSelectionChanged(const QVariant &objs);
void handleObjectPropertyCommit(const QVariant &objects, const QVariant &propNames);
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
index 51b1dcd1c0..ab38b33aaf 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp
@@ -295,6 +295,27 @@ bool QuickItemNodeInstance::unifiedRenderPathOrQt6()
#endif
}
+void QuickItemNodeInstance::setHiddenInEditor(bool hide)
+{
+ ObjectNodeInstance::setHiddenInEditor(hide);
+ if (s_unifiedRenderPath && !nodeInstanceServer()->isInformationServer()) {
+ QQmlProperty property(object(), "visible", context());
+
+ if (!property.isValid())
+ return;
+
+ bool visible = property.read().toBool();
+
+ if (hide && visible) {
+ setPropertyVariant("visible", false);
+ m_hidden = true;
+ } else if (!hide && !visible && m_hidden) {
+ setPropertyVariant("visible", true);
+ m_hidden = false;
+ }
+ }
+}
+
QRectF QuickItemNodeInstance::contentItemBoundingBox() const
{
if (contentItem()) {
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h
index 7e9bd53341..5f2f208913 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h
@@ -106,6 +106,8 @@ public:
static bool unifiedRenderPath();
static bool unifiedRenderPathOrQt6();
+ void setHiddenInEditor(bool b) override;
+
protected:
explicit QuickItemNodeInstance(QQuickItem*);
QQuickItem *quickItem() const;
@@ -139,6 +141,7 @@ private: //variables
double m_y;
double m_width;
double m_height;
+ bool m_hidden = false;
static bool s_createEffectItem;
static bool s_unifiedRenderPath;
};