forked from 1b-agent/opencadstudio-upstream
fix(select): accumulate selection set, apply on Enter/RMB (#220)
Modify commands invoked with nothing pre-selected (ERASE, MOVE, COPY, ROTATE, SCALE, MIRROR, ARRAY*, STRETCH, EXPLODE, GROUP, BLOCK, the clipboard cuts, LAYOFF/FRZ/LCK/ULK, ...) ran the command on the FIRST picked object and terminated. You could not build up a selection. SelectObjectsCommand now keeps gathering: each pick accumulates into the set (Shift removes), the prompt shows the running count, and the command fires only when the user presses Enter or right-clicks. Reuses the existing JOIN gather pattern, so no viewport/host changes are needed. LAYMCUR acts on a single object's layer, so it keeps the immediate first-pick behaviour via the new SelectObjectsCommand::instant(). Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
57136b9eda
commit
0a5d85aa8a
2 files changed
+53
-7
No files matched your search
@@ -301,7 +301,8 @@ impl OpenCADStudio {
|
||||
let entities = self.tabs[i].scene.selected_entities();
|
||||
if entities.is_empty() {
|
||||
use crate::modules::draw::select::SelectObjectsCommand;
|
||||
let cmd = SelectObjectsCommand::new("LAYMCUR");
|
||||
// LAYMCUR acts on one object's layer; apply on the first pick.
|
||||
let cmd = SelectObjectsCommand::instant("LAYMCUR");
|
||||
self.command_line.push_info(&cmd.prompt());
|
||||
self.tabs[i].active_cmd = Some(Box::new(cmd));
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user