From 265b807263b4f587a6b907b7cf0e223ace2599ee Mon Sep 17 00:00:00 2001 From: Marcus van Elst Date: Tue, 5 May 2026 14:51:08 +0200 Subject: [PATCH] Entferne wirkungslosen H/V-Workaround in resetToFitView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bei aktivem fitToWidth/fitToHeight hat der ScrollPane keinen scrollbaren Bereich – setHvalue(0.5)/setVvalue(0.5) sind in diesem Zustand wirkungslos. Die Wiederherstellung der Property-Bindungen fitWidth/fitHeight an viewStack versetzt den ImageView in exakt denselben Zustand wie nach der initialen Konstruktor-Initialisierung. Der StackPane zentriert dann automatisch über die bereits gesetzte Pos.CENTER-Ausrichtung. Co-Authored-By: Claude Sonnet 4.6 --- .../in/gui/batchrun/PdfPreviewPane.java | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java index 9f7ed51..e1b023d 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/PdfPreviewPane.java @@ -708,11 +708,13 @@ public final class PdfPreviewPane { * Setzt Zoom, Akkumulator und Pan-Zustand zurück und reaktiviert den Fit-to-View-Modus. * Wird beim Laden einer neuen Datei und beim Leeren der Komponente aufgerufen. * - *

Nach dem Reaktivieren von {@code fitToWidth} werden H- und V-Scroll-Werte - * explizit auf 0.5 gesetzt (nach einem {@code layout()}-Aufruf, damit die neuen - * Inhaltsgrenzen bekannt sind). Ohne diesen Schritt trägt der ScrollPane ggf. noch - * die H/V-Werte aus dem vorherigen Zoom-/Pan-Zustand und zeigt die PDF nach dem - * Reset nicht zentriert an. + *

Die Property-Bindungen von {@code fitWidth}/{@code fitHeight} an + * {@code viewStack.widthProperty()}/{@code viewStack.heightProperty()} werden + * wiederhergestellt – damit ist der ImageView-Zustand identisch zum initialen + * Zustand aus dem Konstruktor. Der {@link StackPane} zentriert den ImageView + * dann automatisch über die zuvor gesetzte {@code Pos.CENTER}-Ausrichtung; + * eine explizite H/V-Wert-Manipulation am ScrollPane ist im fit-Modus + * wirkungslos und daher nicht nötig. */ private void resetToFitView() { zoomLevel = 1.0; @@ -727,16 +729,6 @@ public final class PdfPreviewPane { imageView.fitHeightProperty().bind(viewStack.heightProperty()); scrollPane.setFitToWidth(true); scrollPane.setFitToHeight(true); - // Zentrierung sicherstellen: layout() im ersten runLater abschließen, - // H/V im zweiten runLater setzen – garantiert, dass das Layout vollständig - // abgeschlossen ist, bevor die Scroll-Werte gesetzt werden - Platform.runLater(() -> { - scrollPane.layout(); - Platform.runLater(() -> { - scrollPane.setHvalue(0.5); - scrollPane.setVvalue(0.5); - }); - }); } }