From 8870c86ad5587c90fca331c5ceb5050076d9a27b Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 27 Jul 2011 14:46:12 +0200 Subject: [PATCH] QmlDesigner.NodeInstance: Update the screen object if the root item size changed Change-Id: Ifc06131f4a57a30ab9b20687372150b23c8416cb Reviewed-on: http://codereview.qt.nokia.com/2285 Reviewed-by: Qt Sanity Bot Reviewed-by: Thomas Hartmann --- .../qmlpuppet/instances/qt4nodeinstanceserver.cpp | 41 ++++++++++++++++++++++ .../qmlpuppet/instances/qt4nodeinstanceserver.h | 6 ++++ 2 files changed, 47 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp index 7354f2303e..ff6e32eda4 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.cpp @@ -146,4 +146,45 @@ void Qt4NodeInstanceServer::refreshBindings() engine()->rootContext()->setContextProperty(QString("__%1").arg(counter++), 0); // refreshing bindings } +void Qt4NodeInstanceServer::changeAuxiliaryValues(const ChangeAuxiliaryCommand &command) +{ + NodeInstanceServer::changeAuxiliaryValues(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::changePropertyValues(const ChangeValuesCommand &command) +{ + NodeInstanceServer::changePropertyValues(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::changePropertyBindings(const ChangeBindingsCommand &command) +{ + NodeInstanceServer::changePropertyBindings(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::removeProperties(const RemovePropertiesCommand &command) +{ + NodeInstanceServer::removeProperties(command); + + refreshScreenObject(); +} + +void Qt4NodeInstanceServer::refreshScreenObject() +{ + if (declarativeView()) { + QObject *screen = rootContext()->contextProperty("screen").value(); + if (screen) { + screen->metaObject()->invokeMethod(screen, + "privateSetDisplay", + Q_ARG(int, rootNodeInstance().size().width()), + Q_ARG(int, rootNodeInstance().size().height()), + Q_ARG(qreal, 210)); // TODO: dpi should be setable + } + } +} } // QmlDesigner diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h index 67ee32102e..06bc8081a7 100644 --- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4nodeinstanceserver.h @@ -53,12 +53,18 @@ public: QDeclarativeEngine *engine() const; void refreshBindings(); + void changeAuxiliaryValues(const ChangeAuxiliaryCommand &command); + void changePropertyValues(const ChangeValuesCommand &command); + void changePropertyBindings(const ChangeBindingsCommand &command); + void removeProperties(const RemovePropertiesCommand &command); + protected: void initializeView(const QVector &importVector); void resizeCanvasSizeToRootItemSize(); void resetAllItems(); bool nonInstanceChildIsDirty(QGraphicsObject *graphicsObject) const; QList setupScene(const CreateSceneCommand &command); + void refreshScreenObject(); private: QWeakPointer m_declarativeView; -- 2.11.0