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>
This commit is contained in:
Miikka Heikkinen
2020-09-28 17:53:48 +03:00
parent 8adb284783
commit 1f43e06847
2 changed files with 12 additions and 8 deletions

View File

@@ -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(),

View File

@@ -49,7 +49,7 @@ public:
private:
void onCrumblePathElementClicked(const QVariant &data);
void updateVisibility();
void showSaveDialog();
bool showSaveDialog();
private:
bool m_isInternalCalled = false;