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;
|
||||
}
|
||||
|
||||
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(),
|
||||
|
@@ -49,7 +49,7 @@ public:
|
||||
private:
|
||||
void onCrumblePathElementClicked(const QVariant &data);
|
||||
void updateVisibility();
|
||||
void showSaveDialog();
|
||||
bool showSaveDialog();
|
||||
|
||||
private:
|
||||
bool m_isInternalCalled = false;
|
||||
|
Reference in New Issue
Block a user