a8d8a4a3c1
Beim ersten Zoom-Schritt sprang die ImageView abrupt von der visuell sichtbaren Breite (durch fitHeight aspekt-erhaltend verkleinert) auf naturalViewportWidth × zoomLevel, weil zoomLevel mit dem Wert 1.0 nicht zur tatsächlich angezeigten Skalierung passte und gleichzeitig setFitHeight(0) die Höhenrestriktion entfernte. applyZoom() initialisiert nun beim Verlassen des Fit-Modus zoomLevel auf currentVisualWidth / naturalImageWidth (= aktueller visueller Skalierungsfaktor) und setzt naturalViewportWidth auf die natürliche Bildbreite. Damit entspricht zoomLevel = 1.0 der pixel-genauen Originaldarstellung. Der vom Caller intendierte Delta-Schritt wird vor der Kalibrierung gesichert und nach der Kalibrierung auf den neuen zoomLevel re-appliziert, damit applyZoom(zoomLevel + 0.10) nicht unverändert auf den kalibrierten Wert feuert. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>