about summary refs log tree commit diff stats
path: root/src/server/buffer.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/buffer.nim')
-rw-r--r--src/server/buffer.nim14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index 49ae89e3..fe3f2e93 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -47,6 +47,7 @@ import types/cell
 import types/color
 import types/formdata
 import types/opt
+import types/refstring
 import types/url
 import types/winattrs
 import utils/strwidth
@@ -767,14 +768,15 @@ proc resolveTask[T](buffer: Buffer; cmd: BufferCommand; res: T) =
   buffer.tasks[cmd] = 0
 
 proc maybeReshape(buffer: Buffer) =
-  if buffer.document == nil or buffer.document.documentElement == nil:
+  let document = buffer.document
+  if document == nil or document.documentElement == nil:
     return # not parsed yet, nothing to render
-  if buffer.document.invalid:
-    let root = initStyledElement(buffer.document.documentElement)
-    buffer.rootBox = root.layout(addr buffer.attrs)
+  if document.invalid:
+    buffer.rootBox = document.documentElement.buildTree(buffer.rootBox)
+    buffer.rootBox.layout(addr buffer.attrs)
     buffer.lines.renderDocument(buffer.bgcolor, buffer.rootBox,
       addr buffer.attrs, buffer.images)
-    buffer.document.invalid = false
+    document.invalid = false
     if buffer.hasTask(bcOnReshape):
       buffer.resolveTask(bcOnReshape)
     else:
@@ -794,7 +796,7 @@ proc processData0(buffer: Buffer; data: UnsafeSlice): bool =
     if data.len > 0:
       let lastChild = plaintext.lastChild
       if lastChild != nil and lastChild of Text:
-        Text(lastChild).data &= data
+        Text(lastChild).data.s &= data
       else:
         plaintext.insert(buffer.document.newText($data), nil)
       #TODO just invalidate document?