From cb19475409e8f4e7d43a3f03a3c6f89d0b078ae4 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 20 May 2024 11:36:30 +0200 Subject: [PATCH] Add font init to viewer, and update manuscript tool preview --- novelwriter/gui/doceditor.py | 20 +++++++------------- novelwriter/gui/docviewer.py | 28 ++++++++++++++++++---------- novelwriter/tools/manuscript.py | 15 ++++++++++----- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py index 3db8fca2..cc3ea2c3 100644 --- a/novelwriter/gui/doceditor.py +++ b/novelwriter/gui/doceditor.py @@ -380,20 +380,14 @@ class GuiDocEditor(QPlainTextEdit): return def initFont(self) -> None: - """Set the font of the widget and document. This needs special - attention since there appears to be a bug in Qt 5.15.3. See - issues #1862 and #1875. + """Set the font of the main widget and sub-widgets. This needs + special attention since there appears to be a bug in Qt 5.15.3. + See issues #1862 and #1875. """ - wFont = self.font() - wFont.setFamily(CONFIG.textFont) - wFont.setPointSize(CONFIG.textSize) - - dFont = self._qDocument.defaultFont() - dFont.setFamily(CONFIG.textFont) - dFont.setPointSize(CONFIG.textSize) - - self.setFont(wFont) - self._qDocument.setDefaultFont(dFont) + font = self.font() + font.setFamily(CONFIG.textFont) + font.setPointSize(CONFIG.textSize) + self.setFont(font) # Reset sub-widget font to GUI font self.docHeader.setFont(SHARED.theme.guiFont) diff --git a/novelwriter/gui/docviewer.py b/novelwriter/gui/docviewer.py index f5fbec42..d5e0fcdd 100644 --- a/novelwriter/gui/docviewer.py +++ b/novelwriter/gui/docviewer.py @@ -31,10 +31,7 @@ import logging from enum import Enum from PyQt5.QtCore import QPoint, Qt, QUrl, pyqtSignal, pyqtSlot -from PyQt5.QtGui import ( - QCursor, QFont, QMouseEvent, QPalette, QResizeEvent, QTextCursor, - QTextOption -) +from PyQt5.QtGui import QCursor, QMouseEvent, QPalette, QResizeEvent, QTextCursor, QTextOption from PyQt5.QtWidgets import ( QAction, QApplication, QFrame, QHBoxLayout, QLabel, QMenu, QTextBrowser, QToolButton, QWidget @@ -141,12 +138,7 @@ class GuiDocViewer(QTextBrowser): def initViewer(self) -> None: """Set editor settings from main config.""" self._makeStyleSheet() - - # Set Font - font = QFont() - font.setFamily(CONFIG.textFont) - font.setPointSize(CONFIG.textSize) - self.document().setDefaultFont(font) + self.initFont() # Set the widget colours to match syntax theme mainPalette = self.palette() @@ -189,6 +181,22 @@ class GuiDocViewer(QTextBrowser): return + def initFont(self) -> None: + """Set the font of the main widget and sub-widgets. This needs + special attention since there appears to be a bug in Qt 5.15.3. + See issues #1862 and #1875. + """ + font = self.font() + font.setFamily(CONFIG.textFont) + font.setPointSize(CONFIG.textSize) + self.setFont(font) + + # Reset sub-widget font to GUI font + self.docHeader.setFont(SHARED.theme.guiFont) + self.docFooter.setFont(SHARED.theme.guiFont) + + return + def loadText(self, tHandle: str, updateHistory: bool = True) -> bool: """Load text into the viewer from an item handle.""" if not SHARED.project.tree.checkType(tHandle, nwItemType.FILE): diff --git a/novelwriter/tools/manuscript.py b/novelwriter/tools/manuscript.py index 17909a8d..376d8a6a 100644 --- a/novelwriter/tools/manuscript.py +++ b/novelwriter/tools/manuscript.py @@ -31,7 +31,7 @@ from time import time from typing import TYPE_CHECKING from PyQt5.QtCore import Qt, QTimer, QUrl, pyqtSignal, pyqtSlot -from PyQt5.QtGui import QCloseEvent, QColor, QCursor, QFont, QPalette, QResizeEvent +from PyQt5.QtGui import QCloseEvent, QColor, QCursor, QPalette, QResizeEvent from PyQt5.QtPrintSupport import QPrinter, QPrintPreviewDialog from PyQt5.QtWidgets import ( QAbstractItemView, QApplication, QDialog, QFormLayout, QGridLayout, @@ -831,12 +831,17 @@ class _PreviewWidget(QTextBrowser): return def setTextFont(self, family: str, size: int) -> None: - """Set the text font properties.""" - if family: - font = QFont() + """Set the text font properties and then reset for sub-widgets. + This needs special attention since there appears to be a bug in + Qt 5.15.3. See issues #1862 and #1875. + """ + if family and size > 4: + font = self.font() font.setFamily(family) font.setPointSize(size) - self.document().setDefaultFont(font) + self.setFont(font) + self.ageLabel.setFont(SHARED.theme.guiFont) + self.buildProgress.setFont(SHARED.theme.guiFont) return ##