mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Fix of Changing purge volumes doesn't set project as unsaved #7265
This commit is contained in:
		
							parent
							
								
									d43ddce078
								
							
						
					
					
						commit
						f31a2db495
					
				
					 3 changed files with 15 additions and 6 deletions
				
			
		|  | @ -457,6 +457,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) : | |||
|                 std::vector<float> extruders = dlg.get_extruders(); | ||||
|                 (project_config.option<ConfigOptionFloats>("wiping_volumes_matrix"))->values = std::vector<double>(matrix.begin(), matrix.end()); | ||||
|                 (project_config.option<ConfigOptionFloats>("wiping_volumes_extruders"))->values = std::vector<double>(extruders.begin(), extruders.end()); | ||||
|                 wxGetApp().plater()->update_project_dirty_from_presets(); | ||||
|                 wxPostEvent(parent, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, parent)); | ||||
|             } | ||||
|         })); | ||||
|  |  | |||
|  | @ -26,12 +26,14 @@ void ProjectDirtyStateManager::update_from_presets() | |||
| { | ||||
|     m_presets_dirty = false; | ||||
|     // check switching of the presets only for exist/loaded project, but not for new
 | ||||
|     if (!wxGetApp().plater()->get_project_filename().IsEmpty()) { | ||||
|         for (const auto& [type, name] : wxGetApp().get_selected_presets()) | ||||
|     GUI_App &app = wxGetApp(); | ||||
|     if (!app.plater()->get_project_filename().IsEmpty()) { | ||||
|         for (const auto& [type, name] : app.get_selected_presets()) | ||||
|             m_presets_dirty |= !m_initial_presets[type].empty() && m_initial_presets[type] != name; | ||||
|     } | ||||
|     m_presets_dirty |= wxGetApp().has_unsaved_preset_changes(); | ||||
|     wxGetApp().mainframe->update_title(); | ||||
|     m_presets_dirty |= app.has_unsaved_preset_changes(); | ||||
|     m_project_config_dirty = m_initial_project_config != app.preset_bundle->project_config; | ||||
|     app.mainframe->update_title(); | ||||
| } | ||||
| 
 | ||||
| void ProjectDirtyStateManager::reset_after_save() | ||||
|  | @ -39,14 +41,17 @@ void ProjectDirtyStateManager::reset_after_save() | |||
|     this->reset_initial_presets(); | ||||
|     m_plater_dirty  = false; | ||||
|     m_presets_dirty = false; | ||||
|     m_project_config_dirty = false; | ||||
|     wxGetApp().mainframe->update_title(); | ||||
| } | ||||
| 
 | ||||
| void ProjectDirtyStateManager::reset_initial_presets() | ||||
| { | ||||
|     m_initial_presets.fill(std::string{}); | ||||
|     for (const auto& [type, name] : wxGetApp().get_selected_presets()) | ||||
|     GUI_App &app = wxGetApp(); | ||||
|     for (const auto& [type, name] : app.get_selected_presets()) | ||||
|         m_initial_presets[type] = name; | ||||
|     m_initial_project_config = app.preset_bundle->project_config; | ||||
| } | ||||
| 
 | ||||
| #if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ public: | |||
|     void reset_after_save(); | ||||
|     void reset_initial_presets(); | ||||
| 
 | ||||
|     bool is_dirty() const { return m_plater_dirty || m_presets_dirty; } | ||||
|     bool is_dirty() const { return m_plater_dirty || m_project_config_dirty || m_presets_dirty; } | ||||
| 
 | ||||
| #if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW | ||||
|     void render_debug_window() const; | ||||
|  | @ -25,8 +25,11 @@ private: | |||
|     bool                                        m_plater_dirty { false }; | ||||
|     // Do the presets indicate the project is dirty?
 | ||||
|     bool                                        m_presets_dirty { false }; | ||||
|     // Is the project config dirty?
 | ||||
|     bool                                        m_project_config_dirty { false }; | ||||
|     // Keeps track of preset names selected at the time of last project save.
 | ||||
|     std::array<std::string, Preset::TYPE_COUNT> m_initial_presets; | ||||
|     DynamicPrintConfig                          m_initial_project_config; | ||||
| }; | ||||
| 
 | ||||
| } // namespace GUI
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Bubnik
						Vojtech Bubnik