Entferne wirkungslosen H/V-Workaround in resetToFitView
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 <noreply@anthropic.com>
This commit is contained in:
+7
-15
@@ -708,11 +708,13 @@ public final class PdfPreviewPane {
|
|||||||
* Setzt Zoom, Akkumulator und Pan-Zustand zurück und reaktiviert den Fit-to-View-Modus.
|
* 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.
|
* Wird beim Laden einer neuen Datei und beim Leeren der Komponente aufgerufen.
|
||||||
*
|
*
|
||||||
* <p>Nach dem Reaktivieren von {@code fitToWidth} werden H- und V-Scroll-Werte
|
* <p>Die Property-Bindungen von {@code fitWidth}/{@code fitHeight} an
|
||||||
* explizit auf 0.5 gesetzt (nach einem {@code layout()}-Aufruf, damit die neuen
|
* {@code viewStack.widthProperty()}/{@code viewStack.heightProperty()} werden
|
||||||
* Inhaltsgrenzen bekannt sind). Ohne diesen Schritt trägt der ScrollPane ggf. noch
|
* wiederhergestellt – damit ist der ImageView-Zustand identisch zum initialen
|
||||||
* die H/V-Werte aus dem vorherigen Zoom-/Pan-Zustand und zeigt die PDF nach dem
|
* Zustand aus dem Konstruktor. Der {@link StackPane} zentriert den ImageView
|
||||||
* Reset nicht zentriert an.
|
* 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() {
|
private void resetToFitView() {
|
||||||
zoomLevel = 1.0;
|
zoomLevel = 1.0;
|
||||||
@@ -727,16 +729,6 @@ public final class PdfPreviewPane {
|
|||||||
imageView.fitHeightProperty().bind(viewStack.heightProperty());
|
imageView.fitHeightProperty().bind(viewStack.heightProperty());
|
||||||
scrollPane.setFitToWidth(true);
|
scrollPane.setFitToWidth(true);
|
||||||
scrollPane.setFitToHeight(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);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user