PDF-Viewer-Fehler behoben: Mehrfaches Laden von PDFs funktioniert jetzt

Fixes:
- fullsize_label wird nach _clear_layout korrekt auf None gesetzt
- Verhindert, dass beim zweiten PDF-Laden kein Widget erstellt wird
- RuntimeError-Handling für gelöschte C++-Widgets in update_current_display()
- Verbessertes Error-Logging mit logger.error() statt print()

Problem: Nach dem ersten PDF-Laden wurden weitere PDFs nicht mehr angezeigt,
da fullsize_label auf ein gelöschtes Widget zeigte und kein neues erstellt wurde.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-14 20:12:40 +01:00
parent 03449b2fb9
commit 656f9e3b11
+7 -1
View File
@@ -615,7 +615,7 @@ class MainWindow(QMainWindow):
print(f"Performance: Seite {page_num + 1} gerendert in {render_time:.3f}s") print(f"Performance: Seite {page_num + 1} gerendert in {render_time:.3f}s")
except Exception as e: except Exception as e:
print(f"Fehler beim Rendern der Seite {page_num + 1}: {e}") logger.error(f"Fehler beim Rendern der Seite {page_num + 1}: {e}", exc_info=True)
def update_current_display(self): def update_current_display(self):
""" """
@@ -630,6 +630,7 @@ class MainWindow(QMainWindow):
print("Fullsize-Label ist nicht verfügbar") print("Fullsize-Label ist nicht verfügbar")
return return
try:
# Hole die gecachten Pixmaps # Hole die gecachten Pixmaps
ref_pixmap = self.current_rendered_pixmaps["ref"] ref_pixmap = self.current_rendered_pixmaps["ref"]
diff_pixmap = self.current_rendered_pixmaps["diff"] diff_pixmap = self.current_rendered_pixmaps["diff"]
@@ -648,6 +649,10 @@ class MainWindow(QMainWindow):
# Setze das überlagerte Bild # Setze das überlagerte Bild
self.fullsize_label.setPixmap(layered_pixmap) self.fullsize_label.setPixmap(layered_pixmap)
self.fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter) self.fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)
except RuntimeError as e:
# C++-Objekt wurde bereits gelöscht
logger.warning(f"Fullsize-Label wurde bereits gelöscht: {e}")
self.fullsize_label = None
def create_layered_pixmap(self, ref_pixmap, diff_pixmap, new_pixmap, alpha_value): def create_layered_pixmap(self, ref_pixmap, diff_pixmap, new_pixmap, alpha_value):
""" """
@@ -1382,6 +1387,7 @@ class MainWindow(QMainWindow):
self.thumbnail_to_page = {} self.thumbnail_to_page = {}
self.pdf_documents = {} self.pdf_documents = {}
self.current_rendered_pixmaps = None self.current_rendered_pixmaps = None
self.fullsize_label = None # Label wurde durch _clear_layout gelöscht
# Alle drei PDF-Dateien öffnen mit QtPdf # Alle drei PDF-Dateien öffnen mit QtPdf
diff_doc = QPdfDocument() diff_doc = QPdfDocument()