diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index 586c6309..8e02e0e6 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -688,6 +688,7 @@ class GuiMain(QMainWindow): logger.debug("Viewing document with handle '%s'", tHandle) if self.docViewer.loadText(tHandle): if not self.splitView.isVisible(): + cursorVisible = self.docEditor.cursorIsVisible() bPos = self.splitMain.sizes() self.splitView.setVisible(True) vPos = [0, 0] @@ -696,6 +697,11 @@ class GuiMain(QMainWindow): self.splitDocs.setSizes(vPos) self.docViewerPanel.setVisible(CONFIG.showViewerPanel) + # Since editor width changes, we need to make sure we + # restore cursor visibility in the editor. See #1302 + if cursorVisible: + self.docEditor.ensureCursorVisibleNoCentre() + if sTitle: self.docViewer.navigateTo(f"#{sTitle}") @@ -1113,11 +1119,18 @@ class GuiMain(QMainWindow): # Only reset the last handle if the user called this SHARED.project.data.setLastHandle(None, "viewer") + cursorVisible = self.docEditor.cursorIsVisible() + # Hide the panel bPos = self.splitMain.sizes() self.splitView.setVisible(False) self.splitDocs.setSizes([bPos[1], 0]) + # Since editor width changes, we need to make sure we restore + # cursor visibility in the editor. See #1302 + if cursorVisible: + self.docEditor.ensureCursorVisibleNoCentre() + return not self.splitView.isVisible() def toggleFullScreenMode(self) -> None: