about summary refs log tree commit diff stats
path: root/src/html/event.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/html/event.nim')
-rw-r--r--src/html/event.nim20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/html/event.nim b/src/html/event.nim
index 7a4d030d..3c415c67 100644
--- a/src/html/event.nim
+++ b/src/html/event.nim
@@ -553,15 +553,17 @@ proc dispatch*(ctx: JSContext; target: EventTarget; event: Event): bool =
       break
     let it = targets[i]
     ctx.dispatchEvent0(event, it, stop, canceled, capture = true)
-  event.eventPhase = 2
-  ctx.dispatchEvent0(event, target, stop, canceled, capture = true)
-  ctx.dispatchEvent0(event, target, stop, canceled, capture = false)
-  if event.bubbles:
-    event.eventPhase = 3
-    for target in targets:
-      if stop:
-        break
-      ctx.dispatchEvent0(event, target, stop, canceled, capture = false)
+  if not stop:
+    event.eventPhase = 2
+    ctx.dispatchEvent0(event, target, stop, canceled, capture = true)
+    ctx.dispatchEvent0(event, target, stop, canceled, capture = false)
+    if event.bubbles:
+      event.eventPhase = 3
+      for i in 1 ..< targets.len:
+        if stop:
+          break
+        let target = targets[i]
+        ctx.dispatchEvent0(event, target, stop, canceled, capture = false)
   event.eventPhase = 0
   event.flags.excl(efDispatch)
   return canceled