2D: Punkt-Griff ziehen ohne gehaltene Maustaste, Cursor-HUD dabei
Nutzer-Wunsch: sobald ein Punkt-Griff angewählt ist, soll man die Maustaste loslassen können und trotzdem weiter per Cursor UND per getipptem Wert positionieren können -- wie beim Zeichnen (Klick setzt Punkt, Maus bewegt sich frei, Wert tippbar, nächster Klick/Enter bestätigt), nicht wie bisher als reine Halten-und-Ziehen-Geste. PlanView.tsx: der Griff wird beim Klick "bewaffnet" statt per Pointer-Capture gehalten zu werden; Loslassen der Maus beendet die Bearbeitung nicht mehr, der Punkt folgt weiter per normalem Hover- Pointermove. Abgeschlossen wird per erneutem Linksklick (irgendwo, verhindert dass derselbe Klick eine andere Aktion auslöst) oder Enter, verworfen per Escape (beide nur ausserhalb von Eingabefeldern, damit die Befehlszeile ihr eigenes Enter behält). Neuer onGripCancel-Handler setzt dafür exakt auf die Ausgangsposition zurück. useGripEditing.ts: die Anker-Auflösung (Nachbar-Ecke bzw. Kreis-/Bogen- Zentrum) ist jetzt ein gemeinsamer resolveGripAnchor()-Helper, genutzt vom Tab-Feld-Controller UND einem neuen Cursor-HUD (Länge/Winkel neben der Maus, dieselbe Darstellung wie beim Zeichnen) -- vorher zeigte das Cursor-HUD beim Griff-Ziehen gar keine Werte an, nur die Befehlszeile unten. App.tsx: das Cursor-HUD-Feld-Objekt zeigt bei aktivem Griff-Tab-Feld jetzt dieselben Felder wie die Befehlszeile (vorher nur bei laufendem Zeichenbefehl). Kanten-Griff und Körper-Verschieben (ganzes Element) bleiben bewusst unverändert (Halten-und-Ziehen) -- nur explizit angefragt war der Einzelpunkt-Fall.
This commit is contained in:
+21
-12
@@ -849,18 +849,6 @@ export default function App() {
|
||||
// Live-Echo des Befehlszeilen-Texts fürs Cursor-HUD: der getippte Wert
|
||||
// erscheint sofort im aktiven Tab-Feld am Cursor (VW-Verhalten).
|
||||
const [cmdTyped, setCmdTyped] = useState("");
|
||||
const hudFields =
|
||||
commandActive && engineView.fields.length > 0
|
||||
? {
|
||||
fields: engineView.fields.map((f) => ({
|
||||
id: f.id,
|
||||
value: f.value,
|
||||
locked: f.locked,
|
||||
active: f.active,
|
||||
})),
|
||||
typed: cmdTyped,
|
||||
}
|
||||
: null;
|
||||
|
||||
// ── GUI-Werkzeug ↔ Befehls-Engine (ein Eingabe-Hub) ───────────────────────
|
||||
// Ein Klick auf ein gekoppeltes Zeichen-Werkzeug (Wand/Linie/Rechteck/Polylinie)
|
||||
@@ -1339,6 +1327,27 @@ export default function App() {
|
||||
moveElementByOf,
|
||||
});
|
||||
|
||||
// Feld-Zustand fürs Cursor-HUD (neben der Maus, VW-Stil): läuft ein
|
||||
// Punkt-Griff-Drag, hat er Vorrang (dieselben Felder wie unten in der
|
||||
// Befehlszeile — Länge/Winkel-Tab-Zyklus), sonst die Befehls-Engine-Felder
|
||||
// beim Zeichnen. Vorher zeigte das Cursor-HUD beim Griff-Ziehen GAR KEINE
|
||||
// Länge/Winkel-Werte an (nur die Befehlszeile unten) — Nutzer-Wunsch: „du
|
||||
// kannst [Länge/Winkel] gleich bei der Maus anzeigen wie beim Erstellen".
|
||||
const hudFields =
|
||||
gripEdit
|
||||
? { fields: gripEditFields(), typed: cmdTyped }
|
||||
: commandActive && engineView.fields.length > 0
|
||||
? {
|
||||
fields: engineView.fields.map((f) => ({
|
||||
id: f.id,
|
||||
value: f.value,
|
||||
locked: f.locked,
|
||||
active: f.active,
|
||||
})),
|
||||
typed: cmdTyped,
|
||||
}
|
||||
: null;
|
||||
|
||||
// Ctrl/Cmd+C / Ctrl/Cmd+V = 2D-Zeichenelemente kopieren/einfügen — siehe
|
||||
// state/useKeyboardShortcuts.ts.
|
||||
useDrawingClipboardShortcut(
|
||||
|
||||
Reference in New Issue
Block a user