Fix #321: the perspective grid hides while a perspective tool is chosen

The grid was drawn whenever its `visible` flag was set or a perspective
tool was active, and choosing the Perspective Grid tool (Shift+P) didn't set
the flag. So with the tool chosen, View > Perspective Grid > Hide Grid
(perspective.grid.show) turned the hidden flag on instead of off and the
grid stayed on screen however it was toggled.

Choosing a perspective tool now shows the grid (sets `visible`, view state,
no undo step), and the grid, its widget and the Perspective Grid tool's
handles are drawn only while it is visible. Hide Grid hides it with the
tool still chosen; choosing the tool again shows it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
EthanSuquet
2026-10-08 03:27:36 +07:00
committed by bflatastic
co-authored by Claude Opus 5.5
parent f17c34a067
commit 4a676c4d5e
7 changed files with 48 additions and 21 deletions
+2 -2
View File
@@ -452,7 +452,7 @@ impl Session {
let w = self.prefs.perspective_widget;
let st = self.active().filter(|_| w.show)?;
let g = PerspectiveGrid::current(&st.doc);
if !g.shown(self.tool_id()) {
if !g.visible {
return None;
}
let place = WidgetPlace { screen: view.screen.as_ref(), corner: w.position };
@@ -476,6 +476,6 @@ impl Session {
ToolKey::Digit(4) => Plane::None,
_ => return None,
};
PerspectiveGrid::current(&self.active()?.doc).shown(self.tool_id()).then_some(plane)
PerspectiveGrid::current(&self.active()?.doc).visible.then_some(plane)
}
}