diff --git a/CHANGELOG.md b/CHANGELOG.md index 9913126e..258ad586 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,39 @@ # novelWriter Changelog +## Version 2.0.6 [2023-02-26] + +### Release Notes + +This is a patch release that fixes a few minor bugs and a broken feature. + +When opening a document from the Novel Tree or Outline View, the Project Tree would receive focus +even when it was hidden. This has been corrected and no focus change is made. The Project Tree now +also receives focus automatically when a new Project Item is created. + +The backlinks in the Reference Panel below the Document Viewer were no longer working. They have +now been fixed. They were broken due to a change in the link format in 2.0. + +### Detailed Changelog + +**Bugfixes** + +* The Reference Panel link would no longer recognise the new, shorter links after the 2.0 project + index change. The explicit check has now been made more lenient and will accept any link that is + at least 13 characters long (the length of a document handle). Test coverage has been added for + handling Reference Panel links. Issue #1378. PR #1379. +* The `setSelectedItem` method of the project tree class had a `setFocus()` call. It should not do + this as global focus is handled by the main GUI class, and doing this explicitly in the + `setSelectedItem` method is presumptuous. Issue #1369. PR #1379. + +**Usability Fixes** + +* When creating new items in the project tree via shortcuts, the project tree receives focus. Since + these actions can be accessed when the project tree does not have focus, a user would have to + switch focus to be able to open new items. The tree now automatically receives focus when a new + item is created. Issue #1376. PR #1379. + +---- + ## Version 2.0.5 [2023-02-12] ### Release Notes diff --git a/docs/source/tech_storage.rst b/docs/source/tech_storage.rst index e833c135..1affa04f 100644 --- a/docs/source/tech_storage.rst +++ b/docs/source/tech_storage.rst @@ -4,7 +4,6 @@ How Data is Stored ****************** -.. _File Format Spec 1.5: _static/fileformatspec15.pdf .. _documentation: https://novelwriter.readthedocs.io This section contains details of how novelWriter stores and handles the project data. @@ -48,8 +47,8 @@ various meta data entries incremented, on each save. .. only:: html - A full description of the current file format is available in the `File Format Spec 1.5`_ - document, available as a PDF. + A full description of the current file format is available in the + :download:`File Format Spec 1.5 ` document, available as a PDF. Project Documents diff --git a/novelwriter/assets/text/release_notes.htm b/novelwriter/assets/text/release_notes.htm index 984fe27b..9b6a7b55 100644 --- a/novelwriter/assets/text/release_notes.htm +++ b/novelwriter/assets/text/release_notes.htm @@ -126,5 +126,14 @@ to ODF 1.3 extended format, and passes validation.

An Italian translation has been added, and Russian is currently available for project builds. A full translation into Russian is on its way.

+

Patch 2.0.6 – 26 February 2023

+ +

This is a patch release that fixes a few minor bugs and a broken feature.

+

When opening a document from the Novel Tree or Outline View, the Project Tree would receive +focus even when it was hidden. This has been corrected and no focus change is made. The Project +Tree now also receives focus automatically when a new Project Item is created.

+

The backlinks in the Reference Panel below the Document Viewer were no longer working. They have +now been fixed. They were broken due to a change in the link format in 2.0.

+ diff --git a/novelwriter/gui/docviewer.py b/novelwriter/gui/docviewer.py index c111f6a1..2449688d 100644 --- a/novelwriter/gui/docviewer.py +++ b/novelwriter/gui/docviewer.py @@ -1201,17 +1201,18 @@ class GuiDocViewDetails(QScrollArea): return ## - # Internal Functions + # Private Slots ## + @pyqtSlot(str) def _linkClicked(self, theLink): """Capture the link-click and forward it to the document viewer class for handling. """ logger.debug("Clicked link: '%s'", theLink) - if len(theLink) == 21: + if len(theLink) >= 13: tHandle = theLink[:13] - tAnchor = theLink[13:] + tAnchor = theLink[13:] or None self.mainGui.viewDocument(tHandle, tAnchor) return diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index d2cf564a..df29903b 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -39,7 +39,7 @@ from PyQt5.QtWidgets import ( QVBoxLayout, QWidget ) -from novelwriter.enum import nwDocMode, nwItemType, nwItemClass, nwItemLayout, nwAlert +from novelwriter.enum import nwDocMode, nwItemType, nwItemClass, nwItemLayout, nwAlert, nwWidget from novelwriter.constants import nwHeaders, nwUnicode, trConst, nwLabels from novelwriter.core.coretools import DocMerger, DocSplitter from novelwriter.dialogs.docmerge import GuiDocMerge @@ -630,6 +630,7 @@ class GuiProjectTree(QTreeWidget): # Add the new item to the project tree self.revealNewTreeItem(tHandle, nHandle=nHandle, wordCount=True) + self.mainGui.switchFocus(nwWidget.TREE) return True @@ -1087,7 +1088,6 @@ class GuiProjectTree(QTreeWidget): if tItem is None: return False - self.setFocus() if tHandle in self._treeMap: self.setCurrentItem(self._treeMap[tHandle]) diff --git a/tests/test_gui/test_gui_docviewer.py b/tests/test_gui/test_gui_docviewer.py index 02f6002f..14cf66d0 100644 --- a/tests/test_gui/test_gui_docviewer.py +++ b/tests/test_gui/test_gui_docviewer.py @@ -171,6 +171,19 @@ def testGuiViewer_Main(qtbot, monkeypatch, nwGUI, nwLipsum): assert nwGUI.docViewer.loadText("846352075de7d") is False assert nwGUI.docViewer.toPlainText() == "An error occurred while generating the preview." + # Check reference panel (issue #1378) + assert nwGUI.viewDocument("4c4f28287af27") is True + assert nwGUI.docViewer.toPlainText().startswith("Nobody Owens") + + nwGUI.viewMeta._linkClicked("fb609cd8319dc") + assert nwGUI.docViewer.toPlainText().startswith("Chapter One") + + nwGUI.viewMeta._linkClicked("88243afbe5ed8#T0001") + assert nwGUI.docViewer.toPlainText().startswith("Scene One") + + nwGUI.viewMeta._linkClicked("88243afbe5ed8#ABCD") + assert nwGUI.docViewer.toPlainText().startswith("Scene One") + # qtbot.stop() # END Test testGuiViewer_Main