forked from 1b-agent/opencadstudio-upstream
Merge origin/main into plugin/host-model-api
Conflicts were additive: main's AddLayer/ModifyLayer (LayerConfig, OptHandle) alongside this branch's v7 system-variable, transaction, selection and solid operations. Main's variants keep their positions in the IPC enums; the v7 additions follow them. src/io/mod.rs takes main's reworded Shape-rotation note. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
commit
6b8056cfeb
28 files changed
+1425
-97
No files matched your search
@@ -129,6 +129,13 @@ pub struct CommandLine {
|
||||
pub history: Vec<HistoryEntry>,
|
||||
pub error_revision: u64,
|
||||
pub last_error: Option<String>,
|
||||
/// Tokens from the last multi-token command line that no prompt ever
|
||||
/// consumed — e.g. a trailing word after an in-place text step, or a typo'd
|
||||
/// extra argument (`CIRCLE 0,0 5 9`). The headless automation feeder reports
|
||||
/// them so a caller can tell "part of my line was silently dropped" from
|
||||
/// "the command ran exactly as typed". Cleared at the start of every
|
||||
/// `run_command_line`, not persisted.
|
||||
pub unconsumed: Vec<String>,
|
||||
/// Successfully dispatched commands used for ↑/↓ recall, newest last.
|
||||
/// Stored separately because recall also maintains its own cursor and draft.
|
||||
pub cmd_recall: Vec<String>,
|
||||
@@ -186,6 +193,7 @@ impl Default for CommandLine {
|
||||
history: Vec::new(),
|
||||
error_revision: 0,
|
||||
last_error: None,
|
||||
unconsumed: Vec::new(),
|
||||
cmd_recall: Vec::new(),
|
||||
recent_commands: Vec::new(),
|
||||
recent_inputs: Vec::new(),
|
||||
|
||||
+9
-8
@@ -962,7 +962,7 @@ pub fn selection_overlay<'a>(
|
||||
grip_clip: Option<iced::Rectangle>,
|
||||
ucs_icons: Vec<UcsIconParams>,
|
||||
ost_points: Vec<OstTrackPoint>,
|
||||
otrack_line: Option<(Point, Point)>,
|
||||
otrack_lines: Vec<(Point, Point)>,
|
||||
parallel_ref_marker: Option<Point>,
|
||||
show_viewcube: bool,
|
||||
dividers: Vec<iced::Rectangle>,
|
||||
@@ -988,7 +988,7 @@ pub fn selection_overlay<'a>(
|
||||
grip_clip,
|
||||
ucs_icons,
|
||||
ost_points,
|
||||
otrack_line,
|
||||
otrack_lines,
|
||||
parallel_ref_marker,
|
||||
show_viewcube,
|
||||
dividers,
|
||||
@@ -1029,11 +1029,12 @@ struct SelectionCanvas {
|
||||
/// entry carries hover/selected (grips).
|
||||
ucs_icons: Vec<UcsIconParams>,
|
||||
ost_points: Vec<OstTrackPoint>,
|
||||
/// Active OTRACK alignment: (acquired tracking point, locked cursor), both
|
||||
/// in screen space. Drawn as a dashed guide extended a little past the
|
||||
/// cursor so the extension / tracking line the user snapped to is visible.
|
||||
/// (#219)
|
||||
otrack_line: Option<(Point, Point)>,
|
||||
/// Active OTRACK alignments, each (acquired tracking point, locked cursor)
|
||||
/// in screen space. Drawn as dashed guides extended a little past the
|
||||
/// cursor so the extension / tracking line the user snapped to is visible
|
||||
/// (#219). An intersection lock contributes both of its crossing vectors,
|
||||
/// so the point reads as their meeting rather than a lone guide (#1313).
|
||||
otrack_lines: Vec<(Point, Point)>,
|
||||
/// The acquired Parallel-snap reference point (screen), marked with a small
|
||||
/// ∥ glyph so the user sees which line is the parallel reference. (#277)
|
||||
parallel_ref_marker: Option<Point>,
|
||||
@@ -2013,7 +2014,7 @@ impl canvas::Program<Message> for SelectionCanvas {
|
||||
// real angle from the acquired point through the lock and a little
|
||||
// beyond, dashed so it reads as a construction guide. This covers the
|
||||
// ortho (0°/90°), polar, and edge-extension cases uniformly (#219).
|
||||
if let Some((base, tip)) = self.otrack_line {
|
||||
for &(base, tip) in &self.otrack_lines {
|
||||
let dx = tip.x - base.x;
|
||||
let dy = tip.y - base.y;
|
||||
let len = (dx * dx + dy * dy).sqrt();
|
||||
|
||||
Reference in new issue
Block a user