xC + frontends: merge M-! into M-a + reversed M-A

Both WeeChat and irssi merge these two by prioritising highlights
when you press M-a.
This commit is contained in:
2026-08-09 13:30:22 +02:00
parent 6ba94ba664
commit 2d1df86a46
11 changed files with 180 additions and 129 deletions
+31 -19
View File
@@ -1420,7 +1420,7 @@ func (l *customLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// rotatedBuffers returns buffer indexes starting with the current buffer.
// rotatedBuffers returns buffer indexes starting after the current buffer.
func rotatedBuffers() []int {
r, start := make([]int, len(buffers)), 0
for i := range buffers {
@@ -1458,6 +1458,29 @@ func actionBufferLast() {
}
}
func actionBufferActivity(backwards bool) {
r := rotatedBuffers()
if len(r) == 0 {
return
}
r = r[:len(r)-1]
if backwards {
slices.Reverse(r)
}
for _, i := range r {
if buffers[i].highlighted {
bufferActivate(buffers[i].bufferName)
return
}
}
for _, i := range r {
if buffers[i].newMessages != 0 {
bufferActivate(buffers[i].bufferName)
return
}
}
}
var shortcuts = map[desktop.CustomShortcut]func(){
{
KeyName: fyne.KeyPageUp,
@@ -1487,28 +1510,17 @@ var shortcuts = map[desktop.CustomShortcut]func(){
KeyName: fyne.KeyTab,
Modifier: fyne.KeyModifierAlt,
}: actionBufferLast,
{
// XXX: This makes an assumption on the keyboard layout (we want '!').
KeyName: fyne.Key1,
Modifier: fyne.KeyModifierAlt | fyne.KeyModifierShift,
}: func() {
for _, i := range rotatedBuffers() {
if buffers[i].highlighted {
bufferActivate(buffers[i].bufferName)
break
}
}
},
{
KeyName: fyne.KeyA,
Modifier: fyne.KeyModifierAlt,
}: func() {
for _, i := range rotatedBuffers() {
if buffers[i].newMessages != 0 {
bufferActivate(buffers[i].bufferName)
break
}
}
actionBufferActivity(false)
},
{
KeyName: fyne.KeyA,
Modifier: fyne.KeyModifierAlt | fyne.KeyModifierShift,
}: func() {
actionBufferActivity(true)
},
{
KeyName: fyne.KeyH,