onblur event now works

This commit is contained in:
Andreas Rumpf 2017-03-31 14:00:23 +02:00
commit d9330cbab9
2 changed files with 5 additions and 4 deletions

View file

@ -38,7 +38,7 @@ proc editInput(i: int; d: cstring): VNode =
entries[i] = val
selectedEntry = -1
result = enterInput("todo-edit", d, onTodoChange)
#result.setOnfocuslost(proc (ev: Event; n: VNode) = selectedEntry = -1)
result.setOnfocuslost(proc (ev: Event; n: VNode) = selectedEntry = -1)
proc createEntry(i: int; d: cstring; selected: bool): VNode =
# implement caching:

View file

@ -46,11 +46,12 @@ proc vnodeToDom(n: VNode): Element =
let myn = n
for e, h in items(n.events):
proc wrapper(): proc (ev: Event) =
let hh = h
result = proc (ev: Event) =
assert myn != nil
h(ev, myn)
hh(ev, myn)
result.addEventListener(toEventName[e], wrapper())
if n.kind == VNodeKind.input:
if n.kind == VNodeKind.input and toFocus.isNil:
toFocus = result
proc same(n: VNode, e: Element): bool =
@ -148,7 +149,7 @@ proc dodraw() =
proc redraw*() =
# we buffer redraw requests:
when false:
when true:
if drawTimeout != nil:
clearTimeout(drawTimeout)
drawTimeout = setTimeout(dodraw, 30)