rollback dom.value behaviour; fixes removeEventListener problem

This commit is contained in:
Andreas Rumpf 2017-06-29 11:04:43 +02:00
commit e739909466

View file

@ -213,12 +213,13 @@ proc updateStyles(newNode, oldNode: VNode) =
proc mergeEvents(newNode, oldNode: VNode; kxi: KaraxInstance) = proc mergeEvents(newNode, oldNode: VNode; kxi: KaraxInstance) =
let d = oldNode.dom let d = oldNode.dom
for i in 0..<oldNode.events.len: if d != nil:
let k = oldNode.events[i][0] for i in 0..<oldNode.events.len:
let name = case k let k = oldNode.events[i][0]
of EventKind.onkeyuplater, EventKind.onkeyupenter: cstring"keyup" let name = case k
else: toEventName[k] of EventKind.onkeyuplater, EventKind.onkeyupenter: cstring"keyup"
d.removeEventListener(name, oldNode.events[i][2]) else: toEventName[k]
d.removeEventListener(name, oldNode.events[i][2])
shallowCopy(oldNode.events, newNode.events) shallowCopy(oldNode.events, newNode.events)
applyEvents(oldNode, kxi) applyEvents(oldNode, kxi)
@ -275,8 +276,8 @@ proc diff(newNode, oldNode: VNode; parent, current: Node; kxi: KaraxInstance): E
if result == similar: updateStyles(newNode, oldNode) if result == similar: updateStyles(newNode, oldNode)
if newNode.events.len != 0 or oldNode.events.len != 0: if newNode.events.len != 0 or oldNode.events.len != 0:
mergeEvents(newNode, oldNode, kxi) mergeEvents(newNode, oldNode, kxi)
if newNode.kind == VNodeKind.input or newNode.kind == VNodeKind.textarea: #if newNode.kind == VNodeKind.input or newNode.kind == VNodeKind.textarea:
oldNode.dom.value = newNode.text # oldNode.dom.value = newNode.text
let newLength = newNode.len let newLength = newNode.len
var oldLength = oldNode.len var oldLength = oldNode.len