xP: scroll to bottom and focus the input on switch

This commit is contained in:
Přemysl Eric Janouch 2022-09-06 22:30:23 +02:00
parent ee1750c23c
commit 93b66b6a26
Signed by: p
GPG Key ID: A0420B94F92B9493

View File

@ -165,8 +165,11 @@ rpc.addEventListener('BufferRemove', event => {
rpc.addEventListener('BufferActivate', event => {
let e = event.detail
bufferCurrent = e.bufferName
// TODO: Somehow scroll to the end of it immediately.
// TODO: Focus the textarea.
setTimeout(() => {
let el = document.getElementById('input')
if (el !== null)
el.focus()
})
})
rpc.addEventListener('BufferLine', event => {
@ -306,6 +309,19 @@ let Content = {
}
let Buffer = {
oncreate: vnode => {
if (vnode.dom === undefined)
return
let el = vnode.dom.children[1]
if (el !== null)
el.scrollTop = el.scrollHeight
},
onupdate: vnode => {
Buffer.oncreate(vnode)
},
view: vnode => {
let lines = []
let b = buffers.get(bufferCurrent)
@ -376,7 +392,7 @@ function onKeyDown(event) {
// and we'll probably have to intercept /all/ key presses.
let Input = {
view: vnode => {
return m('textarea', {
return m('textarea#input', {
rows: 1,
onkeydown: onKeyDown,
})