diff options
author | bptato <nincsnevem662@gmail.com> | 2023-07-04 01:47:50 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-07-04 01:48:51 +0200 |
commit | 1a40a3e5fa7b90316fd22d1dce949457a5f866b0 (patch) | |
tree | 141db7da1e6bc56a0518e66550b0fa85be8ca746 | |
parent | 667ca4188a9e587111ed48bd82ecdab6f1035229 (diff) | |
download | chawan-1a40a3e5fa7b90316fd22d1dce949457a5f866b0.tar.gz |
pager: do not store jsctx
-rw-r--r-- | src/display/pager.nim | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/display/pager.nim b/src/display/pager.nim index a0437a97..c8d0b83e 100644 --- a/src/display/pager.nim +++ b/src/display/pager.nim @@ -42,7 +42,6 @@ type askpromise*: Promise[bool] askprompt: string askcursor: int - jsctx: JSContext numload*: int alerts: seq[string] alerton: bool @@ -101,27 +100,28 @@ proc setContainer*(pager: Pager, c: Container) {.jsfunc.} = if c != nil: pager.term.setTitle(c.getTitle()) -proc hasprop(pager: Pager, s: string): bool {.jshasprop.} = +proc hasprop(ctx: JSContext, pager: Pager, s: string): bool {.jshasprop.} = if pager.container != nil: - let cval = toJS(pager.jsctx, pager.container) - let val = JS_GetPropertyStr(pager.jsctx, cval, s) + let cval = toJS(ctx, pager.container) + let val = JS_GetPropertyStr(ctx, cval, s) if val != JS_UNDEFINED: result = true - JS_FreeValue(pager.jsctx, val) + JS_FreeValue(ctx, val) proc reflect(ctx: JSContext, this_val: JSValue, argc: cint, argv: ptr JSValue, magic: cint, func_data: ptr JSValue): JSValue {.cdecl.} = let fun = cast[ptr JSValue](cast[int](func_data) + sizeof(JSValue))[] return JS_Call(ctx, fun, func_data[], argc, argv) -proc getter(pager: Pager, s: string): Option[JSValue] {.jsgetprop.} = +proc getter(ctx: JSContext, pager: Pager, s: string): Option[JSValue] + {.jsgetprop.} = if pager.container != nil: - let cval = toJS(pager.jsctx, pager.container) - let val = JS_GetPropertyStr(pager.jsctx, cval, s) + let cval = toJS(ctx, pager.container) + let val = JS_GetPropertyStr(ctx, cval, s) if val != JS_UNDEFINED: - if JS_IsFunction(pager.jsctx, val): + if JS_IsFunction(ctx, val): var func_data = @[cval, val] - let fun = JS_NewCFunctionData(pager.jsctx, reflect, 1, 0, 2, addr func_data[0]) + let fun = JS_NewCFunctionData(ctx, reflect, 1, 0, 2, addr func_data[0]) return some(fun) return some(val) @@ -172,14 +172,14 @@ proc gotoLine[T: string|int](pager: Pager, s: T = "") {.jsfunc.} = return pager.container.gotoLine(s) -proc newPager*(config: Config, attrs: WindowAttributes, dispatcher: Dispatcher, ctx: JSContext): Pager = +proc newPager*(config: Config, attrs: WindowAttributes, + dispatcher: Dispatcher, ctx: JSContext): Pager = let pager = Pager( dispatcher: dispatcher, config: config, display: newFixedGrid(attrs.width, attrs.height - 1), statusgrid: newFixedGrid(attrs.width), term: newTerminal(stdout, config, attrs), - jsctx: ctx, siteconf: config.getSiteConfig(ctx), omnirules: config.getOmniRules(ctx) ) |