From ea591fe707c64375ed87e944c83b26034e7954cb Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Fri, 8 Nov 2024 17:31:23 +0100 Subject: [PATCH] Fix bug in outline view preserving details panel split position --- novelwriter/gui/outline.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/novelwriter/gui/outline.py b/novelwriter/gui/outline.py index cae1cec3..718caee0 100644 --- a/novelwriter/gui/outline.py +++ b/novelwriter/gui/outline.py @@ -141,8 +141,10 @@ class GuiOutlineView(QWidget): def closeProjectTasks(self) -> None: """Run closing project tasks.""" + if self.outlineTree.wasRendered: + # If the panel hasn't been drawn yet, those values are incorrect + self.outlineData.saveGuiSettings() self.outlineTree.closeProjectTasks() - self.outlineData.saveGuiSettings() self.outlineData.updateClasses() self.clearOutline() return @@ -434,6 +436,11 @@ class GuiOutlineTree(QTreeWidget): def hiddenColumns(self) -> dict[nwOutline, bool]: return self._colHidden + @property + def wasRendered(self) -> bool: + """Returns True after the Outline has been rendered once.""" + return not self._firstView + ## # Methods ## @@ -947,11 +954,12 @@ class GuiOutlineDetails(QScrollArea): def loadGuiSettings(self) -> None: """Run open project tasks.""" - half = self.width() // 2 + parent = self.outlineView.parent() # This widget is rendered already + width = parent.width() if isinstance(parent, QWidget) else 1000 pOptions = SHARED.project.options self.mainSplit.setSizes([ - CONFIG.pxInt(pOptions.getInt("GuiOutlineDetails", "detailsWidth", half)), - CONFIG.pxInt(pOptions.getInt("GuiOutlineDetails", "tagsWidth", half)) + CONFIG.pxInt(pOptions.getInt("GuiOutlineDetails", "detailsWidth", width//3)), + CONFIG.pxInt(pOptions.getInt("GuiOutlineDetails", "tagsWidth", 2*width//3)) ]) return