From c8ac5a3d89c05e66c4dd4c0fe1438060dc82e410 Mon Sep 17 00:00:00 2001 From: Karim Date: Sat, 22 Aug 2026 01:24:51 +0200 Subject: [PATCH] =?UTF-8?q?Kreis-Mittelpunkt=20+=20Quadranten=20(0/90/180/?= =?UTF-8?q?270=C2=B0)=20sind=20jetzt=20snapbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nutzer-Wunsch: "bei Kreisen wäre ich froh wenn Kreismittelpunkte und 0/90/180/270 Grad auch snappen." Fund: computeSnap() (tools/snapping.ts) kannte das schon vollständig (Center- + Quadranten-Fang für Kreis/Bogen, Bogen nur innerhalb seiner Winkel-Spanne) -- gesteuert über `settings.center`, das im Modell aber auf `false` stand UND im Footer (StatusBar SnapControl) gar keinen Schalter hatte. Ein bereits fertig gebautes Feature war dadurch komplett unerreichbar. DEFAULT_SNAP.center jetzt `true`; neue Checkbox "Kreismitte/Quadranten (0/90/180/270°)" im Fang-Popover der Statusleiste (analog den übrigen Snap-Arten), damit es wie alle anderen auch abschaltbar bleibt. tsc/vitest 940/940 grün (keine bestehenden Tests setzten auf center:false als Default). --- src/i18n/de.ts | 1 + src/i18n/en.ts | 1 + src/tools/types.ts | 9 +++++++-- src/ui/StatusBar.tsx | 9 +++++++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/i18n/de.ts b/src/i18n/de.ts index 6a025f7..aa0b7ea 100644 --- a/src/i18n/de.ts +++ b/src/i18n/de.ts @@ -233,6 +233,7 @@ export const de = { "snap.enabled": "Fang aktiv", "snap.endpoint": "Endpunkt", "snap.midpoint": "Mittelpunkt", + "snap.center": "Kreismitte/Quadranten (0/90/180/270°)", "snap.intersection": "Schnittpunkt", "snap.onEdge": "Auf Kante (Lot)", "snap.grid": "Raster", diff --git a/src/i18n/en.ts b/src/i18n/en.ts index 39e60d4..c1b9e31 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -231,6 +231,7 @@ export const en: Record = { "snap.enabled": "Snap on", "snap.endpoint": "Endpoint", "snap.midpoint": "Midpoint", + "snap.center": "Circle center/quadrants (0/90/180/270°)", "snap.intersection": "Intersection", "snap.onEdge": "On edge (perp.)", "snap.grid": "Grid", diff --git a/src/tools/types.ts b/src/tools/types.ts index d3fb446..8ec27de 100644 --- a/src/tools/types.ts +++ b/src/tools/types.ts @@ -93,13 +93,18 @@ export interface SnapSettings { hoverDivideCount: number; } -/** Default-Snap-Einstellungen (endpoint/midpoint/intersection/onEdge + grid). */ +/** + * Default-Snap-Einstellungen (endpoint/midpoint/intersection/onEdge/center + + * grid). `center` (Kreis-/Bogen-Mittelpunkt + Quadranten 0/90/180/270°) war + * lange im Modell vorhanden, aber ohne UI-Schalter unerreichbar (Default + * `false`) — auf Nutzer-Wunsch jetzt an UND im Footer (StatusBar) umschaltbar. + */ export const DEFAULT_SNAP: SnapSettings = { enabled: true, endpoint: true, midpoint: true, intersection: true, - center: false, + center: true, onEdge: true, grid: true, gridSize: 0.1, diff --git a/src/ui/StatusBar.tsx b/src/ui/StatusBar.tsx index 445373d..85657c6 100644 --- a/src/ui/StatusBar.tsx +++ b/src/ui/StatusBar.tsx @@ -172,6 +172,15 @@ function SnapControl({ /> {t("snap.midpoint")} +