From f32590d241c12b01c1ff0ed0c2f2c248b0ca60b1 Mon Sep 17 00:00:00 2001
From: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
Date: Fri, 11 Jun 2021 16:43:53 -0700
Subject: [PATCH] LYN-4042 | No UI Indication that Level is Modified (#1277)
* Restore the code that display the dirty marker on the Level container. Ensure the dirty marker is cleared on level save.
* Moving call one level up to allow usage of the SaveTemplateToString function without clearing the dirty flag.
---
.../PrefabEditorEntityOwnershipService.cpp | 17 ++++++++++++-----
.../UI/Prefab/LevelRootUiHandler.cpp | 13 +++++++++++--
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
index fa7d5f6e9b..6e96511507 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp
@@ -252,13 +252,20 @@ namespace AzToolsFramework
}
AZStd::string out;
- if (m_loaderInterface->SaveTemplateToString(m_rootInstance->GetTemplateId(), out))
+
+ if (!m_loaderInterface->SaveTemplateToString(m_rootInstance->GetTemplateId(), out))
{
- const size_t bytesToWrite = out.size();
- const size_t bytesWritten = stream.Write(bytesToWrite, out.data());
- return bytesWritten == bytesToWrite;
+ return false;
}
- return false;
+
+ const size_t bytesToWrite = out.size();
+ const size_t bytesWritten = stream.Write(bytesToWrite, out.data());
+ if(bytesWritten != bytesToWrite)
+ {
+ return false;
+ }
+ m_prefabSystemComponent->SetTemplateDirtyFlag(templateId, false);
+ return true;
}
void PrefabEditorEntityOwnershipService::CreateNewLevelPrefab(AZStd::string_view filename, const AZStd::string& templateFilename)
diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp
index 7915403c0a..d6b7aebddc 100644
--- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp
+++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp
@@ -58,8 +58,17 @@ namespace AzToolsFramework
if (!path.empty())
{
- infoString =
- QObject::tr("(%1)").arg(path.Filename().Native().data());
+ QString saveFlag = "";
+ auto dirtyOutcome = m_prefabPublicInterface->HasUnsavedChanges(path);
+
+ if (dirtyOutcome.IsSuccess() && dirtyOutcome.GetValue() == true)
+ {
+ saveFlag = "*";
+ }
+
+ infoString = QObject::tr("(%1%2)")
+ .arg(path.Filename().Native().data())
+ .arg(saveFlag);
}
return infoString;