Workaround for PyQt6 missing QWebEngine::defaultSettings()

This commit is contained in:
Kovid Goyal 2021-12-31 21:36:53 +05:30
parent a1a4d3ecc9
commit b76c76390e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -344,12 +344,23 @@ class PreviewSettings(BasicSettings): # {{{
BasicSettings.__init__(self, parent) BasicSettings.__init__(self, parent)
self.l = l = QFormLayout(self) self.l = l = QFormLayout(self)
self.setLayout(l) self.setLayout(l)
self.default_font_settings = {}
def default_font(which): def default_font(which):
if not self.default_font_settings:
from qt.webengine import QWebEngineSettings from qt.webengine import QWebEngineSettings
try:
s = QWebEngineSettings.defaultSettings() s = QWebEngineSettings.defaultSettings()
which = getattr(s, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[which]) except AttributeError: # PyQt6 bug
return s.fontFamily(which) 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): def family_getter(which, w):
ans = str(w.currentFont().family()) ans = str(w.currentFont().family())