diff --git a/src/karax.nim b/src/karax.nim index 6c048cc..d5de6f5 100644 --- a/src/karax.nim +++ b/src/karax.nim @@ -190,11 +190,12 @@ type EqResult = enum componentsIdentical, different, similar, identical, usenewNode - DifferEnum = enum - deKind, deId, deIndex, deText, deComponent, deClass, - deSimilar - when defined(profileKarax): + type + DifferEnum = enum + deKind, deId, deIndex, deText, deComponent, deClass, + deSimilar + var reasons: array[DifferEnum, int] @@ -227,6 +228,9 @@ proc eq(a, b: VNode): EqResult = if a.text != b.text: when defined(profileKarax): inc reasons[deComponent] return different + if VComponent(a).key.isNil and VComponent(b).key.isNil: + when defined(profileKarax): inc reasons[deComponent] + return different if VComponent(a).key != VComponent(b).key: when defined(profileKarax): inc reasons[deComponent] return different diff --git a/src/vdom.nim b/src/vdom.nim index 2e3b7dd..f31d6d6 100644 --- a/src/vdom.nim +++ b/src/vdom.nim @@ -160,17 +160,17 @@ proc vthunk*(name: cstring; args: varargs[VNode, vn]): VNode = proc dthunk*(name: cstring; args: varargs[VNode, vn]): VNode = VNode(kind: VNodeKind.dthunk, text: name, index: -1, kids: @args) -proc setEvent(v: VNode; kind: EventKind; handler: EventHandler) = +proc setEventIfNoConflict(v: VNode; kind: EventKind; handler: EventHandler) = assert handler != nil for i in 0.. 0: persons.add v