From b76c76390ece7f9bf27d9167e7564f34624cbccb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 31 Dec 2021 21:36:53 +0530 Subject: [PATCH] Workaround for PyQt6 missing QWebEngine::defaultSettings() --- src/calibre/gui2/tweak_book/preferences.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/tweak_book/preferences.py b/src/calibre/gui2/tweak_book/preferences.py index c15cc57740..09a73adb9d 100644 --- a/src/calibre/gui2/tweak_book/preferences.py +++ b/src/calibre/gui2/tweak_book/preferences.py @@ -344,12 +344,23 @@ class PreviewSettings(BasicSettings): # {{{ BasicSettings.__init__(self, parent) self.l = l = QFormLayout(self) self.setLayout(l) + self.default_font_settings = {} def default_font(which): - from qt.webengine import QWebEngineSettings - s = QWebEngineSettings.defaultSettings() - which = getattr(s, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[which]) - return s.fontFamily(which) + if not self.default_font_settings: + from qt.webengine import QWebEngineSettings + try: + s = QWebEngineSettings.defaultSettings() + except AttributeError: # PyQt6 bug + from qt.webengine import QWebEnginePage + page = QWebEnginePage() + s = page.settings() + self.default_font_settings = { + 'serif': s.fontFamily(QWebEngineSettings.FontFamily.SerifFont), + 'sans': s.fontFamily(QWebEngineSettings.FontFamily.SansSerifFont), + 'mono': s.fontFamily(QWebEngineSettings.FontFamily.FixedFont), + } + return self.default_font_settings[which] def family_getter(which, w): ans = str(w.currentFont().family())