diff --git a/novelwriter/tools/manuscript.py b/novelwriter/tools/manuscript.py index 68a30f6f..ed25277b 100644 --- a/novelwriter/tools/manuscript.py +++ b/novelwriter/tools/manuscript.py @@ -752,6 +752,7 @@ class _PreviewWidget(QTextBrowser): self._docTime = 0 self._buildName = "" + self._scrollPos = 0 # Document Setup dPalette = self.palette() @@ -848,6 +849,7 @@ class _PreviewWidget(QTextBrowser): self.buildProgress.setValue(0) self.buildProgress.setCentreText(None) self.buildProgress.setVisible(True) + self._scrollPos = self.verticalScrollBar().value() self.setPlaceholderText("") self.clear() return @@ -860,7 +862,6 @@ class _PreviewWidget(QTextBrowser): def setContent(self, data: dict) -> None: """Set the content of the preview widget.""" - sPos = self.verticalScrollBar().value() QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor)) self.buildProgress.setCentreText(self.tr("Processing ...")) @@ -877,7 +878,6 @@ class _PreviewWidget(QTextBrowser): cursor = self.textCursor() cursor.insertText("\t") - self.verticalScrollBar().setValue(sPos) self._docTime = checkInt(data.get("time"), 0) self._updateBuildAge() @@ -888,7 +888,7 @@ class _PreviewWidget(QTextBrowser): self.buildProgress.setCentreText(self.tr("Done")) QApplication.restoreOverrideCursor() QApplication.processEvents() - QTimer.singleShot(300, self._hideProgress) + QTimer.singleShot(300, self._postUpdate) return @@ -943,9 +943,10 @@ class _PreviewWidget(QTextBrowser): return @pyqtSlot() - def _hideProgress(self) -> None: - """Clean up the build progress bar.""" + def _postUpdate(self) -> None: + """Run tasks after content update.""" self.buildProgress.setVisible(False) + self.verticalScrollBar().setValue(self._scrollPos) return ## diff --git a/tests/test_tools/test_tools_manuscript.py b/tests/test_tools/test_tools_manuscript.py index 5e80767f..b8856516 100644 --- a/tests/test_tools/test_tools_manuscript.py +++ b/tests/test_tools/test_tools_manuscript.py @@ -270,7 +270,7 @@ def testManuscript_Features(monkeypatch, qtbot, nwGUI, projPath, mockRnd): assert manus.docPreview.document().defaultTextOption().alignment() == QtAlignAbsolute # Tests are too fast to trigger this one, so we trigger it manually to ensure it isn't failing - manus.docPreview._hideProgress() + manus.docPreview._postUpdate() # Builds # ======