Get rid of QML errors when destroying a window.
authorSamuel Rødal <samuel.rodal@nokia.com>
Fri, 18 Mar 2011 09:50:49 +0000 (10:50 +0100)
committerSamuel Rødal <samuel.rodal@nokia.com>
Fri, 18 Mar 2011 09:50:49 +0000 (10:50 +0100)
examples/qml-compositor/main.cpp
examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml
examples/qml-compositor/qml/QmlCompositor/main.qml

index 7a1715e..d6bb3b7 100644 (file)
@@ -292,7 +292,7 @@ private slots:
     void surfaceDestroyed(QObject *object) {
         WindowItem *item = m_windowMap.take(object);
         emit windowDestroyed(QVariant::fromValue(static_cast<QSGItem *>(item)));
-        delete item;
+        item->deleteLater();
         setInputFocus(0);
     }
 
index 050be0f..0bbf45c 100644 (file)
@@ -47,6 +47,7 @@ Item {
     y: 0;
     opacity: 0
 
+    property variant chrome: null;
     property variant child: null;
     property bool animationsEnabled: false;
     property int index;
index faa9ef7..0681f73 100644 (file)
@@ -60,6 +60,7 @@ Item {
         var windowContainer = windowContainerComponent.createObject(root);
 
         window.parent = windowContainer;
+
         windowContainer.width = window.width;
         windowContainer.height = window.height;
         windowContainer.child = window;
@@ -71,11 +72,13 @@ Item {
 
         windowContainer.opacity = 1
         windowContainer.animationsEnabled = true;
+        windowContainer.chrome = windowChrome;
     }
 
     function windowDestroyed(window) {
         CompositorLogic.removeWindow(window.parent);
-
-        window.parent.destroy();
+        var windowContainer = window.parent;
+        windowContainer.chrome.destroy();
+        windowContainer.destroy();
     }
 }