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 entries[i] = val
selectedEntry = -1 selectedEntry = -1
result = enterInput("todo-edit", d, onTodoChange) 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 = proc createEntry(i: int; d: cstring; selected: bool): VNode =
# implement caching: # implement caching:

View file

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