From 6a96bc17c665bb747ea6dc0ddd4a52af554a824c Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Mon, 8 Aug 2022 16:30:46 +0800 Subject: [PATCH] FIX: STUDIO-640 saved file will also prompt to save when open a 3mf file as project Change-Id: Iccf3421d5e55d6a7063bf16345e48674711f37e9 --- src/slic3r/GUI/Plater.cpp | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index e65e54d54..60fe66940 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -7209,7 +7209,7 @@ bool Plater::load_files(const wxArrayString& filenames) } } - Plater::TakeSnapshot snapshot(this, snapshot_label); + //Plater::TakeSnapshot snapshot(this, snapshot_label); //load_files(normal_paths, LoadStrategy::LoadModel); // BBS: check file types @@ -7242,10 +7242,11 @@ bool Plater::load_files(const wxArrayString& filenames) open_3mf_file(normal_paths[0]); break; - case LoadFilesType::SingleOther: + case LoadFilesType::SingleOther: { + Plater::TakeSnapshot snapshot(this, snapshot_label); if (load_files(normal_paths, LoadStrategy::LoadModel, false).empty()) { res = false; } break; - + } case LoadFilesType::Multiple3MF: first_file = std::vector{normal_paths[0]}; for (auto i = 0; i < normal_paths.size(); i++) { @@ -7256,9 +7257,11 @@ bool Plater::load_files(const wxArrayString& filenames) if (load_files(other_file, LoadStrategy::LoadModel).empty()) { res = false; } break; - case LoadFilesType::MultipleOther: - if (load_files(normal_paths, LoadStrategy::LoadModel, true).empty()) { res = false; } + case LoadFilesType::MultipleOther: { + Plater::TakeSnapshot snapshot(this, snapshot_label); + if (load_files(normal_paths, LoadStrategy::LoadModel, true).empty()) { res = false; } break; + } case LoadFilesType::Multiple3MFOther: for (const auto &path : normal_paths) { @@ -7311,15 +7314,8 @@ bool Plater::open_3mf_file(const fs::path &file_path) if (load_type == LoadType::Unknown) return false; - struct AllowSnapshots { - AllowSnapshots(Plater *plater) : m_plater(plater) { m_plater->allow_snapshots(); } - ~AllowSnapshots() { m_plater->suppress_snapshots(); } - Plater *m_plater; - }; switch (load_type) { case LoadType::OpenProject: { - // remove snapshot taken by load_files and add_file - AllowSnapshots as(this); if (wxGetApp().can_load_project()) load_project(from_path(file_path)); break; @@ -7370,8 +7366,6 @@ void Plater::add_file() snapshot_label += encode_path(paths[i].filename().string().c_str()); } - Plater::TakeSnapshot snapshot(this, snapshot_label); - // BBS: check file types auto loadfiles_type = LoadFilesType::NoFile; auto amf_files_count = get_3mf_file_count(paths); @@ -7392,10 +7386,11 @@ void Plater::add_file() open_3mf_file(paths[0]); break; - case LoadFilesType::SingleOther: + case LoadFilesType::SingleOther: { + Plater::TakeSnapshot snapshot(this, snapshot_label); if (!load_files(paths, LoadStrategy::LoadModel, false).empty()) { wxGetApp().mainframe->update_title(); } break; - + } case LoadFilesType::Multiple3MF: first_file = std::vector{paths[0]}; for (auto i = 0; i < paths.size(); i++) { @@ -7406,12 +7401,13 @@ void Plater::add_file() if (!load_files(other_file, LoadStrategy::LoadModel).empty()) { wxGetApp().mainframe->update_title(); } break; - case LoadFilesType::MultipleOther: + case LoadFilesType::MultipleOther: { + Plater::TakeSnapshot snapshot(this, snapshot_label); if (!load_files(paths, LoadStrategy::LoadModel, true).empty()) { wxGetApp().mainframe->update_title(); } break; - + } case LoadFilesType::Multiple3MFOther: for (const auto &path : paths) { if (wxString(encode_path(path.filename().string().c_str())).EndsWith("3mf")) {