Kreis-Mittelpunkt + Quadranten (0/90/180/270°) sind jetzt snapbar
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).
This commit is contained in:
@@ -233,6 +233,7 @@ export const de = {
|
|||||||
"snap.enabled": "Fang aktiv",
|
"snap.enabled": "Fang aktiv",
|
||||||
"snap.endpoint": "Endpunkt",
|
"snap.endpoint": "Endpunkt",
|
||||||
"snap.midpoint": "Mittelpunkt",
|
"snap.midpoint": "Mittelpunkt",
|
||||||
|
"snap.center": "Kreismitte/Quadranten (0/90/180/270°)",
|
||||||
"snap.intersection": "Schnittpunkt",
|
"snap.intersection": "Schnittpunkt",
|
||||||
"snap.onEdge": "Auf Kante (Lot)",
|
"snap.onEdge": "Auf Kante (Lot)",
|
||||||
"snap.grid": "Raster",
|
"snap.grid": "Raster",
|
||||||
|
|||||||
@@ -231,6 +231,7 @@ export const en: Record<TranslationKey, string> = {
|
|||||||
"snap.enabled": "Snap on",
|
"snap.enabled": "Snap on",
|
||||||
"snap.endpoint": "Endpoint",
|
"snap.endpoint": "Endpoint",
|
||||||
"snap.midpoint": "Midpoint",
|
"snap.midpoint": "Midpoint",
|
||||||
|
"snap.center": "Circle center/quadrants (0/90/180/270°)",
|
||||||
"snap.intersection": "Intersection",
|
"snap.intersection": "Intersection",
|
||||||
"snap.onEdge": "On edge (perp.)",
|
"snap.onEdge": "On edge (perp.)",
|
||||||
"snap.grid": "Grid",
|
"snap.grid": "Grid",
|
||||||
|
|||||||
+7
-2
@@ -93,13 +93,18 @@ export interface SnapSettings {
|
|||||||
hoverDivideCount: number;
|
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 = {
|
export const DEFAULT_SNAP: SnapSettings = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
endpoint: true,
|
endpoint: true,
|
||||||
midpoint: true,
|
midpoint: true,
|
||||||
intersection: true,
|
intersection: true,
|
||||||
center: false,
|
center: true,
|
||||||
onEdge: true,
|
onEdge: true,
|
||||||
grid: true,
|
grid: true,
|
||||||
gridSize: 0.1,
|
gridSize: 0.1,
|
||||||
|
|||||||
@@ -172,6 +172,15 @@ function SnapControl({
|
|||||||
/>
|
/>
|
||||||
<span>{t("snap.midpoint")}</span>
|
<span>{t("snap.midpoint")}</span>
|
||||||
</label>
|
</label>
|
||||||
|
<label className="sb-snap-row">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
checked={snap.center}
|
||||||
|
disabled={!snap.enabled}
|
||||||
|
onChange={(e) => onSnapChange({ ...snap, center: e.target.checked })}
|
||||||
|
/>
|
||||||
|
<span>{t("snap.center")}</span>
|
||||||
|
</label>
|
||||||
<label className="sb-snap-row">
|
<label className="sb-snap-row">
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
|
|||||||
Reference in New Issue
Block a user