From 0ad9d68c8102f336b4e721e30e06c40186e1880c Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Wed, 28 Jun 2017 11:26:09 +0200 Subject: [PATCH] fixes #35 --- src/karax.nim | 39 ++++++++++++++++++++++++++++++--------- src/kdom.nim | 1 + src/vdom.nim | 5 +++-- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/karax.nim b/src/karax.nim index 0b1d8db..5ea7d62 100644 --- a/src/karax.nim +++ b/src/karax.nim @@ -48,8 +48,9 @@ template keyeventBody() = # Do not call redraw() here! That is already done # by ``karax.addEventHandler``. -proc wrapEvent(d: Node; n: VNode; k: EventKind; action: EventHandler) = - proc stdWrapper(): (proc (ev: Event)) = +proc wrapEvent(d: Node; n: VNode; k: EventKind; + action: EventHandler): NativeEventHandler = + proc stdWrapper(): NativeEventHandler = let action = action let n = n result = proc (ev: Event) = @@ -57,13 +58,13 @@ proc wrapEvent(d: Node; n: VNode; k: EventKind; action: EventHandler) = keyeventBody() else: action(ev, n) - proc enterWrapper(): (proc (ev: Event)) = + proc enterWrapper(): NativeEventHandler = let action = action let n = n result = proc (ev: Event) = if ev.keyCode == 13: keyeventBody() - proc laterWrapper(): (proc (ev: Event)) = + proc laterWrapper(): NativeEventHandler = let action = action let n = n var timer: Timeout @@ -74,11 +75,14 @@ proc wrapEvent(d: Node; n: VNode; k: EventKind; action: EventHandler) = case k of EventKind.onkeyuplater: - d.addEventListener("keyup", laterWrapper()) + result = laterWrapper() + d.addEventListener("keyup", result) of EventKind.onkeyupenter: - d.addEventListener("keyup", enterWrapper()) + result = enterWrapper() + d.addEventListener("keyup", result) else: - d.addEventListener(toEventName[k], stdWrapper()) + result = stdWrapper() + d.addEventListener(toEventName[k], result) # --------------------- DOM diff ----------------------------------------- @@ -90,6 +94,11 @@ template detach(n: VNode) = template attach(n: VNode) = n.dom = result +proc applyEvents(n: VNode; kxi: KaraxInstance) = + let dest = n.dom + for i in 0..