diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 6002e1d52..9c5754a42 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -229,7 +229,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S } // check unsaved changes only if project wasn't saved else if (plater()->is_project_dirty() && saved_project == wxID_NO && event.CanVeto() && - !wxGetApp().check_and_save_current_preset_changes(_L("PrusaSlicer is closing"), _L("Closing PrusaSlicer while some presets are modified."))) { + (plater()->is_presets_dirty() && !wxGetApp().check_and_save_current_preset_changes(_L("PrusaSlicer is closing"), _L("Closing PrusaSlicer while some presets are modified.")))) { event.Veto(); return; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index bd8cc4d46..7e563eb95 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1675,6 +1675,7 @@ struct Plater::priv ~priv(); bool is_project_dirty() const { return dirty_state.is_dirty(); } + bool is_presets_dirty() const { return dirty_state.is_presets_dirty(); } void update_project_dirty_from_presets() { dirty_state.update_from_presets(); } int save_project_if_dirty(const wxString& reason) { int res = wxID_NO; @@ -5016,6 +5017,7 @@ Plater::Plater(wxWindow *parent, MainFrame *main_frame) } bool Plater::is_project_dirty() const { return p->is_project_dirty(); } +bool Plater::is_presets_dirty() const { return p->is_presets_dirty(); } void Plater::update_project_dirty_from_presets() { p->update_project_dirty_from_presets(); } int Plater::save_project_if_dirty(const wxString& reason) { return p->save_project_if_dirty(reason); } void Plater::reset_project_dirty_after_save() { p->reset_project_dirty_after_save(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 4c9bfc763..ef3017072 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -140,6 +140,7 @@ public: ~Plater() = default; bool is_project_dirty() const; + bool is_presets_dirty() const; void update_project_dirty_from_presets(); int save_project_if_dirty(const wxString& reason); void reset_project_dirty_after_save(); diff --git a/src/slic3r/GUI/ProjectDirtyStateManager.hpp b/src/slic3r/GUI/ProjectDirtyStateManager.hpp index 29ba4eec0..6841c89c6 100644 --- a/src/slic3r/GUI/ProjectDirtyStateManager.hpp +++ b/src/slic3r/GUI/ProjectDirtyStateManager.hpp @@ -15,6 +15,7 @@ public: void reset_initial_presets(); bool is_dirty() const { return m_plater_dirty || m_project_config_dirty || m_presets_dirty; } + bool is_presets_dirty() const { return m_presets_dirty; } #if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW void render_debug_window() const;