Fix setting of QWebSettings with empty strings.

This commit is contained in:
Florian Bruhin 2014-12-28 22:44:40 +01:00
parent b703028411
commit bb1a1b80aa

View File

@ -34,7 +34,8 @@ from PyQt5.QtCore import QStandardPaths
from qutebrowser.config import config from qutebrowser.config import config
from qutebrowser.utils import usertypes, standarddir, objreg from qutebrowser.utils import usertypes, standarddir, objreg
MapType = usertypes.enum('MapType', ['attribute', 'setter', 'static_setter']) MapType = usertypes.enum('MapType', ['attribute', 'setter', 'setter_none',
'static_setter'])
MAPPINGS = { MAPPINGS = {
@ -70,22 +71,22 @@ MAPPINGS = {
}, },
'fonts': { 'fonts': {
'web-family-standard': 'web-family-standard':
(MapType.setter, lambda qws, v: (MapType.setter_none, lambda qws, v:
qws.setFontFamily(QWebSettings.StandardFont, v)), qws.setFontFamily(QWebSettings.StandardFont, v)),
'web-family-fixed': 'web-family-fixed':
(MapType.setter, lambda qws, v: (MapType.setter_none, lambda qws, v:
qws.setFontFamily(QWebSettings.FixedFont, v)), qws.setFontFamily(QWebSettings.FixedFont, v)),
'web-family-serif': 'web-family-serif':
(MapType.setter, lambda qws, v: (MapType.setter_none, lambda qws, v:
qws.setFontFamily(QWebSettings.SerifFont, v)), qws.setFontFamily(QWebSettings.SerifFont, v)),
'web-family-sans-serif': 'web-family-sans-serif':
(MapType.setter, lambda qws, v: (MapType.setter_none, lambda qws, v:
qws.setFontFamily(QWebSettings.SansSerifFont, v)), qws.setFontFamily(QWebSettings.SansSerifFont, v)),
'web-family-cursive': 'web-family-cursive':
(MapType.setter, lambda qws, v: (MapType.setter_none, lambda qws, v:
qws.setFontFamily(QWebSettings.CursiveFont, v)), qws.setFontFamily(QWebSettings.CursiveFont, v)),
'web-family-fantasy': 'web-family-fantasy':
(MapType.setter, lambda qws, v: (MapType.setter_none, lambda qws, v:
qws.setFontFamily(QWebSettings.FantasyFont, v)), qws.setFontFamily(QWebSettings.FantasyFont, v)),
'web-size-minimum': 'web-size-minimum':
(MapType.setter, lambda qws, v: (MapType.setter, lambda qws, v:
@ -106,7 +107,7 @@ MAPPINGS = {
'frame-flattening': 'frame-flattening':
(MapType.attribute, QWebSettings.FrameFlatteningEnabled), (MapType.attribute, QWebSettings.FrameFlatteningEnabled),
'user-stylesheet': 'user-stylesheet':
(MapType.setter, lambda qws, v: qws.setUserStyleSheetUrl(v)), (MapType.setter_none, lambda qws, v: qws.setUserStyleSheetUrl(v)),
'css-media-type': 'css-media-type':
(MapType.setter, lambda qws, v: qws.setCSSMediaType(v)), (MapType.setter, lambda qws, v: qws.setCSSMediaType(v)),
#'accelerated-compositing': #'accelerated-compositing':
@ -147,7 +148,8 @@ MAPPINGS = {
'site-specific-quirks': 'site-specific-quirks':
(MapType.attribute, QWebSettings.SiteSpecificQuirksEnabled), (MapType.attribute, QWebSettings.SiteSpecificQuirksEnabled),
'default-encoding': 'default-encoding':
(MapType.setter, lambda qws, v: qws.setDefaultTextEncoding(v)), (MapType.setter_none, lambda qws, v:
qws.setDefaultTextEncoding(v)),
} }
} }
@ -159,8 +161,7 @@ def _set_setting(typ, arg, value):
"""Set a QWebSettings setting. """Set a QWebSettings setting.
Args: Args:
typ: The type of the item typ: The type of the item.
(MapType.attribute/MapType.setter/MapType.static_setter)
arg: The argument (attribute/handler) arg: The argument (attribute/handler)
value: The value to set. value: The value to set.
""" """
@ -168,6 +169,10 @@ def _set_setting(typ, arg, value):
raise TypeError("Type {} is no MapType member!".format(typ)) raise TypeError("Type {} is no MapType member!".format(typ))
if typ == MapType.attribute: if typ == MapType.attribute:
settings.setAttribute(arg, value) settings.setAttribute(arg, value)
elif typ == MapType.setter_none:
if value is None:
value = ""
arg(settings, value)
elif typ == MapType.setter and value is not None: elif typ == MapType.setter and value is not None:
arg(settings, value) arg(settings, value)
elif typ == MapType.static_setter and value is not None: elif typ == MapType.static_setter and value is not None: