fix(dyn-input): re-sync fields immediately after point commits (#35)
`sync_dyn_fields` only ran during `ViewportMove`, so a typed-coord or click-driven point commit left the previous iteration's field shape in place until the user nudged the mouse. After the first LINE click that meant the stale `[X, Y]` (built when there was no base) kept serving the next point's input as cartesian even though the command-default for a "Point with base" is now polar `[Distance, Angle]`. The original #35 fix preserved a `,`-reshaped cartesian set on purpose, but the same machinery now also held onto a never-explicitly-chosen `[X, Y]` carried over from "no base" → "has base". Track that intent explicitly with `dyn_user_reshaped` (set in `dyn_comma_advance`, cleared on point commit and command start) and only treat a non-matching shape as acceptable while that flag is on. Re-run `sync_dyn_fields` from every point-commit path (command-line typed coord, mouse click, dynamic-input locked commit) so the freshly updated `has_base` state immediately picks the right default and the user sees polar fields without having to move the mouse first.
This commit is contained in:
parent
f952fc9bb7
commit
8f02e1ca07
3 changed files with 41 additions and 13 deletions
|
|
@ -15,6 +15,9 @@ impl OpenCADStudio {
|
|||
// Reset the last committed point so the first click of the new command
|
||||
// is not constrained by ortho/polar relative to a previous command's endpoint.
|
||||
self.last_point = None;
|
||||
// A fresh command starts at the polar/cartesian default — clear
|
||||
// any `,`-driven reshape from a previous command (#35).
|
||||
self.dyn_user_reshaped = false;
|
||||
|
||||
if let Some(path_str) = cmd.strip_prefix("OPEN_RECENT:") {
|
||||
let path = PathBuf::from(path_str);
|
||||
|
|
|
|||
Loading…
Reference in a new issue