about summary refs log tree commit diff stats
path: root/src/server
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-12-17 20:58:05 +0100
committerbptato <nincsnevem662@gmail.com>2024-12-17 20:58:20 +0100
commitcca92e2646d6decb59aa473aece834a81511cb3a (patch)
treefda357e92fac17b28a97d3c841455cbf2879f955 /src/server
parente3356585518e11b27175ac89f5cf3a85d1826c6f (diff)
downloadchawan-cca92e2646d6decb59aa473aece834a81511cb3a.tar.gz
css: add :target pseudo class
Diffstat (limited to 'src/server')
-rw-r--r--src/server/buffer.nim7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index bbae50f2..501a5d94 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -715,6 +715,8 @@ proc gotoAnchor*(buffer: Buffer; anchor: string; autofocus: bool):
   if buffer.document == nil:
     return GotoAnchorResult(found: false)
   var anchor = buffer.document.findAnchor(anchor)
+  if anchor != nil:
+    buffer.document.setTarget(anchor)
   var focus: ReadLineResult = nil
   # Do not use buffer.config.autofocus when we just want to check if the
   # anchor can be found.
@@ -1032,6 +1034,11 @@ proc clone*(buffer: Buffer; newurl: URL): int {.proxy.} =
     for it in connecting:
       # connecting: just reconnect
       buffer.loader.reconnect(it)
+    # Set target now, because it's convenient.
+    # (It is also possible that newurl has no hash, and then gotoAnchor
+    # isn't called at all.)
+    let target = buffer.document.findAnchor(newurl.hash)
+    buffer.document.setTarget(target)
     return 0
   else: # parent
     discard close(pipefd[1]) # close write