forked from qt-creator/qt-creator
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:
@@ -133,14 +133,13 @@ Utils::CrumblePath *CrumbleBar::crumblePath()
|
|||||||
return m_crumblePath;
|
return m_crumblePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrumbleBar::showSaveDialog()
|
bool CrumbleBar::showSaveDialog()
|
||||||
{
|
{
|
||||||
|
bool canceled = false;
|
||||||
bool alwaysSave = DesignerSettings::getValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR).toBool();
|
bool alwaysSave = DesignerSettings::getValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR).toBool();
|
||||||
if (alwaysSave) {
|
if (alwaysSave) {
|
||||||
Core::DocumentManager::saveModifiedDocumentSilently(currentDesignDocument()->editor()->document());
|
Core::DocumentManager::saveModifiedDocumentSilently(currentDesignDocument()->editor()->document());
|
||||||
} else {
|
} else {
|
||||||
bool canceled;
|
|
||||||
|
|
||||||
Core::DocumentManager::saveModifiedDocument(currentDesignDocument()->editor()->document(),
|
Core::DocumentManager::saveModifiedDocument(currentDesignDocument()->editor()->document(),
|
||||||
tr("Save the changes to preview them correctly."),
|
tr("Save the changes to preview them correctly."),
|
||||||
&canceled,
|
&canceled,
|
||||||
@@ -149,6 +148,7 @@ void CrumbleBar::showSaveDialog()
|
|||||||
|
|
||||||
DesignerSettings::setValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR, alwaysSave);
|
DesignerSettings::setValue(DesignerSettingsKey::ALWAYS_SAVE_IN_CRUMBLEBAR, alwaysSave);
|
||||||
}
|
}
|
||||||
|
return !canceled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrumbleBar::onCrumblePathElementClicked(const QVariant &data)
|
void CrumbleBar::onCrumblePathElementClicked(const QVariant &data)
|
||||||
@@ -158,6 +158,12 @@ void CrumbleBar::onCrumblePathElementClicked(const QVariant &data)
|
|||||||
if (clickedCrumbleBarInfo == crumblePath()->dataForLastIndex().value<CrumbleBarInfo>())
|
if (clickedCrumbleBarInfo == crumblePath()->dataForLastIndex().value<CrumbleBarInfo>())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
bool inlineComp = !clickedCrumbleBarInfo.modelNode.isValid()
|
||||||
|
&& clickedCrumbleBarInfo.fileName == currentDesignDocument()->fileName();
|
||||||
|
|
||||||
|
if (!inlineComp && !showSaveDialog())
|
||||||
|
return;
|
||||||
|
|
||||||
while (clickedCrumbleBarInfo != crumblePath()->dataForLastIndex().value<CrumbleBarInfo>())
|
while (clickedCrumbleBarInfo != crumblePath()->dataForLastIndex().value<CrumbleBarInfo>())
|
||||||
crumblePath()->popElement();
|
crumblePath()->popElement();
|
||||||
|
|
||||||
@@ -165,13 +171,11 @@ void CrumbleBar::onCrumblePathElementClicked(const QVariant &data)
|
|||||||
crumblePath()->popElement();
|
crumblePath()->popElement();
|
||||||
|
|
||||||
m_isInternalCalled = true;
|
m_isInternalCalled = true;
|
||||||
if (!clickedCrumbleBarInfo.modelNode.isValid()
|
if (inlineComp) {
|
||||||
&& clickedCrumbleBarInfo.fileName == currentDesignDocument()->fileName()) {
|
|
||||||
nextFileIsCalledInternally();
|
nextFileIsCalledInternally();
|
||||||
currentDesignDocument()->changeToDocumentModel();
|
currentDesignDocument()->changeToDocumentModel();
|
||||||
QmlDesignerPlugin::instance()->viewManager().setComponentViewToMaster();
|
QmlDesignerPlugin::instance()->viewManager().setComponentViewToMaster();
|
||||||
} else {
|
} else {
|
||||||
showSaveDialog();
|
|
||||||
crumblePath()->popElement();
|
crumblePath()->popElement();
|
||||||
nextFileIsCalledInternally();
|
nextFileIsCalledInternally();
|
||||||
Core::EditorManager::openEditor(clickedCrumbleBarInfo.fileName.toString(),
|
Core::EditorManager::openEditor(clickedCrumbleBarInfo.fileName.toString(),
|
||||||
|
@@ -49,7 +49,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
void onCrumblePathElementClicked(const QVariant &data);
|
void onCrumblePathElementClicked(const QVariant &data);
|
||||||
void updateVisibility();
|
void updateVisibility();
|
||||||
void showSaveDialog();
|
bool showSaveDialog();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_isInternalCalled = false;
|
bool m_isInternalCalled = false;
|
||||||
|
Reference in New Issue
Block a user