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
1 changed files with 19 additions and 3 deletions

View File

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