From 2c304b2bdd6cf1d894a51aec4d49635c6e547745 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:21:08 +0200 Subject: [PATCH] Made the doc viewer more fail tolerant --- nw/gui/docviewer.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/nw/gui/docviewer.py b/nw/gui/docviewer.py index 3c4f86b9..0624a321 100644 --- a/nw/gui/docviewer.py +++ b/nw/gui/docviewer.py @@ -135,11 +135,22 @@ class GuiDocViewer(QTextBrowser): aDoc = ToHtml(self.theProject, self.theParent) aDoc.setPreview(True, self.mainConf.viewComments) aDoc.setLinkHeaders(True) - aDoc.setText(tHandle) - aDoc.doAutoReplace() - aDoc.tokenizeText() - aDoc.doConvert() - aDoc.doPostProcessing() + + # Be extra careful here to prevent crashes when first opening a + # project as a crash here leaves no way of recovering. + # See issue #298 + try: + aDoc.setText(tHandle) + aDoc.doAutoReplace() + aDoc.tokenizeText() + aDoc.doConvert() + aDoc.doPostProcessing() + except Exception as e: + logger.error("Failed to generate preview for document with handle '%s'" % tHandle) + logger.error(str(e)) + self.setText("An error occurred while generating the preview.") + return False + self.setHtml(aDoc.theResult) if self.theHandle == tHandle: self.verticalScrollBar().setValue(sPos)