diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index b10c4e5..6459434 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -279,6 +279,42 @@ läuft synchron, es wird nichts davon gezeichnet. Nachgemessen: Knoten auf dem Schirm 143 px, im SVG 189,7 px — also die unskalierte Größe, passend zur festen Schrift. +**Nachtrag 3 — der Umschalter trägt die Navigation zum Knoten; ein langer +Druck im Textfeld verbietet sich.** Gemeldet als Fehler: „Wenn man in der +Smartphone-Ansicht den Cursor in den Text setzt, klappt das Text-Edit-Fenster +zusammen." Nachgestellt auf der **deployten** Instanz (1.1.39, noch das alte +Splitter-Modell von D17): Ein Tipp auf die **Titelzeile des Diagramms** — +ein 49 px hoher Streifen unmittelbar über dem Text — schrumpfte den Editor von +594 px auf 44 px. Beim Zielen auf die oberen Textzeilen ist der leicht zu +treffen. Das Ein-Bereich-Modell aus Nachtrag 1 nimmt dem Fehler die Grundlage: +Es gibt keinen Splitter und kein Titelzeilen-Tippen mehr, den Bereich wechselt +**allein** der Umschalter. Im aktuellen Stand ließ sich der Fehler nicht mehr +auslösen (Maus-Klick, emulierter Touch und synthetische Touch-Folge, jeweils +ohne Bereichswechsel). + +Der zweite Teil der Meldung deckte aber eine echte Lücke auf: Für die Richtung +**Text → Diagramm** gibt es nur Alt+Klick bzw. Alt+Enter (D25) — und Alt gibt +es auf dem Telefon nicht. Die Gegenrichtung hat dort ihren langen Druck, diese +hatte nichts. + +**Vorgeschlagen war ein langer Druck im Textfeld — verworfen.** Dort gehört er +dem Betriebssystem: Wort markieren, Auswahlgriffe, Einfügen-Leiste. D25 konnte +sich diese Geste im Diagramm nehmen (`user-select:none`), weil es da nichts zu +markieren gibt; in einem **editierbaren** Feld ist sie die Bedien-Grundlage +zum Bearbeiten. Sie zu überschreiben löste ein Navigationsproblem auf Kosten +des Bearbeitens — in einer Meldung, deren Kern gerade lautet, dass Bearbeiten +nicht bestraft werden darf. Dazu kommt, dass sich das Zusammenspiel mit der +nativen Auswahl nach der D25-Lehre nur auf echter Hardware beurteilen ließe. + +**Gewählt: der Umschalter tut es nebenbei.** Wer aus dem Text ins Diagramm +wechselt, will nachsehen — und zwar bei dem, woran er gerade geschrieben hat. +Der Knopf wird in genau diesem Moment ohnehin gedrückt; er zentriert deshalb +den Knoten der Cursor-Zeile und hebt ihn hervor (`focusNodeOfCaret()`, also +identisch zum Alt+Klick am Schreibtisch). Kostet kein Bedienelement, keine +Geste und kann nicht versehentlich auslösen. Steht der Cursor auf einer Zeile +ohne Knoten (Kommentar, Leerzeile), wird nur umgeschaltet — dieselbe stille +Regel wie überall sonst bei dieser Geste. + **Das Debug-Panel minimiert sich jetzt, statt sich zu schließen.** Ein Klick entfernte es bisher ganz — was nichts half, weil der 15-Sekunden-Takt es sofort wieder aufbaute; auf dem Telefon verdeckte es damit dauerhaft die untere rechte diff --git a/docs/SPEC.md b/docs/SPEC.md index 97225be..a8cf609 100644 --- a/docs/SPEC.md +++ b/docs/SPEC.md @@ -406,7 +406,12 @@ damit genau dann zu sehen, wenn der Text vorn ist. Die übrigen **Aktions-Knöpfe** bleiben rechts in der Titelzeile und werden mit umgeschaltet — jeder Bereich zeigt seine eigenen, in der unten beschriebenen komprimierten Form. Der sichtbare Bereich wird gemerkt; ein Sprung zwischen -Diagramm und Text (§9) holt den nötigen Bereich selbst nach vorn. +Diagramm und Text (§9) holt den nötigen Bereich selbst nach vorn. **Nur dieser +Umschalter wechselt den Bereich** — insbesondere kostet kein Tippen im Text +den Editor. Umgekehrt trägt der Umschalter zugleich die Navigation zum Knoten: +Wer aus dem Text ins Diagramm wechselt, landet auf dem Knoten der Cursor-Zeile +(zentriert und hervorgehoben) — der Alt+Klick dieser Richtung (§9) steht auf +dem Telefon nicht zur Verfügung. Voreinstellung ist das Diagramm. Beide Inhalte werden hier zudem rund **25 % kleiner** dargestellt, damit mehr Plan auf die Fläche passt; das ist ein Faktor **auf** den Zoom, der Zoom-Regler arbeitet unverändert relativ dazu und zeigt diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index 24f04c9..5fd4a91 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -391,6 +391,13 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der einen** Bereich — `body.pane-diagram` bzw. `body.pane-text`, umgeschaltet über je einen festen Knopf pro Titelzeile (`#paneToText`/`#paneToDiagram`, `setMobilePane()`); kein Splitter, keine Fenster-Buttons (D17-Nachtrag). + **Nur der Umschalter darf den Bereich wechseln** — im alten Splitter-Modell + kostete ein Tipp auf die Diagramm-Titelzeile (49-px-Streifen über dem Text) + den Editor; genau das war der gemeldete Fehler (D17-Nachtrag 3). `#paneToDiagram` + ruft `focusNodeOfCaret()`, wenn die Cursor-Zeile einen Knoten hat: Das ist die + **einzige** Touch-Navigation Text → Diagramm (Alt gibt es dort nicht). Keinen + langen Druck ins Textfeld legen — der gehört dem OS (Wortauswahl, + Auswahlgriffe), anders als im Diagramm, wo D25 ihn sich nehmen konnte. **Der verborgene Bereich ist `display:none` und misst sich damit zu null** — `setMobilePane()` MUSS neu zeichnen: zum Diagramm hin dieselben vier Schritte wie `applyLayout` (`applyOptStairs`/`alignStems`/`drawCheapPath`/ diff --git a/frontend/src/app.js b/frontend/src/app.js index 33d9fa9..a3eadf4 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -1102,8 +1102,18 @@ function setMobilePane(pane, save){ } document.getElementById('paneToText') .addEventListener('click', () => setMobilePane('text', true)); -document.getElementById('paneToDiagram') - .addEventListener('click', () => setMobilePane('diagram', true)); +/* Der Wechsel **ins Diagramm** ist zugleich die Navigation zum Knoten, an dem + man gerade geschrieben hat. Für diese Richtung gibt es sonst nur Alt+Klick + (D25) — und Alt gibt es auf dem Telefon nicht; die Gegenrichtung hat dort + ihren langen Druck, diese hatte nichts. Ein eigener langer Druck im Textfeld + verbietet sich: Dort gehört er dem Betriebssystem (Wort markieren, + Auswahlgriffe) — das ist die Bedien-Grundlage zum Bearbeiten, die man einem + Textfeld nicht wegnehmen darf. Der Umschalter trägt die Geste stattdessen + umsonst: Er wird ohnehin gedrückt, wenn man nachsehen will. */ +document.getElementById('paneToDiagram').addEventListener('click', () => { + if(caretLine != null && nodeOfLine(caretLine)) focusNodeOfCaret(); + else setMobilePane('diagram', true); +}); document.querySelectorAll('.winbtn').forEach(b => { b.addEventListener('click', e => { /* Fenster-Buttons sind maßgeblich: nicht zum Titelzeilen-Restore durchreichen */