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 7975cf8..fbe4526 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 @@ -13,6 +13,7 @@ import com.dlsc.pdfviewfx.PDFView; import javafx.application.Platform; import javafx.geometry.Insets; import javafx.geometry.Pos; +import javafx.scene.input.ScrollEvent; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.ProgressIndicator; @@ -104,6 +105,11 @@ public final class PdfPreviewPane { pdfView.setShowToolBar(false); pdfView.setId("pdf-preview-view"); + // Bug #27: Mausrad-Scrollevents abfangen, damit PDFView keinen Seitenwechsel auslöst. + // Das Mausrad soll ausschließlich innerhalb der aktuellen Seite scrollen. + // Seitenwechsel sind nur über die Navigations-Buttons erlaubt. + pdfView.addEventFilter(ScrollEvent.SCROLL, ScrollEvent::consume); + overlayLabel.setId("pdf-preview-overlay-label"); overlayLabel.setStyle("-fx-text-fill: #555555;"); overlayLabel.setWrapText(true); @@ -240,11 +246,11 @@ public final class PdfPreviewPane { return; } int targetPage = currentPage - 1; - // PDFView navigiert intern zur vorherigen Seite (0-basiert) - pdfView.setPage(targetPage - 1); currentPage = targetPage; updatePageLabel(); updateNavigationButtons(); + // Bug #29: Seite nach dem Layout-Pass von oben anzeigen (0-basierter Index) + Platform.runLater(() -> pdfView.setPage(targetPage - 1)); } private void navigateToNextPage() { @@ -252,10 +258,11 @@ public final class PdfPreviewPane { return; } int targetPage = currentPage + 1; - pdfView.setPage(targetPage - 1); currentPage = targetPage; updatePageLabel(); updateNavigationButtons(); + // Bug #29: Seite nach dem Layout-Pass von oben anzeigen (0-basierter Index) + Platform.runLater(() -> pdfView.setPage(targetPage - 1)); } // --- Asynchrones Laden --------------------------------------------------- @@ -314,6 +321,8 @@ public final class PdfPreviewPane { showContent(); updateNavigationButtons(); updatePageLabel(); + // Bug #29: Zum Seitenanfang scrollen, nachdem der Layout-Pass abgeschlossen ist + Platform.runLater(() -> pdfView.setPage(0)); LOG.debug("PDF-Vorschau: Rendering erfolgreich – {} Seite(n)", totalPages); } catch (Exception e) { String msg = classifyLoadException(e);