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();
|
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_matrix"))->values = std::vector<double>(matrix.begin(), matrix.end());
|
||||||
(project_config.option<ConfigOptionFloats>("wiping_volumes_extruders"))->values = std::vector<double>(extruders.begin(), extruders.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));
|
wxPostEvent(parent, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, parent));
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -26,12 +26,14 @@ void ProjectDirtyStateManager::update_from_presets()
|
||||||
{
|
{
|
||||||
m_presets_dirty = false;
|
m_presets_dirty = false;
|
||||||
// check switching of the presets only for exist/loaded project, but not for new
|
// check switching of the presets only for exist/loaded project, but not for new
|
||||||
if (!wxGetApp().plater()->get_project_filename().IsEmpty()) {
|
GUI_App &app = wxGetApp();
|
||||||
for (const auto& [type, name] : wxGetApp().get_selected_presets())
|
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 |= !m_initial_presets[type].empty() && m_initial_presets[type] != name;
|
||||||
}
|
}
|
||||||
m_presets_dirty |= wxGetApp().has_unsaved_preset_changes();
|
m_presets_dirty |= app.has_unsaved_preset_changes();
|
||||||
wxGetApp().mainframe->update_title();
|
m_project_config_dirty = m_initial_project_config != app.preset_bundle->project_config;
|
||||||
|
app.mainframe->update_title();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectDirtyStateManager::reset_after_save()
|
void ProjectDirtyStateManager::reset_after_save()
|
||||||
|
@ -39,14 +41,17 @@ void ProjectDirtyStateManager::reset_after_save()
|
||||||
this->reset_initial_presets();
|
this->reset_initial_presets();
|
||||||
m_plater_dirty = false;
|
m_plater_dirty = false;
|
||||||
m_presets_dirty = false;
|
m_presets_dirty = false;
|
||||||
|
m_project_config_dirty = false;
|
||||||
wxGetApp().mainframe->update_title();
|
wxGetApp().mainframe->update_title();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectDirtyStateManager::reset_initial_presets()
|
void ProjectDirtyStateManager::reset_initial_presets()
|
||||||
{
|
{
|
||||||
m_initial_presets.fill(std::string{});
|
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_presets[type] = name;
|
||||||
|
m_initial_project_config = app.preset_bundle->project_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW
|
#if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW
|
||||||
|
|
|
@ -14,7 +14,7 @@ public:
|
||||||
void reset_after_save();
|
void reset_after_save();
|
||||||
void reset_initial_presets();
|
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
|
#if ENABLE_PROJECT_DIRTY_STATE_DEBUG_WINDOW
|
||||||
void render_debug_window() const;
|
void render_debug_window() const;
|
||||||
|
@ -25,8 +25,11 @@ private:
|
||||||
bool m_plater_dirty { false };
|
bool m_plater_dirty { false };
|
||||||
// Do the presets indicate the project is dirty?
|
// Do the presets indicate the project is dirty?
|
||||||
bool m_presets_dirty { false };
|
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.
|
// Keeps track of preset names selected at the time of last project save.
|
||||||
std::array<std::string, Preset::TYPE_COUNT> m_initial_presets;
|
std::array<std::string, Preset::TYPE_COUNT> m_initial_presets;
|
||||||
|
DynamicPrintConfig m_initial_project_config;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace GUI
|
} // namespace GUI
|
||||||
|
|
Loading…
Reference in a new issue