about summary refs log tree commit diff stats
path: root/src/layout
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-01-26 15:49:41 +0100
committerbptato <nincsnevem662@gmail.com>2022-01-26 15:49:41 +0100
commitef37b1119ec78801ab72a76dc750c0b8bfd52af5 (patch)
tree07e93271d3fdf27b945ea2368a3eb36423e99e59 /src/layout
parent0cdcb6b2646e6753b99e66a974040fc6d71d7dfd (diff)
downloadchawan-ef37b1119ec78801ab72a76dc750c0b8bfd52af5.tar.gz
Fix whitespace styling
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/box.nim3
-rw-r--r--src/layout/engine.nim8
2 files changed, 9 insertions, 2 deletions
diff --git a/src/layout/box.nim b/src/layout/box.nim
index d461f0f5..d7ae3400 100644
--- a/src/layout/box.nim
+++ b/src/layout/box.nim
@@ -23,6 +23,9 @@ type
     width*: int
     height*: int
 
+  InlineSpacing* = ref object of InlineAtom
+    word*: InlineWord
+
   InlineWord* = ref object of InlineAtom
     str*: string
     fontstyle*: CSSFontStyle
diff --git a/src/layout/engine.nim b/src/layout/engine.nim
index 9b1e9363..45aef6de 100644
--- a/src/layout/engine.nim
+++ b/src/layout/engine.nim
@@ -80,9 +80,13 @@ proc addAtom(ictx: InlineContext, atom: InlineAtom, maxwidth: int, specified: CS
       shift = ictx.computeShift(specified)
       ictx.whitespace = false
 
-  ictx.thisrow.width += shift
+  if atom.width > 0 and atom.height > 0:
+    if shift > 0:
+      let spacing = InlineSpacing(width: shift, height: atom.height)
+      spacing.relx = ictx.thisrow.width
+      ictx.thisrow.width += spacing.width
+      ictx.thisrow.atoms.add(spacing)
 
-  if atom.width > 0:
     atom.relx += ictx.thisrow.width
     ictx.thisrow.width += atom.width
     ictx.thisrow.height = max(ictx.thisrow.height, atom.height)