diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/html/dom.nim | 6 | ||||
-rw-r--r-- | src/html/env.nim | 5 | ||||
-rw-r--r-- | src/server/buffer.nim | 1 |
3 files changed, 10 insertions, 2 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim index e1f841e7..1a916b5e 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -109,6 +109,7 @@ type urandom*: PosixStream imageTypes*: Table[string, string] userAgent*: string + autofocus*: bool # Navigator stuff Navigator* = object @@ -2700,6 +2701,11 @@ proc setFocus*(document: Document; element: Element) = if element != nil: element.invalidDeps.incl(dtFocus) +proc focus(ctx: JSContext; element: Element) {.jsfunc.} = + let window = ctx.getWindow() + if window != nil and window.autofocus: + element.document.setFocus(element) + func target*(document: Document): Element = return document.internalTarget diff --git a/src/html/env.nim b/src/html/env.nim index cb38fd1c..3405229c 100644 --- a/src/html/env.nim +++ b/src/html/env.nim @@ -342,7 +342,7 @@ proc runJSJobs*(window: Window) = let ctx = r.error ctx.writeException(window.console.err) -proc newWindow*(scripting: ScriptingMode; images, styling: bool; +proc newWindow*(scripting: ScriptingMode; images, styling, autofocus: bool; attrs: WindowAttributes; factory: CAtomFactory; loader: FileLoader; url: URL; urandom: PosixStream; imageTypes: Table[string, string]; userAgent: string): Window = @@ -361,7 +361,8 @@ proc newWindow*(scripting: ScriptingMode; images, styling: bool; factory: factory, urandom: urandom, imageTypes: imageTypes, - userAgent: userAgent + userAgent: userAgent, + autofocus: autofocus ) window.location = window.newLocation() if scripting != smFalse: diff --git a/src/server/buffer.nim b/src/server/buffer.nim index dd0f8dc9..3012c639 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -1939,6 +1939,7 @@ proc launchBuffer*(config: BufferConfig; url: URL; attrs: WindowAttributes; config.scripting, config.images, config.styling, + config.autofocus, attrs, factory, loader, |