aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/componentcore
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2020-09-28 17:53:48 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2020-09-29 14:00:25 +0000
commit1f43e06847f0339bfcb5a5d3d7c6f59e96477a4b (patch)
treea781547d3cabb66c9c998bb7e9bef20410ac3916 /src/plugins/qmldesigner/components/componentcore
parent8adb284783eeea2dbecf407a21a66882b77a3ba8 (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.cpp18
-rw-r--r--src/plugins/qmldesigner/components/componentcore/crumblebar.h2
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;