diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2020-09-28 17:53:48 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2020-09-29 14:00:25 +0000 |
commit | 1f43e06847f0339bfcb5a5d3d7c6f59e96477a4b (patch) | |
tree | a781547d3cabb66c9c998bb7e9bef20410ac3916 /src/plugins/qmldesigner/components/componentcore | |
parent | 8adb284783eeea2dbecf407a21a66882b77a3ba8 (diff) |
QmlDesigner: Respect cancel on crumblebar save confirmation dialog
Change-Id: I682494100ff90c45e3a4bb1137701d603c548478
Fixes: QDS-2704
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/components/componentcore')
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/crumblebar.cpp | 18 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/crumblebar.h | 2 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp index 743038f694..33f44af9dc 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp @@ -133,14 +133,13 @@ Utils::CrumblePath *CrumbleBar::crumblePath() return m_crumblePath; } -void CrumbleBar::showSaveDialog() +bool CrumbleBar::showSaveDialog() { + bool canceled = false; bool alwaysSave = DesignerSettings::getValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR).toBool(); if (alwaysSave) { Core::DocumentManager::saveModifiedDocumentSilently(currentDesignDocument()->editor()->document()); } else { - bool canceled; - Core::DocumentManager::saveModifiedDocument(currentDesignDocument()->editor()->document(), tr("Save the changes to preview them correctly."), &canceled, @@ -149,13 +148,20 @@ void CrumbleBar::showSaveDialog() DesignerSettings::setValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR, alwaysSave); } + return !canceled; } void CrumbleBar::onCrumblePathElementClicked(const QVariant &data) { CrumbleBarInfo clickedCrumbleBarInfo = data.value<CrumbleBarInfo>(); - if (clickedCrumbleBarInfo == crumblePath()->dataForLastIndex().value<CrumbleBarInfo>()) + if (clickedCrumbleBarInfo == crumblePath()->dataForLastIndex().value<CrumbleBarInfo>()) + return; + + bool inlineComp = !clickedCrumbleBarInfo.modelNode.isValid() + && clickedCrumbleBarInfo.fileName == currentDesignDocument()->fileName(); + + if (!inlineComp && !showSaveDialog()) return; while (clickedCrumbleBarInfo != crumblePath()->dataForLastIndex().value<CrumbleBarInfo>()) @@ -165,13 +171,11 @@ void CrumbleBar::onCrumblePathElementClicked(const QVariant &data) crumblePath()->popElement(); m_isInternalCalled = true; - if (!clickedCrumbleBarInfo.modelNode.isValid() - && clickedCrumbleBarInfo.fileName == currentDesignDocument()->fileName()) { + if (inlineComp) { nextFileIsCalledInternally(); currentDesignDocument()->changeToDocumentModel(); QmlDesignerPlugin::instance()->viewManager().setComponentViewToMaster(); } else { - showSaveDialog(); crumblePath()->popElement(); nextFileIsCalledInternally(); Core::EditorManager::openEditor(clickedCrumbleBarInfo.fileName.toString(), diff --git a/src/plugins/qmldesigner/components/componentcore/crumblebar.h b/src/plugins/qmldesigner/components/componentcore/crumblebar.h index cd19e1faa2..473c5e937b 100644 --- a/src/plugins/qmldesigner/components/componentcore/crumblebar.h +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.h @@ -49,7 +49,7 @@ public: private: void onCrumblePathElementClicked(const QVariant &data); void updateVisibility(); - void showSaveDialog(); + bool showSaveDialog(); private: bool m_isInternalCalled = false; |