From 7c643ea698ba21271ed293b029ee636af6f7a0ef Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sat, 9 Jan 2021 19:53:42 +0100 Subject: [PATCH] Make sure document edit status is not set on non-text changes --- nw/gui/doceditor.py | 12 ++++++++++-- nw/guimain.py | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/nw/gui/doceditor.py b/nw/gui/doceditor.py index f782fa62..c2978b00 100644 --- a/nw/gui/doceditor.py +++ b/nw/gui/doceditor.py @@ -316,7 +316,6 @@ class GuiDocEditor(QTextEdit): self.lastEdit = time() self._runCounter() self.wcTimer.start() - self.setDocumentChanged(False) self.theHandle = tHandle self.setReadOnly(False) @@ -341,6 +340,9 @@ class GuiDocEditor(QTextEdit): self.docFooter.updateLineCount() self.lengthLast = self.qDocument.characterCount() + qApp.processEvents() + self.setDocumentChanged(False) + qApp.restoreOverrideCursor() return True @@ -373,8 +375,8 @@ class GuiDocEditor(QTextEdit): qApp.setOverrideCursor(QCursor(Qt.WaitCursor)) self.setPlainText(theText) - self.setDocumentChanged(True) self.updateDocMargins() + self.setDocumentChanged(True) qApp.restoreOverrideCursor() return True @@ -450,11 +452,17 @@ class GuiDocEditor(QTextEdit): lM = max(cM, fH) self.setViewportMargins(tM, uM, tM, lM) + docChanged = self.docChanged if self.mainConf.scrollPastEnd: docFrame = self.qDocument.rootFrame().frameFormat() docFrame.setBottomMargin(max(0, 0.6*(wH - uM - lM - 4*tB))) self.qDocument.rootFrame().setFrameFormat(docFrame) + # This is needed as the setFrameFormat function itself will + # trigger the contetsChanged signal which sets docChanged, so we + # set it back to whatever it was before. + self.setDocumentChanged(docChanged) + return def updateDocInfo(self, tHandle): diff --git a/nw/guimain.py b/nw/guimain.py index c7ad7e55..11ebbdff 100644 --- a/nw/guimain.py +++ b/nw/guimain.py @@ -432,6 +432,7 @@ class GuiMain(QMainWindow): # Restore previously open documents, if any if self.theProject.lastEdited is not None: self.openDocument(self.theProject.lastEdited, doScroll=True) + if self.theProject.lastViewed is not None: self.viewDocument(self.theProject.lastViewed) @@ -439,6 +440,12 @@ class GuiMain(QMainWindow): if self.theIndex.indexBroken: self.rebuildIndex() + # Make sure the changed status is set to false on all that was + # just opened + qApp.processEvents() + self.docEditor.setDocumentChanged(False) + self.theProject.setProjectChanged(False) + logger.debug("Project load complete") return True