diff options
author | bptato <nincsnevem662@gmail.com> | 2023-07-01 23:26:17 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-07-01 23:26:17 +0200 |
commit | 2f74b628f3c91860860cc19fc07db5c304e8e6ed (patch) | |
tree | 161bd11827648bd89042ccb30b7d6fdae523272d | |
parent | 2b10a9b7f61d58157f85c93e8e7b18b1e01e4b79 (diff) | |
download | chawan-2f74b628f3c91860860cc19fc07db5c304e8e6ed.tar.gz |
Use separate flag for adding getset instead of repr
Still a hack, but maybe more reliable?
-rw-r--r-- | src/html/dom.nim | 4 | ||||
-rw-r--r-- | src/js/javascript.nim | 8 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim index bf8e0fcc..ee4d5620 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -2990,11 +2990,11 @@ proc registerElements(ctx: JSContext, nodeCID: JSClassID) = let elementCID = ctx.registerType(Element, parent = nodeCID) const extra_getset = getElementReflectFunctions() let htmlElementCID = ctx.registerType(HTMLElement, parent = elementCID, - extra_getset = extra_getset) + has_extra_getset = true, extra_getset = extra_getset) template register(t: typed, tags: set[TagType]) = const extra_getset = getReflectFunctions(tags) ctx.registerType(t, parent = htmlElementCID, - extra_getset = extra_getset) + has_extra_getset = true, extra_getset = extra_getset) template register(t: typed, tag: TagType) = register(t, {tag}) register(HTMLInputElement, TAG_INPUT) diff --git a/src/js/javascript.nim b/src/js/javascript.nim index b2334be6..3e6eec14 100644 --- a/src/js/javascript.nim +++ b/src/js/javascript.nim @@ -1743,6 +1743,7 @@ template jsDestructor*[U](T: typedesc[ref U]) = macro registerType*(ctx: typed, t: typed, parent: JSClassID = 0, asglobal = false, nointerface = false, name: static string = "", + has_extra_getset: static bool = false, extra_getset: static openarray[TabGetSet] = [], namespace: JSValue = JS_NULL, errid = opt(JSErrorEnum)): JSClassID = result = newStmtList() @@ -1832,11 +1833,10 @@ macro registerType*(ctx: typed, t: typed, parent: JSClassID = 0, if k notin getters: tabList.add(quote do: JS_CGETSET_DEF(`k`, nil, `v`)) - for x in extra_getset: - #TODO TODO TODO what the hell is this... - # For some reason, extra_getset gets weird contents when nothing is + if has_extra_getset: + #HACK: for some reason, extra_getset gets weird contents when nothing is # passed to it. - if repr(x) != "" and repr(x) != "[]": + for x in extra_getset: let k = x.name let g = x.get let s = x.set |