fix(view): window corner picks exempt from Ortho/Polar (#363)

ZOOM WINDOW's opposite corner was pinned to an axis with Ortho on,
collapsing the window to a line. Extend the #291 window_corner_pick
exemption to ZOOM WINDOW, PLOTWINDOW and WIPEOUT's rectangular mode
(polygon mode keeps the constraints — axis-aligned edges are a
legitimate use).

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Fable 5 committed 2026-07-21 23:14:08 +03:00
1 parent ea860cab72
commit 9690d37d03
3 files changed
+19

No files matched your search

+7
View File
@@ -107,6 +107,13 @@ impl CadCommand for WipeoutCommand {
}
}
fn window_corner_pick(&self) -> bool {
// Rectangular mode picks free window corners — exempt from Ortho/Polar
// (#363/#291 class). Polygon points keep the constraints (axis-aligned
// polygon edges are a legitimate use).
matches!(self.mode, WipeoutMode::Rectangular)
}
fn on_mouse_move(&mut self, pt: DVec3) -> Option<WireModel> { let pt = pt.as_vec3();
match &self.mode {
WipeoutMode::Rectangular => {
+5
View File
@@ -44,6 +44,11 @@ impl CadCommand for PlotWindowCommand {
CmdResult::Cancel
}
fn window_corner_pick(&self) -> bool {
// Free rectangle corners — exempt from Ortho/Polar (#363/#291 class).
true
}
fn on_mouse_move(&mut self, pt: DVec3) -> Option<WireModel> { let pt = pt.as_vec3();
let p1 = self.p1?.as_vec3();
// Draw the selection rectangle.
+7
View File
@@ -59,6 +59,13 @@ impl CadCommand for ZoomWindowCommand {
CmdResult::Cancel
}
fn window_corner_pick(&self) -> bool {
// Both zoom-window corners are free points; Ortho/Polar must not pin
// the opposite corner to an axis or the window collapses to a line
// (#363, same class as #291).
true
}
fn on_mouse_move(&mut self, pt: DVec3) -> Option<WireModel> { let pt = pt.as_vec3();
let p1 = self.first?;
let min = p1.min(pt);