Größenänderungs-Verhalten der Tabellenmodi vertauscht

Der SE-Griff-Effekt war genau falsch herum zugeordnet: "Automatisch"-
Tabellen (Größe folgt immer dem Inhalt) sollen beim Ziehen die Zeilen-/
Spaltenzahl ändern, "Feste Größe"-Tabellen (expliziter, unabhängig
wählbarer Scroll-Viewport) sollen unverändert nur den Pixel-Viewport
ändern.

- "Automatisch": Ziehen zeigt ein gestricheltes Vorschau-Rechteck (die
  eigentliche Zeilen-/Spaltenänderung ist teuer -- voller Workbook-Rebuild
  -- und committet daher erst beim Loslassen, nicht live). Wachsen fügt
  leere Zeilen/Spalten hinzu, Schrumpfen entfernt sie nie über echten
  Zellinhalt hinweg (gleicher Inhaltsschutz wie zuvor, nur am richtigen
  Modus).
- "Feste Größe": zurück auf reines Pixel-Viewport-Resize, unabhängig von
  der Zeilen-/Spaltenzahl -- das ursprüngliche Verhalten.
- Die dadurch tot gewordene alte "Automatisch"-Funktion (proportionale
  Spaltenbreiten-Skalierung beim Ziehen) entfernt (scaleTableColumns),
  keine andere Stelle rief sie noch auf.

vue-tsc/eslint/build sauber, Playwright-live-verifiziert (Automatisch:
Wachsen 12×8→19×11, hartes Schrumpfen klemmt auf 6×5 mit erhaltenem
Inhalt; Feste Größe: Zeilen-/Spaltenzahl bleibt bei Viewport-Resize
unverändert).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
wkh
2026-09-08 23:26:54 +02:00
co-authored by Claude Sonnet 5
parent 8a7fafcd7a
commit 3594b12615
3 changed files with 81 additions and 59 deletions
-10
View File
@@ -1381,15 +1381,6 @@ function createStore() {
const t = tableById(tableId);
if (t) t.colWidths[col] = Math.max(MIN_COL_W, Math.round(width));
}
/** Numbers-style proportional resize: scale every column width by `factor`. */
function scaleTableColumns(tableId: string, factor: number, base: number) {
const t = tableById(tableId);
if (!t) return;
for (let c = 0; c < t.cols; c++) {
const cur = t.colWidths[c] ?? base;
t.colWidths[c] = Math.max(MIN_COL_W, Math.round(cur * factor));
}
}
/** Height of one row (per-row override, else the table default). */
function rowHeightOf(tableId: string, row: number): number {
const t = tableById(tableId);
@@ -2241,7 +2232,6 @@ function createStore() {
removeLastRow,
removeLastColumn,
setColWidth,
scaleTableColumns,
setRowHeight,
setTableRowHeight,
rowHeightOf,