Ctrl/Cmd+A: zweistufige Auswahl (zusammenhängender Bereich, dann alles Befüllte)

Erster Druck markiert den zusammenhängenden Bereich um die aktive Zelle
(Excel-Verhalten, iterative Rechteck-Expansion bis zur ersten leeren Zeile/
Spalte oder dem Tabellenrand); ein zweiter, unmittelbar folgender Druck
erweitert auf alle befüllten Zellen der Tabelle. Der Zyklus erkennt sich
selbst über einen Abgleich der aktuellen Auswahl mit der zuletzt gesetzten
und setzt sich bei jeder anderen Aktion dazwischen zurück.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
wkh
2026-09-08 23:38:44 +02:00
co-authored by Claude Sonnet 5
parent 3594b12615
commit 40adaa2e1c
2 changed files with 111 additions and 1 deletions
+18
View File
@@ -71,6 +71,17 @@ umbenennen, löschen, per Drag sortieren). Zoom 40–200 % pro Blatt
Bewegungen und das Verlassen der Tabelle, scrollt bei festen Tabellen an der
Kante automatisch mit und heilt einen verlorenen `mouseup` selbst.
- Kopf-Klick = ganze Spalte / Zeile, Ecke = alles.
- **`Strg`/`Cmd`+`A`** (zweistufig, Excel-Verhalten): der **erste** Druck
markiert den **zusammenhängenden Bereich** um die aktive Zelle — iterative
Rechteck-Expansion, die an einer vollständig leeren Zeile/Spalte oder am
Tabellenrand stoppt (zwei durch eine leere Spalte/Zeile getrennte
Dateninseln bleiben getrennt). Ein **zweiter, unmittelbar folgender** Druck
erweitert auf **alle befüllten Zellen der Tabelle** — die tatsächlichen
Grenzen befüllter Felder, nicht die (oft größeren) Grunddimensionen der
Tabelle. Jeder weitere Druck bleibt auf dieser Vollauswahl stehen. Der
Zyklus erkennt sich selbst rein über einen Vergleich der aktuellen Auswahl
mit der beim letzten Druck gesetzten — jede andere Aktion dazwischen (Klick,
Pfeiltaste, Bearbeitung, …) setzt ihn auf Stufe 1 zurück, ganz wie in Excel.
- **`Strg`/`Cmd`+Klick** = weitere Zelle **hinzufügen** (erneut = abwählen),
**`Strg`/`Cmd`+Ziehen** = weiteres Rechteck; auch am Spalten-/Zeilenkopf.
- Die **diskontinuierliche Mehrfachauswahl** trägt alle folgenden Aktionen:
@@ -109,6 +120,7 @@ umbenennen, löschen, per Drag sortieren). Zoom 40–200 % pro Blatt
| Tippen / `F2` | Zelle editieren; Enter/Tab committen und ziehen weiter (auch im Bereich) |
| `Pos1` / `Strg`+`Pos1` / `Ende` / `Strg`+`Ende` | Zeilenanfang / A1 / Zeilenende / letzte Zelle |
| `Bild↑` / `Bild↓` | seitenweise (bei festen Tabellen nach Viewport-Höhe) |
| **`Strg`/`Cmd`+`A`** | 1. Druck: zusammenhängender Bereich um die aktive Zelle · 2. Druck: alle befüllten Zellen der Tabelle (s. o. „Zellauswahl") |
| **`Strg`/`Cmd`+`C`/`X`/`V`** | Kopieren / Ausschneiden / Einfügen (Zellen + Formatierung, bezugsangepasst) |
| **`Strg`/`Cmd`+`Z`** · **`Strg`/`Cmd`+`Y`** / **`Strg`/`Cmd`+`Shift`+`Z`** | Rückgängig · Wiederholen (auch als Symbolleisten-Buttons ↶ ↷) |
| **`F4`** (im Editor/in der Formelleiste) | Bezug am Cursor sperren/zyklisch umschalten: `A1` → `$A$1` → `A$1` → `$A1` → `A1`; bei markiertem Text werden **alle** darin gefundenen Bezüge auf einmal umgeschaltet, jeder ausgehend vom eigenen Zustand |
@@ -1097,6 +1109,12 @@ Grundrechenarten: `Übersicht!B2 = =SUM(Umsatz!B2:E2)`, `D2 = =B2-C2`,
vorhanden — die zugrundeliegenden Store-/Engine-Funktionen
(`graphPrecedents`/`graphDependents`/`cellGraphNeighbors`/
`openDependencyGraph`) sind es aber (s. „Tests" oben).
- **`Strg`/`Cmd`+`A`-Zyklus** (s. o. „Zellauswahl") ist rein UI-seitig
(`TableGrid.vue`) implementiert, ohne eigene Unit-Tests — wie bei
Tabellen-Größenänderung und Abhängigkeiten-Panel oben nur live per
Playwright verifiziert (Stufe 1 auf eine von zwei durch eine leere Spalte
getrennten Dateninseln, Eskalation auf Stufe 2, Verharren auf Stufe 2 bei
weiteren Drücken, Rücksetzen des Zyklus durch einen Klick dazwischen).
- **Objekt-Bezüge beim Anhängen.** Beim JSON-*Anhängen* zweier Dokumente werden
nur Blatt-/Objekt-IDs neu vergeben, nicht Tabellennamen. Kollidiert ein
angehängter Tabellenname mit einem bestehenden, gewinnt bei der Auflösung der