From 6c986657b416b151a4f5a0ea2ff73416b6ab9eb6 Mon Sep 17 00:00:00 2001 From: carlitosan <82187351+carlitosan@users.noreply.github.com> Date: Mon, 3 Jan 2022 13:18:18 -0800 Subject: [PATCH] Fix for file-save-as-new and open asset (#6490) Signed-off-by: carlitosan <82187351+carlitosan@users.noreply.github.com> --- .../EditorScriptCanvasComponent.cpp | 2 +- .../Code/Editor/View/Widgets/GraphTabBar.cpp | 2 +- .../Code/Editor/View/Windows/MainWindow.cpp | 37 ++++++++++++------- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp index 0a0dbfc160..750097b428 100644 --- a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp @@ -242,7 +242,7 @@ namespace ScriptCanvasEditor SetName(m_sourceHandle.Path().Filename().Native()); } - void EditorScriptCanvasComponent::OpenEditor(const AZ::Data::AssetId&, const AZ::Data::AssetType&) + void EditorScriptCanvasComponent::OpenEditor([[maybe_unused]] const AZ::Data::AssetId& assetId, const AZ::Data::AssetType&) { AzToolsFramework::OpenViewPane(LyViewPane::ScriptCanvas); diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp index c5f808d5f4..0213765737 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp @@ -430,7 +430,7 @@ namespace ScriptCanvasEditor void GraphTabBar::UpdateFileState(const ScriptCanvasEditor::SourceHandle& assetId, Tracker::ScriptCanvasFileState fileState) { auto tabData = GetTabData(assetId); - if (tabData && tabData->m_fileState != fileState) + if (tabData && tabData->m_fileState != Tracker::ScriptCanvasFileState::NEW && tabData->m_fileState != fileState) { int index = FindTab(assetId); tabData->m_fileState = fileState; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp index f0bee2171a..6222d902da 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp @@ -1136,23 +1136,20 @@ namespace ScriptCanvasEditor return AZ::Success(outTabIndex); } - auto loadedGraph = LoadFromFile(fileAssetId.Path().c_str()); - if (!loadedGraph.IsSuccess()) + auto loadedGraphOutcome = LoadFromFile(fileAssetId.Path().c_str()); + if (!loadedGraphOutcome.IsSuccess()) { return AZ::Failure(AZStd::string("Failed to load graph at %s", fileAssetId.Path().c_str())); } - outTabIndex = CreateAssetTab(loadedGraph.GetValue(), fileState); - - if (!m_isRestoringWorkspace) - { - SetActiveAsset(loadedGraph.GetValue()); - } + auto loadedGraph = loadedGraphOutcome.TakeValue(); + CompleteDescriptionInPlace(loadedGraph); + outTabIndex = CreateAssetTab(loadedGraph, fileState); if (outTabIndex >= 0) { - AddRecentFile(loadedGraph.GetValue().Path().c_str()); - OpenScriptCanvasAssetImplementation(loadedGraph.GetValue(), fileState); + AddRecentFile(loadedGraph.Path().c_str()); + OpenScriptCanvasAssetImplementation(loadedGraph, fileState); return AZ::Success(outTabIndex); } else @@ -1169,6 +1166,11 @@ namespace ScriptCanvasEditor return AZ::Failure(AZStd::string("Unable to open asset with invalid asset id")); } + if (!m_isRestoringWorkspace) + { + SetActiveAsset(scriptCanvasAsset); + } + if (!scriptCanvasAsset.IsDescriptionValid()) { if (!m_isRestoringWorkspace) @@ -1345,9 +1347,11 @@ namespace ScriptCanvasEditor AZ::Outcome outcome = LoadFromFile(fullPath); if (!outcome.IsSuccess()) { - QMessageBox::warning(this, "Invalid Source File", QString("'%1' failed to load properly.").arg(fullPath), QMessageBox::Ok); + QMessageBox::warning(this, "Invalid Source File" + , QString("'%1' failed to load properly.\nFailure: %2").arg(fullPath).arg(outcome.GetError().c_str()), QMessageBox::Ok); m_errorFilePath = fullPath; - AZ_Warning("ScriptCanvas", false, "Unable to open file as a ScriptCanvas graph: %s", fullPath); + AZ_Warning("ScriptCanvas", false, "Unable to open file as a ScriptCanvas graph: %s. Failure: %s" + , fullPath, outcome.GetError().c_str()); return; } @@ -1596,7 +1600,14 @@ namespace ScriptCanvasEditor bool MainWindow::OnFileSave() { - return SaveAssetImpl(m_activeGraph, Save::InPlace); + if (auto metaData = m_tabBar->GetTabData(m_activeGraph); metaData && metaData->m_fileState == Tracker::ScriptCanvasFileState::NEW) + { + return SaveAssetImpl(m_activeGraph, Save::As); + } + else + { + return SaveAssetImpl(m_activeGraph, Save::InPlace); + } } bool MainWindow::OnFileSaveAs()