From 4d1c24abb79916f9d3c5e539051572c1d70d6f3c Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 10 Feb 2016 10:02:20 -0800 Subject: [PATCH] Fix OverlayWindow loading issues --- interface/resources/qml/QmlWindow.qml | 44 ++++++++++++++++++---- interface/resources/qml/windows/Window.qml | 4 +- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/interface/resources/qml/QmlWindow.qml b/interface/resources/qml/QmlWindow.qml index 63efd0bc2e..d0f6edf9d1 100644 --- a/interface/resources/qml/QmlWindow.qml +++ b/interface/resources/qml/QmlWindow.qml @@ -19,12 +19,40 @@ Windows.Window { property var channel; // Don't destroy on close... otherwise the JS/C++ will have a dangling pointer destroyOnCloseButton: false - property alias source: pageLoader.source - - Loader { - id: pageLoader - objectName: "Loader" - focus: true - property var dialog: root + property var source; + property var component; + property var dynamicContent; + onSourceChanged: { + if (dynamicContent) { + dynamicContent.destroy(); + dynamicContent = null; + } + component = Qt.createComponent(source); + console.log("Created component " + component + " from source " + source); } -} // dialog + + onComponentChanged: { + console.log("Component changed to " + component) + populate(); + } + + function populate() { + console.log("Populate called: dynamicContent " + dynamicContent + " component " + component); + if (!dynamicContent && component) { + if (component.status == Component.Error) { + console.log("Error loading component:", component.errorString()); + } else if (component.status == Component.Ready) { + console.log("Building dynamic content"); + dynamicContent = component.createObject(contentHolder); + } else { + console.log("Component not yet ready, connecting to status change"); + component.statusChanged.connect(populate); + } + } + } + + Item { + id: contentHolder + anchors.fill: parent + } +} diff --git a/interface/resources/qml/windows/Window.qml b/interface/resources/qml/windows/Window.qml index d7891da2ea..6088a7a0aa 100644 --- a/interface/resources/qml/windows/Window.qml +++ b/interface/resources/qml/windows/Window.qml @@ -17,8 +17,8 @@ Fadable { HifiConstants { id: hifi } // The Window size is the size of the content, while the frame // decorations can extend outside it. - implicitHeight: content.height - implicitWidth: content.width + implicitHeight: content ? content.height : 0 + implicitWidth: content ? content.width : 0 x: -1; y: -1 enabled: visible