2D: Hover-Teilpunkte auf Linien (konfigurierbare Verzögerung + Anzahl)
Neues Feature (Nutzer-Wunsch): ruht der Cursor im Auswahl-Ruhezustand (kein Werkzeug/Drag) länger als eine einstellbare Zeit (Default 300ms) auf einem 2D-Linien-Segment, erscheinen dessen gleiche Teilpunkte kurz mit Akzentfarbe -- bei 2 Teilen (Default) nur der Mittelpunkt, bei 3/4/… entsprechend mehr. Reine Sichtbarkeits-Hilfe, kein neues Snap-Ziel. Verzögerung (ms) und Teile-Anzahl sind unten im Footer einstellbar, im bestehenden Fang-Popover (StatusBar.tsx SnapControl) als zwei weitere Zahlenfelder -- neue Felder hoverDivideDelayMs/hoverDivideCount auf SnapSettings (tools/types.ts), NICHT an snap.enabled gekoppelt (eigenes, vom Fang unabhängiges visuelles Feature). PlanView.tsx: neue nearestLineSegment()-Suche (dieselbe Bildschirm-Nähe- Logik wie pickDrawing, liefert aber die zwei Endpunkte des konkret gehoverten Segments einer Polylinie, nicht nur die drawingId). Ein Timer verankert/verwirft die Anzeige bei Segment-Wechsel; die beiden neuen Props (hoverDivideDelayMs/hoverDivideCount) werden wie snapColor durch viewportContent.tsx bis zu PlanView durchgereicht. tsc/vitest 922/922 grün. Manuell in der App zu prüfen (Pointer-Hover ist nicht automatisiert testbar, wie die übrigen Griff-Interaktions- Fixes dieser Session).
This commit is contained in:
@@ -71,6 +71,18 @@ export interface SnapSettings {
|
||||
commonAngles: boolean;
|
||||
/** Toleranz (Grad) für das weiche Winkel-Einrasten. */
|
||||
commonAngleTolerance: number;
|
||||
/**
|
||||
* Verweilt der Cursor länger als diese Zeit (ms) ruhig auf einer Linie
|
||||
* (2D-Element, kein aktiver Zug/Werkzeug), werden ihre Teilpunkte (s.
|
||||
* `hoverDivideCount`) kurz mit Akzentfarbe eingeblendet — reine
|
||||
* Sichtbarkeits-Hilfe, kein zusätzliches Snap-Ziel.
|
||||
*/
|
||||
hoverDivideDelayMs: number;
|
||||
/**
|
||||
* In wie viele gleiche Teile die gehoverte Linie dabei angezeigt wird
|
||||
* (2 = nur der Mittelpunkt, 3 = zwei Drittelpunkte, usw.).
|
||||
*/
|
||||
hoverDivideCount: number;
|
||||
}
|
||||
|
||||
/** Default-Snap-Einstellungen (endpoint/midpoint/intersection/onEdge + grid). */
|
||||
@@ -88,6 +100,8 @@ export const DEFAULT_SNAP: SnapSettings = {
|
||||
tolerancePx: 12,
|
||||
commonAngles: true,
|
||||
commonAngleTolerance: 2.5,
|
||||
hoverDivideDelayMs: 300,
|
||||
hoverDivideCount: 2,
|
||||
};
|
||||
|
||||
// ── Werkzeug-Schnittstelle ──────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user