about summary refs log tree commit diff stats
path: root/src/css/render.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/css/render.nim')
-rw-r--r--src/css/render.nim15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/css/render.nim b/src/css/render.nim
index d613fb9c..3065a5d6 100644
--- a/src/css/render.nim
+++ b/src/css/render.nim
@@ -424,7 +424,7 @@ proc inheritClipBox(box: BlockBox; parent: CSSBox) =
       clipBox.send.x = min(offset.x + box.state.size.w, clipBox.send.x)
     else: # scroll like
       clipBox.start.x = max(min(offset.x, clipBox.start.x), 0)
-      clipBox.send.x = max(offset.x + box.state.size.w, clipBox.start.x)
+      clipBox.send.x = max(offset.x + box.state.size.w, clipBox.send.x)
     if overflowY in OverflowHiddenLike:
       clipBox.start.y = max(offset.y, clipBox.start.y)
       clipBox.send.y = min(offset.y + box.state.size.h, clipBox.send.y)
@@ -435,9 +435,9 @@ proc renderBlock(grid: var FlexibleGrid; state: var RenderState;
   if box.positioned and not pass2:
     return
   let offset = offset + box.state.offset
-  box.render.offset = offset
-  box.render.positioned = true
   if not pass2:
+    box.render.offset = offset
+    box.render.positioned = true
     box.inheritClipBox(box.parent)
   let opacity = box.computed{"opacity"}
   if box.computed{"visibility"} == VisibilityVisible and opacity != 0:
@@ -493,7 +493,8 @@ proc resolveBlockParent(box: CSSBox): BlockBox =
       break
     it = it.parent
   var toPosition: seq[BlockBox] = @[]
-  let findPositioned = box.computed{"position"} in PositionAbsoluteFixed
+  let findPositioned = box.positioned and
+    box.computed{"position"} in PositionAbsoluteFixed
   var it2 {.cursor.} = it
   var parent {.cursor.}: CSSBox = nil
   while it2 != nil:
@@ -516,7 +517,11 @@ proc resolveBlockParent(box: CSSBox): BlockBox =
     parent = it
   if box of BlockBox:
     let box = BlockBox(box)
-    box.render.clipBox = DefaultClipBox
+    box.render = BoxRenderState(
+      positioned: true,
+      offset: offset + box.state.offset,
+      clipBox: DefaultClipBox
+    )
     if findPositioned:
       box.inheritClipBox(it2)
     else: