From 82214670602985982769594ad795aff424bce8bd Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 31 Jan 2018 15:20:29 +0100 Subject: Introduced setup() signal for views. onCompleted is apparently not guaranteed to be called after all properties have been set (reply broke). The onSetup handler is now the standard handler for views to setup their initial state. --- framework/qml/View.qml | 6 ++++++ views/composer/qml/View.qml | 5 ++--- views/composer/tests/tst_composerview.qml | 5 ++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/framework/qml/View.qml b/framework/qml/View.qml index 0065c206..e5a4c274 100644 --- a/framework/qml/View.qml +++ b/framework/qml/View.qml @@ -32,6 +32,12 @@ FocusScope { property int count: contentItems.length default property alias contentItems: content.data + //This signal will be emitted once all initial properties have been set and the view is ready to load + signal setup() + Controls2.StackView.onActivated: { + root.setup() + } + onCurrentIndexChanged: showRelevantSplits() Component.onCompleted: showRelevantSplits() diff --git a/views/composer/qml/View.qml b/views/composer/qml/View.qml index f81901c4..4086f715 100644 --- a/views/composer/qml/View.qml +++ b/views/composer/qml/View.qml @@ -49,9 +49,8 @@ Kube.View { } ] - Component.onCompleted: loadMessage(root.message, root.loadAsDraft) - - Controls2.StackView.onActivated: { + onSetup: { + loadMessage(root.message, root.loadAsDraft) Kube.Fabric.postMessage(Kube.Messages.synchronize, {"type": "mail", "specialPurpose": "drafts"}) //For autocompletion Kube.Fabric.postMessage(Kube.Messages.synchronize, {"type": "contacts"}) diff --git a/views/composer/tests/tst_composerview.qml b/views/composer/tests/tst_composerview.qml index b26bf762..92328077 100644 --- a/views/composer/tests/tst_composerview.qml +++ b/views/composer/tests/tst_composerview.qml @@ -129,12 +129,11 @@ TestCase { }] } TestStore.setup(initialState) - var composer = createTemporaryObject(composerComponent, testCase, {}) var createdMail = TestStore.load("mail", {resource: "resource1"}) + var composer = createTemporaryObject(composerComponent, testCase, {message: createdMail, loadAsDraft: false}) + composer.setup() - var loadAsDraft = false - composer.loadMessage(createdMail, loadAsDraft) var subject = findChild(composer, "subject"); verify(subject) tryVerify(function(){ return subject.text == "RE: subject" }) -- cgit v1.2.3