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:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user