diff --git a/Source/Fractorium/FractoriumEmberController.h b/Source/Fractorium/FractoriumEmberController.h
index d12cf16..3866526 100644
--- a/Source/Fractorium/FractoriumEmberController.h
+++ b/Source/Fractorium/FractoriumEmberController.h
@@ -95,7 +95,7 @@ public:
virtual void OpenAndPrepFiles(const QStringList& filenames, bool append) { }
virtual void SaveCurrentAsXml() { }
virtual void SaveEntireFileAsXml() { }
- virtual uint SaveCurrentToOpenedFile() { return 0; }
+ virtual uint SaveCurrentToOpenedFile(bool render = true) { return 0; }
virtual void Undo() { }//Edit.
virtual void Redo() { }
virtual void CopyXml() { }
@@ -339,7 +339,7 @@ public:
virtual void OpenAndPrepFiles(const QStringList& filenames, bool append) override;
virtual void SaveCurrentAsXml() override;
virtual void SaveEntireFileAsXml() override;
- virtual uint SaveCurrentToOpenedFile() override;
+ virtual uint SaveCurrentToOpenedFile(bool render = true) override;
virtual void Undo() override;
virtual void Redo() override;
virtual void CopyXml() override;
diff --git a/Source/Fractorium/FractoriumMenus.cpp b/Source/Fractorium/FractoriumMenus.cpp
index 5820813..dcfef8f 100644
--- a/Source/Fractorium/FractoriumMenus.cpp
+++ b/Source/Fractorium/FractoriumMenus.cpp
@@ -370,8 +370,9 @@ void Fractorium::OnActionSaveCurrentScreen(bool checked)
/// preview renderer.
/// This does not save to disk.
///
+/// Whether to re-render the preview thumbnail after saving to the open file. Default: true.
template
-uint FractoriumEmberController::SaveCurrentToOpenedFile()
+uint FractoriumEmberController::SaveCurrentToOpenedFile(bool render)
{
uint i = 0;
bool fileFound = false;
@@ -395,12 +396,12 @@ uint FractoriumEmberController::SaveCurrentToOpenedFile()
StopPreviewRender();
m_EmberFile.m_Embers.push_back(m_Ember);
m_EmberFile.MakeNamesUnique();
- UpdateLibraryTree();
+
+ if (render)
+ UpdateLibraryTree();
}
- else
- {
+ else if (render)
RenderPreviews(i, i + 1);
- }
}
return i;
@@ -832,7 +833,7 @@ void Fractorium::OnActionFinalRender(bool checked)
//First completely stop what the current rendering process is doing.
m_Controller->DeleteRenderer();//Delete the renderer, but not the controller.
m_Controller->StopPreviewRender();
- m_Controller->SaveCurrentToOpenedFile();//Save whatever was edited back to the current open file.
+ m_Controller->SaveCurrentToOpenedFile(false);//Save whatever was edited back to the current open file.
m_RenderStatusLabel->setText("Renderer stopped.");
m_FinalRenderDialog->show();
}
diff --git a/Source/Fractorium/FractoriumRender.cpp b/Source/Fractorium/FractoriumRender.cpp
index 6b55742..7026111 100644
--- a/Source/Fractorium/FractoriumRender.cpp
+++ b/Source/Fractorium/FractoriumRender.cpp
@@ -690,8 +690,8 @@ bool Fractorium::CreateControllerFromOptions()
if (m_Controller.get())
{
scale = m_Controller->LockedScale();
- current = m_Controller->SaveCurrentToOpenedFile();
- m_Controller->StopPreviewRender();//Must stop any previews first, else changing controllers will crash the program.
+ m_Controller->StopPreviewRender();//Must stop any previews first, else changing controllers will crash the program and SaveCurrentToOpenedFile() will return 0.
+ current = m_Controller->SaveCurrentToOpenedFile(false);
m_Controller->CopyTempPalette(tempPalette);//Convert float to double or save double verbatim;
//Replace below with this once LLVM fixes a crash in their compiler with default lambda parameters.//TODO
//m_Controller->CopyEmber(ed);