Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/slic3r/GUI/Gizmos/GLGizmoBase.cpp')
-rw-r--r--src/slic3r/GUI/Gizmos/GLGizmoBase.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp
index 1e0ff6c9e..bee57ec6e 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp
@@ -333,7 +333,11 @@ bool GLGizmoBase::use_grabbers(const wxMouseEvent &mouse_event) {
wxGetApp().obj_manipul()->set_dirty();
m_parent.set_as_dirty();
return true;
- } else if (mouse_event.LeftUp() || is_leaving || is_dragging_finished) {
+ }
+ else if (mouse_event.LeftUp() || is_leaving || is_dragging_finished) {
+#if ENABLE_WORLD_COORDINATE_SCALE_REVISITED
+ do_stop_dragging(is_leaving);
+#else
for (auto &grabber : m_grabbers) grabber.dragging = false;
m_dragging = false;
@@ -356,12 +360,41 @@ bool GLGizmoBase::use_grabbers(const wxMouseEvent &mouse_event) {
m_parent.post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED));
// updates camera target constraints
m_parent.refresh_camera_scene_box();
+#endif // ENABLE_WORLD_COORDINATE_SCALE_REVISITED
return true;
}
}
return false;
}
+#if ENABLE_WORLD_COORDINATE_SCALE_REVISITED
+void GLGizmoBase::do_stop_dragging(bool perform_mouse_cleanup)
+{
+ for (auto& grabber : m_grabbers) grabber.dragging = false;
+ m_dragging = false;
+
+ // NOTE: This should be part of GLCanvas3D
+ // Reset hover_id when leave window
+ if (perform_mouse_cleanup) m_parent.mouse_up_cleanup();
+
+ on_stop_dragging();
+
+ // There is prediction that after draggign, data are changed
+ // Data are updated twice also by canvas3D::reload_scene.
+ // Should be fixed.
+ m_parent.get_gizmos_manager().update_data();
+
+ wxGetApp().obj_manipul()->set_dirty();
+
+ // Let the plater know that the dragging finished, so a delayed
+ // refresh of the scene with the background processing data should
+ // be performed.
+ m_parent.post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED));
+ // updates camera target constraints
+ m_parent.refresh_camera_scene_box();
+}
+#endif // ENABLE_WORLD_COORDINATE_SCALE_REVISITED
+
std::string GLGizmoBase::format(float value, unsigned int decimals) const
{
return Slic3r::string_printf("%.*f", decimals, value);