From 40c03b7c8828a3c8e6fec1f94354f269b2ee79f9 Mon Sep 17 00:00:00 2001 From: Skycoder42 Date: Mon, 18 Jun 2018 11:13:31 +0200 Subject: [PATCH] improved closed handling Close now works for popups/dialogs with no view below --- src/imports/mvvmquick/DialogPresenter.qml | 3 +++ src/imports/mvvmquick/PopupPresenter.qml | 3 +++ src/imports/mvvmquick/PresentingStackView.qml | 10 +++------- src/imports/mvvmquick/QtMvvmApp.qml | 3 +++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/imports/mvvmquick/DialogPresenter.qml b/src/imports/mvvmquick/DialogPresenter.qml index 7bf4fbc..bd1db1f 100644 --- a/src/imports/mvvmquick/DialogPresenter.qml +++ b/src/imports/mvvmquick/DialogPresenter.qml @@ -56,6 +56,9 @@ QtObject { */ property Item rootItem: null + //TODO document + readonly property bool empty: _popups.length == 0 + /*! @brief The primary presenting method to present a dialog * * @param type:MessageConfig config The message configuration to create a dialog of diff --git a/src/imports/mvvmquick/PopupPresenter.qml b/src/imports/mvvmquick/PopupPresenter.qml index 0f3715c..f631f81 100644 --- a/src/imports/mvvmquick/PopupPresenter.qml +++ b/src/imports/mvvmquick/PopupPresenter.qml @@ -55,6 +55,9 @@ QtObject { */ property Item rootItem: null + //TODO document + readonly property bool empty: _popups.length == 0 + //! Internal property property var _popups: [] diff --git a/src/imports/mvvmquick/PresentingStackView.qml b/src/imports/mvvmquick/PresentingStackView.qml index 94ac8f1..aa2a033 100644 --- a/src/imports/mvvmquick/PresentingStackView.qml +++ b/src/imports/mvvmquick/PresentingStackView.qml @@ -113,14 +113,10 @@ StackView { return true; } - if(_presenterStack.depth <= 1) + if(_presenterStack.safePop()) + return true; + else return false; - else { - if(_presenterStack.safePop()) - return true; - else - return false; - } } /*! @brief Pop and delete a view diff --git a/src/imports/mvvmquick/QtMvvmApp.qml b/src/imports/mvvmquick/QtMvvmApp.qml index 9e6e17e..0abe16b 100644 --- a/src/imports/mvvmquick/QtMvvmApp.qml +++ b/src/imports/mvvmquick/QtMvvmApp.qml @@ -172,6 +172,9 @@ ApplicationWindow { closed = _drawerLoader.item.closeAction(); if(!closed) closed = _rootStack.closeAction(); + //if everything was closed -> still accept it + if(closed && _rootDialogs.emtpy && _rootPopup.empty && _rootStack.empty) + closed = false; return closed; }