fix(grip): Stretch grip-menu action engages the grip
Picking Stretch from the grip popup just closed the menu and returned, so the grip never became hot and the follow-up click did nothing (issue #48). It now engages the picked grip — tracking the cursor until the placement click — the same as picking the grip directly in the viewport. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
dcdcb0f2b7
commit
e2507d5c54
1 changed files with 17 additions and 0 deletions
|
|
@ -3239,6 +3239,23 @@ impl OpenCADStudio {
|
||||||
use crate::entities::traits::EntityTypeOps;
|
use crate::entities::traits::EntityTypeOps;
|
||||||
use crate::scene::object::GripMenuAction;
|
use crate::scene::object::GripMenuAction;
|
||||||
if matches!(item.action, GripMenuAction::Stretch) {
|
if matches!(item.action, GripMenuAction::Stretch) {
|
||||||
|
// Stretch = move this grip. Engage it so the next click
|
||||||
|
// places it (click-move-click) — same as picking the grip
|
||||||
|
// directly in the viewport. Without this the menu just
|
||||||
|
// closed and the grip never became hot (issue #48).
|
||||||
|
if let Some(g) = self.tabs[i]
|
||||||
|
.selected_grips
|
||||||
|
.iter()
|
||||||
|
.find(|g| g.id == popup.grip_id)
|
||||||
|
{
|
||||||
|
self.tabs[i].active_grip = Some(GripEdit {
|
||||||
|
handle: popup.handle,
|
||||||
|
grip_id: popup.grip_id,
|
||||||
|
is_translate: g.is_midpoint,
|
||||||
|
origin_world: g.world,
|
||||||
|
last_world: g.world,
|
||||||
|
});
|
||||||
|
}
|
||||||
return Task::none();
|
return Task::none();
|
||||||
}
|
}
|
||||||
// Actions that need a follow-up number stash a pending
|
// Actions that need a follow-up number stash a pending
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue