mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Handle inheritable properties when resolving pseudo elements
This commit is contained in:
parent
36434a4c85
commit
0f1fbf0a8c
@ -208,7 +208,7 @@ def resolve_styles(container, name, select=None, sheet_callback=None):
|
|||||||
style_map = {elem:resolve_declarations(x) for elem, x in style_map.iteritems()}
|
style_map = {elem:resolve_declarations(x) for elem, x in style_map.iteritems()}
|
||||||
pseudo_style_map = {elem:resolve_pseudo_declarations(x) for elem, x in pseudo_style_map.iteritems()}
|
pseudo_style_map = {elem:resolve_pseudo_declarations(x) for elem, x in pseudo_style_map.iteritems()}
|
||||||
|
|
||||||
return partial(resolve_property, style_map), partial(resolve_pseudo_property, pseudo_style_map), select
|
return partial(resolve_property, style_map), partial(resolve_pseudo_property, style_map, pseudo_style_map), select
|
||||||
|
|
||||||
_defvals = None
|
_defvals = None
|
||||||
|
|
||||||
@ -237,12 +237,14 @@ def resolve_property(style_map, elem, name):
|
|||||||
q = q.getparent() if inheritable else None
|
q = q.getparent() if inheritable else None
|
||||||
return defvals().get(name)
|
return defvals().get(name)
|
||||||
|
|
||||||
def resolve_pseudo_property(pseudo_style_map, elem, prop, name):
|
def resolve_pseudo_property(style_map, pseudo_style_map, elem, prop, name):
|
||||||
style_map = pseudo_style_map.get(elem)
|
sub_map = pseudo_style_map.get(elem)
|
||||||
if style_map is not None:
|
if sub_map is not None:
|
||||||
prop_map = style_map.get(prop)
|
prop_map = sub_map.get(prop)
|
||||||
if prop_map is not None:
|
if prop_map is not None:
|
||||||
val = prop_map.get(name)
|
val = prop_map.get(name)
|
||||||
if val is not None:
|
if val is not None:
|
||||||
return val
|
return val
|
||||||
|
if name in INHERITED:
|
||||||
|
return resolve_property(style_map, elem, name)
|
||||||
return defvals().get(name)
|
return defvals().get(name)
|
||||||
|
@ -121,5 +121,8 @@ class CascadeTest(BaseTest):
|
|||||||
t = get_maps('<p></p>', "p:before { content: 'xxx' } p:first-letter { font-weight: bold }", True)
|
t = get_maps('<p></p>', "p:before { content: 'xxx' } p:first-letter { font-weight: bold }", True)
|
||||||
t('p', 'before', 'content', '"xxx"')
|
t('p', 'before', 'content', '"xxx"')
|
||||||
t('p', 'first-letter', 'font-weight', 'bold')
|
t('p', 'first-letter', 'font-weight', 'bold')
|
||||||
t = get_maps('<p></p>', 'p:before { content: xxx }', True)
|
t = get_maps('<p></p>', 'p { font-weight: bold; margin: 11pt } p:before { content: xxx }', True)
|
||||||
t('p', 'before', 'content', 'xxx')
|
t('p', 'before', 'content', 'xxx')
|
||||||
|
t('p', 'before', 'margin-top', '0')
|
||||||
|
t('p', 'before', 'font-weight', 'bold')
|
||||||
|
t('p', 'first-letter', 'content', 'normal')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user