Do not remove stroke:none; if a differing value would be inherited from a parent
(fixes rest of #22)
This commit is contained in:
parent
0b5eab7f2f
commit
0b5bb5184c
1 changed files with 31 additions and 3 deletions
|
|
@ -1468,9 +1468,9 @@ def repairStyle(node, options):
|
||||||
if strokestyle in styleMap and not styleInheritedByChild(node, strokestyle):
|
if strokestyle in styleMap and not styleInheritedByChild(node, strokestyle):
|
||||||
del styleMap[strokestyle]
|
del styleMap[strokestyle]
|
||||||
num += 1
|
num += 1
|
||||||
# TODO: This is actually a problem if a parent element has a specified stroke
|
|
||||||
# we need to properly calculate computed values
|
# we need to properly calculate computed values
|
||||||
if not styleInheritedByChild(node, 'stroke'):
|
if not styleInheritedByChild(node, 'stroke'):
|
||||||
|
if styleInheritedFromParent(node, 'stroke') in [None, 'none']:
|
||||||
del styleMap['stroke']
|
del styleMap['stroke']
|
||||||
num += 1
|
num += 1
|
||||||
|
|
||||||
|
|
@ -1564,6 +1564,34 @@ def repairStyle(node, options):
|
||||||
|
|
||||||
return num
|
return num
|
||||||
|
|
||||||
|
def styleInheritedFromParent(node, style):
|
||||||
|
"""
|
||||||
|
Returns the value of 'style' that is inherited from the parents of the passed-in node
|
||||||
|
|
||||||
|
Warning: This method only considers presentation attributes and inline styles,
|
||||||
|
any style sheets are ignored!
|
||||||
|
"""
|
||||||
|
parentNode = node.parentNode;
|
||||||
|
|
||||||
|
# return None if we reached the Document element
|
||||||
|
if parentNode.nodeType == 9:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# check styles first (they take precedence over presentation attributes)
|
||||||
|
styles = _getStyle(parentNode)
|
||||||
|
if style in styles.keys():
|
||||||
|
value = styles[style]
|
||||||
|
if not value == 'inherit':
|
||||||
|
return value
|
||||||
|
|
||||||
|
# check attributes
|
||||||
|
value = parentNode.getAttribute(style)
|
||||||
|
if value not in ['', 'inherit']:
|
||||||
|
return parentNode.getAttribute(style)
|
||||||
|
|
||||||
|
# check the next parent recursively if we did not find a value yet
|
||||||
|
return styleInheritedFromParent(parentNode, style)
|
||||||
|
|
||||||
def styleInheritedByChild(node, style, nodeIsChild=False):
|
def styleInheritedByChild(node, style, nodeIsChild=False):
|
||||||
"""
|
"""
|
||||||
Returns whether 'style' is inherited by any children of the passed-in node
|
Returns whether 'style' is inherited by any children of the passed-in node
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue