diff options
Diffstat (limited to 'src/html/event.nim')
-rw-r--r-- | src/html/event.nim | 20 |
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 |