xP: adjust buffer list iteration and styling
M-a and M-! should iterate, rather than keep jumping back to the same buffers. The current item wasn't visible enough, and it jumped around in my 1.5-scale Firefox.
This commit is contained in:
@@ -841,21 +841,25 @@ document.addEventListener('keydown', event => {
|
||||
if (rpc.ws == undefined || !hasShortcutModifiers(event))
|
||||
return
|
||||
|
||||
let names = undefined
|
||||
// Rotate names so that the current buffer comes first.
|
||||
let names = [...buffers.keys()]
|
||||
names.push.apply(names,
|
||||
names.splice(0, names.findIndex(name => name == bufferCurrent)))
|
||||
|
||||
switch (event.key) {
|
||||
case 'h':
|
||||
bufferToggleLog()
|
||||
break
|
||||
case 'a':
|
||||
for (const [name, b] of buffers)
|
||||
if (name !== bufferCurrent && b.newMessages) {
|
||||
for (const name of names.slice(1))
|
||||
if (buffers.get(name).newMessages) {
|
||||
bufferActivate(name)
|
||||
break
|
||||
}
|
||||
break
|
||||
case '!':
|
||||
for (const [name, b] of buffers)
|
||||
if (name !== bufferCurrent && b.highlighted) {
|
||||
for (const name of names.slice(1))
|
||||
if (buffers.get(name).highlighted) {
|
||||
bufferActivate(name)
|
||||
break
|
||||
}
|
||||
@@ -865,20 +869,12 @@ document.addEventListener('keydown', event => {
|
||||
bufferActivate(bufferLast)
|
||||
break
|
||||
case 'PageUp':
|
||||
names = [...buffers.keys()]
|
||||
for (let i = 0; i < names.length; i++)
|
||||
if (names[i] === bufferCurrent) {
|
||||
bufferActivate(names.at(--i))
|
||||
break
|
||||
}
|
||||
if (names.length > 1)
|
||||
bufferActivate(names.at(-1))
|
||||
break
|
||||
case 'PageDown':
|
||||
names = [...buffers.keys()]
|
||||
for (let i = 0; i < names.length; i++)
|
||||
if (names[i] === bufferCurrent) {
|
||||
bufferActivate(names.at(++i) || names[0])
|
||||
break
|
||||
}
|
||||
if (names.length > 1)
|
||||
bufferActivate(names.at(+1))
|
||||
break
|
||||
default:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user