2D: Tab in ein Griff-/Kanten-Feld friert die Maus ein, bis der erste Wert getippt ist
Nutzer-Wunsch: "wenn ich mit Tab in die Werte springe, soll die Maus dann nicht mehr steuern, bis man den ersten Wert eingegeben hat -- das kann man aber mit Esc lösen." Bisher folgte der Punkt/die Kante nach Tab weiter der Maus, solange noch kein Wert gelockt war -- ein Zittern der Hand beim Greifen zur Tastatur konnte die Position also noch verändern, bevor überhaupt getippt wurde. Neue gripFrozenPointRef/edgeFrozenPointRef (useGripEditing.ts): beim ÖFFNEN des Feld-Controllers (erstes Tab, noch kein vorheriges Feld offen) wird die AKTUELLE Position eingefroren; onGripMove/onEdgeMove halten den Punkt/die Kante bei aktivem Feld-Controller OHNE Lock exakt dort fest, unabhängig von der Mausposition. Der erste getippte Wert (submitGripEditValue/submitEdgeEditValue) löst das Einfrieren -- ab da gilt wieder die bisherige Locked/Live-Mischung (gelockte Felder fest, ungelockte folgen der Maus). Neue closeGripEditField/closeEdgeEditField-Funktionen lösen das Einfrieren explizit auf und schließen NUR den Feld-Prompt (Punkt/Kante bleibt bewaffnet, Maus steuert wieder normal) -- ersetzen in App.tsx die bisherigen direkten setGripEdit(null)/setEdgeEdit(null)-Aufrufe im CommandLine-onCancel (Escape MIT Fokus in der Befehlszeile). Das bestehende, GLOBALE Escape (ohne Fokus in einem Eingabefeld) bleibt unverändert: es verwirft den ganzen Griff-/Kanten-Drag komplett auf die Ursprungsposition (PlanView.tsx, voriger Commit) -- zwei bewusst verschiedene Eskalationsstufen. tsc/vitest 922/922 grün.
This commit is contained in:
+4
-4
@@ -1290,15 +1290,15 @@ export default function App() {
|
||||
edgeGrips,
|
||||
gripHandlers,
|
||||
gripEdit,
|
||||
setGripEdit,
|
||||
gripEditFields,
|
||||
cycleGripEditField,
|
||||
submitGripEditValue,
|
||||
closeGripEditField,
|
||||
edgeEdit,
|
||||
setEdgeEdit,
|
||||
edgeEditFields,
|
||||
cycleEdgeEditField,
|
||||
submitEdgeEditValue,
|
||||
closeEdgeEditField,
|
||||
gripDragInfoRef,
|
||||
edgeDragInfoRef,
|
||||
} = useGripEditing({
|
||||
@@ -2886,9 +2886,9 @@ export default function App() {
|
||||
}
|
||||
onCancel={() =>
|
||||
gripEdit
|
||||
? setGripEdit(null)
|
||||
? closeGripEditField()
|
||||
: edgeEdit
|
||||
? setEdgeEdit(null)
|
||||
? closeEdgeEditField()
|
||||
: activeTransform
|
||||
? cancelTransform()
|
||||
: engine.cancel()
|
||||
|
||||
Reference in New Issue
Block a user