about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-01-24 23:53:46 +0100
committerbptato <nincsnevem662@gmail.com>2022-01-24 23:53:46 +0100
commit16fa06be2a19780759195251c4a1f242ee0f8d10 (patch)
tree30a02abfaa50b79cd2e1c75721bf182580e1ca37
parent2a94a2709e4a6784a1269c7afe77f7125c900d1a (diff)
downloadchawan-16fa06be2a19780759195251c4a1f242ee0f8d10.tar.gz
Fix author style sheet assignment
-rw-r--r--src/css/cascade.nim11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/css/cascade.nim b/src/css/cascade.nim
index c7fd2fd5..fe3a08fd 100644
--- a/src/css/cascade.nim
+++ b/src/css/cascade.nim
@@ -165,10 +165,18 @@ proc applyRules(document: Document, ua, user: CSSStylesheet) =
 
   stack.add(document.root)
 
+  var lastlen = 0
+
   while stack.len > 0:
     let elem = stack.pop()
 
+    # Add a nil after the last element, so we can remove the stylesheets
+    if elem == nil:
+      embedded_rules.setLen(embedded_rules.len - lastlen)
+      continue
+
     embedded_rules.add(elem.sheets)
+    lastlen = elem.sheets.len
 
     if not elem.cssapplied:
       let prev = elem.css
@@ -191,11 +199,10 @@ proc applyRules(document: Document, ua, user: CSSStylesheet) =
 
       elem.checkRendered(prev, ppseudo)
 
+    stack.add(nil)
     for i in countdown(elem.children.high, 0):
       stack.add(elem.children[i])
 
-    embedded_rules.setLen(embedded_rules.len - elem.sheets.len)
-
 proc applyStylesheets*(document: Document, uass, userss: CSSStylesheet) =
   let uass = uass.applyMediaQuery()
   let userss = userss.applyMediaQuery()