feat(select): drag selected objects to move them, Ctrl+drag to copy

Pressing on a selected object (away from its grips) and dragging runs
MOVE on the selection from the grabbed point, and the release is the
destination, so the drag gets the command's preview, snaps and ortho.
With Ctrl the drag runs COPY and places one copy. A press that does not
move stays an ordinary click, and drags that start off the selection
still make a window or lasso.

Refs #750

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-13 15:40:55 +03:00
1 parent 2ddf2a31da
commit 5a6f69f3f8
2 files changed
+96

No files matched your search

+5
View File
@@ -1223,6 +1223,10 @@ pub(super) struct OpenCADStudio {
/// A direction typed as `<angle` at a point prompt: the next point stays
/// on it until a point is placed.
angle_override: Option<glam::DVec3>,
/// A left press on a selected object: the point it grabbed, and whether
/// the drag has turned into a MOVE (or, with Ctrl, a COPY) of the
/// selection.
drag_move: Option<(glam::DVec3, bool)>,
/// Inline rename state: (original_name, current_edit_value).
layout_rename_state: Option<(String, String)>,
/// Timestamp of the previous viewport left-click release (for double-click detection).
@@ -4784,6 +4788,7 @@ impl OpenCADStudio {
snap_override_popup: None,
axis_lock_dir: None,
angle_override: None,
drag_move: None,
layout_rename_state: None,
last_vp_click_time: None,
last_vp_click_pos: None,