diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 421ef618f..f4c72ccf9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -175,6 +175,10 @@ void GLGizmoFdmSupports::on_set_state() if (get_state() == On) { m_support_threshold_angle = -1; } + else if (get_state() == Off) { + ModelObject* mo = m_c->selection_info()->model_object(); + if (mo) Slic3r::save_object_mesh(*mo); + } } static std::string into_u8(const wxString& str) @@ -552,8 +556,6 @@ void GLGizmoFdmSupports::update_model_object() const ModelObjectPtrs& mos = wxGetApp().model().objects; wxGetApp().obj_list()->update_info_items(std::find(mos.begin(), mos.end(), mo) - mos.begin()); - // BBS: backup - Slic3r::save_object_mesh(*mo); m_parent.post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS)); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index be7a28e2f..881258c68 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -663,11 +663,7 @@ void GLGizmoMmuSegmentation::update_model_object() if (updated) { const ModelObjectPtrs &mos = wxGetApp().model().objects; wxGetApp().obj_list()->update_info_items(std::find(mos.begin(), mos.end(), mo) - mos.begin()); - // BBS: backup - Slic3r::save_object_mesh(*mo); m_parent.post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS)); - // BBS - m_parent.post_event(SimpleEvent(EVT_GLCANVAS_FORCE_UPDATE)); } } @@ -756,6 +752,16 @@ std::array GLGizmoMmuSegmentation::get_cursor_hover_color() const return m_extruders_colors[0]; } +void GLGizmoMmuSegmentation::on_set_state() +{ + GLGizmoPainterBase::on_set_state(); + + if (get_state() == Off) { + ModelObject* mo = m_c->selection_info()->model_object(); + if (mo) Slic3r::save_object_mesh(*mo); + } +} + wxString GLGizmoMmuSegmentation::handle_snapshot_action_name(bool shift_down, GLGizmoPainterBase::Button button_down) const { wxString action_name; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp index 8d6fc96d4..3d5254f63 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp @@ -87,6 +87,7 @@ public: protected: // BBS std::array get_cursor_hover_color() const override; + void on_set_state() override; EnforcerBlockerType get_left_button_state_type() const override { return EnforcerBlockerType(m_selected_extruder_idx + 1); } EnforcerBlockerType get_right_button_state_type() const override { return EnforcerBlockerType::NONE; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp index 19ad9c359..caef5b73e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp @@ -78,7 +78,7 @@ public: void request_update_render_data(bool paint_changed = false) { m_update_render_data = true; - m_paint_changed = paint_changed; + m_paint_changed |= paint_changed; }; // BBS diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 41b210b56..e7915a9c7 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -320,6 +320,17 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) ImGuiWrapper::pop_toolbar_style(); } +// BBS +void GLGizmoSeam::on_set_state() +{ + GLGizmoPainterBase::on_set_state(); + + if (get_state() == Off) { + ModelObject* mo = m_c->selection_info()->model_object(); + if (mo) Slic3r::save_object_mesh(*mo); + } +} + //BBS: remove const void GLGizmoSeam::update_model_object() { @@ -336,9 +347,6 @@ void GLGizmoSeam::update_model_object() if (updated) { const ModelObjectPtrs& mos = wxGetApp().model().objects; wxGetApp().obj_list()->update_info_items(std::find(mos.begin(), mos.end(), mo) - mos.begin()); - - // BBS: backup - Slic3r::save_object_mesh(*mo); m_parent.post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS)); } } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp index 791b23082..952c1b18b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp @@ -13,6 +13,9 @@ public: void render_painter_gizmo() const override; protected: + // BBS + void on_set_state() override; + wchar_t m_current_tool = 0; void on_render_input_window(float x, float y, float bottom_limit) override; std::string on_get_name() const override;