From: Samuel Rødal Date: Fri, 1 Apr 2011 12:07:54 +0000 (+0200) Subject: Properly handle surface resizes in QML compositor. X-Git-Tag: qt-v5.0.0-alpha1~330 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3767fc495f3b04fb4b669667d43f0185d9b239d3;p=profile%2Fivi%2Fqtwayland.git Properly handle surface resizes in QML compositor. --- diff --git a/examples/qml-compositor/main.cpp b/examples/qml-compositor/main.cpp index 6b7985a..c406d58 100644 --- a/examples/qml-compositor/main.cpp +++ b/examples/qml-compositor/main.cpp @@ -69,6 +69,7 @@ public: signals: void windowAdded(QVariant window); void windowDestroyed(QVariant window); + void windowResized(QVariant window); public slots: void destroyWindow(QVariant window) { @@ -80,7 +81,12 @@ private slots: WaylandSurface *surface = qobject_cast(sender()); surface->setGeometry(rect); - if (!m_windowMap.contains(surface)) { + if (m_windowMap.contains(surface)) { + WaylandSurfaceItem *item = m_windowMap.value(surface); + item->setWidth(rect.width()); + item->setHeight(rect.height()); + emit windowResized(QVariant::fromValue(static_cast(item))); + } else { WaylandSurfaceItem *item = new WaylandSurfaceItem(surface, rootObject()); connect(surface, SIGNAL(destroyed(QObject *)), this, SLOT(surfaceDestroyed(QObject *))); emit windowAdded(QVariant::fromValue(static_cast(item))); @@ -122,6 +128,7 @@ int main(int argc, char *argv[]) QObject::connect(&compositor, SIGNAL(windowAdded(QVariant)), compositor.rootObject(), SLOT(windowAdded(QVariant))); QObject::connect(&compositor, SIGNAL(windowDestroyed(QVariant)), compositor.rootObject(), SLOT(windowDestroyed(QVariant))); + QObject::connect(&compositor, SIGNAL(windowResized(QVariant)), compositor.rootObject(), SLOT(windowResized(QVariant))); return app.exec(); diff --git a/examples/qml-compositor/qml/QmlCompositor/main.qml b/examples/qml-compositor/qml/QmlCompositor/main.qml index 8024a6e..b65d712 100644 --- a/examples/qml-compositor/qml/QmlCompositor/main.qml +++ b/examples/qml-compositor/qml/QmlCompositor/main.qml @@ -75,6 +75,14 @@ Item { windowContainer.chrome = windowChrome; } + function windowResized(window) { + var windowContainer = window.parent; + windowContainer.width = window.width; + windowContainer.height = window.height; + + CompositorLogic.relayout(); + } + function windowDestroyed(window) { var windowContainer = window.parent; windowContainer.runDestroyAnimation(); diff --git a/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp b/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp index 90985f1..66927a3 100644 --- a/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp +++ b/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp @@ -167,8 +167,6 @@ void WaylandSurfaceItem::surfaceMapped(const QRect &rect) { setWidth(rect.width()); setHeight(rect.height()); - - update(); } QSGNode *WaylandSurfaceItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)