Modified logic to add snapshots to undo/redo stack using GLCanvas::do_xxxxxx() methods

This commit is contained in:
Enrico Turri 2019-07-09 10:18:57 +02:00
parent 7b6229289d
commit d4914441f3
5 changed files with 50 additions and 34 deletions

View file

@ -220,8 +220,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
selection.synchronize_unselected_instances(Selection::SYNC_ROTATION_GENERAL);
selection.synchronize_unselected_volumes();
// Copy mirroring values from GLVolumes into Model (ModelInstance / ModelVolume), trigger background processing.
canvas->do_mirror();
canvas->set_as_dirty();
canvas->do_mirror("Set Mirror");
UpdateAndShow(true);
});
return sizer;
@ -302,8 +301,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
selection.synchronize_unselected_instances(Selection::SYNC_ROTATION_GENERAL);
selection.synchronize_unselected_volumes();
// Copy rotation values from GLVolumes into Model (ModelInstance / ModelVolume), trigger background processing.
wxGetApp().plater()->take_snapshot(_(L("Set Rotation")));
canvas->do_rotate();
canvas->do_rotate("Set Rotation");
UpdateAndShow(true);
});
@ -656,8 +654,7 @@ void ObjectManipulation::change_position_value(int axis, double value)
Selection& selection = canvas->get_selection();
selection.start_dragging();
selection.translate(position - m_cache.position, selection.requires_local_axes());
wxGetApp().plater()->take_snapshot(_(L("Set Position")));
canvas->do_move();
canvas->do_move("Set Position");
m_cache.position = position;
m_cache.position_rounded(axis) = DBL_MAX;
@ -688,8 +685,7 @@ void ObjectManipulation::change_rotation_value(int axis, double value)
selection.rotate(
(M_PI / 180.0) * (transformation_type.absolute() ? rotation : rotation - m_cache.rotation),
transformation_type);
wxGetApp().plater()->take_snapshot(_(L("Set Orientation")));
canvas->do_rotate();
canvas->do_rotate("Set Orientation");
m_cache.rotation = rotation;
m_cache.rotation_rounded(axis) = DBL_MAX;
@ -754,7 +750,7 @@ void ObjectManipulation::do_scale(int axis, const Vec3d &scale) const
selection.start_dragging();
selection.scale(scaling_factor * 0.01, transformation_type);
wxGetApp().plater()->canvas3D()->do_scale();
wxGetApp().plater()->canvas3D()->do_scale("Set Scale");
}
void ObjectManipulation::on_change(t_config_option_key opt_key, const boost::any& value)