From 83187c517f6e393a34b77f64d9821b24fc90be3d Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 18 Nov 2023 15:56:03 +0100 Subject: [PATCH] Ensure cursor is visible after showing or closing the document viewer (#1302) --- novelwriter/guimain.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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: