From 1d4f7a8870db9535f5394b2e53e56bcaf8b02347 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Tue, 1 Jun 2021 08:32:58 +0200 Subject: [PATCH] Changed logic to avoid saving a project while a gizmo is in editing mode --- src/slic3r/GUI/MainFrame.cpp | 13 +++++++++++-- src/slic3r/GUI/Plater.cpp | 3 +-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 989056bfc7..f464087388 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -207,6 +207,12 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S // declare events Bind(wxEVT_CLOSE_WINDOW, [this](wxCloseEvent& event) { #if ENABLE_PROJECT_DIRTY_STATE + if (event.CanVeto() && m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(true)) { + // prevents to open the save dirty project dialog + event.Veto(); + return; + } + if (m_plater != nullptr) m_plater->save_project_if_dirty(); @@ -691,12 +697,15 @@ bool MainFrame::can_start_new_project() const #if ENABLE_PROJECT_DIRTY_STATE bool MainFrame::can_save() const { - return (m_plater != nullptr) && !m_plater->model().objects.empty() && !m_plater->get_project_filename().empty() && m_plater->is_project_dirty(); + return (m_plater != nullptr) && !m_plater->model().objects.empty() && + !m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(false) && + !m_plater->get_project_filename().empty() && m_plater->is_project_dirty(); } bool MainFrame::can_save_as() const { - return (m_plater != nullptr) && !m_plater->model().objects.empty(); + return (m_plater != nullptr) && !m_plater->model().objects.empty() && + !m_plater->canvas3D()->get_gizmos_manager().is_in_editing_mode(false); } void MainFrame::save_project() diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 63aca0df28..d4718e32f5 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -5371,8 +5371,7 @@ bool Plater::export_3mf(const boost::filesystem::path& output_path) void Plater::export_3mf(const boost::filesystem::path& output_path) #endif // ENABLE_PROJECT_DIRTY_STATE { - if (p->model.objects.empty() - || canvas3D()->get_gizmos_manager().is_in_editing_mode(true)) + if (p->model.objects.empty()) #if ENABLE_PROJECT_DIRTY_STATE return false; #else