diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index e31c4932cf7..67fa5096bd4 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 92fc069690a..018b4da242d 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 ad9de63f57e..19e864e6381 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 ed4f97d81be..d827075c452 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 51b1dcd1c06..ab38b33aafe 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 7e9bd53341f..5f2f2089135 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; };