xA: mildly improve the experience
Alpine 3.24 Success
Arch Linux AUR Success
OpenBSD 7.8 Success

Fyne got a bit faster at layouting, but showing the log still kills it.
This commit is contained in:
2026-08-08 06:55:03 +02:00
parent e816ddb32a
commit d9af9c1057
+42 -29
View File
@@ -393,10 +393,10 @@ func bufferScrollToBottom() {
func bufferPushLine(b *buffer, line bufferLine) {
b.lines = append(b.lines, line)
// Fyne's text layouting is extremely slow.
// This also noticeably improves performance.
// The limit could be made configurable,
// and we could use a ring buffer approach to storing the lines.
if len(b.lines) > 100 {
if len(b.lines) > 1000 {
b.lines = slices.Delete(b.lines, 0, 1)
}
}
@@ -1138,17 +1138,10 @@ func relayRun() {
}, nil)
relayMessages := relayMakeReceiver(backendContext, backendConn)
Loop:
for {
select {
case m, ok := <-relayMessages:
if !ok {
break Loop
}
fyne.DoAndWait(func() {
relayProcessMessage(&m)
})
}
for m := range relayMessages {
fyne.DoAndWait(func() {
relayProcessMessage(&m)
})
}
fyne.DoAndWait(func() {
wConnect.Show()
@@ -1304,11 +1297,11 @@ func (e *inputEntry) KeyDown(key *fyne.KeyEvent) {
}
switch {
case modifiedKey.Modifier == fyne.KeyModifierControl &&
case modifiedKey.Modifier == fyne.KeyModifierAlt &&
modifiedKey.KeyName == fyne.KeyP:
inputUp()
return
case modifiedKey.Modifier == fyne.KeyModifierControl &&
case modifiedKey.Modifier == fyne.KeyModifierAlt &&
modifiedKey.KeyName == fyne.KeyN:
inputDown()
return
@@ -1443,27 +1436,47 @@ func rotatedBuffers() []int {
return r
}
func actionBufferPrevious() {
if r := rotatedBuffers(); len(r) <= 0 {
} else if i := r[len(r)-1]; i == 0 {
bufferActivate(buffers[len(buffers)-1].bufferName)
} else {
bufferActivate(buffers[i-1].bufferName)
}
}
func actionBufferNext() {
if r := rotatedBuffers(); len(r) <= 0 {
} else {
bufferActivate(buffers[r[0]].bufferName)
}
}
var shortcuts = map[desktop.CustomShortcut]func(){
{
KeyName: fyne.KeyPageUp,
Modifier: fyne.KeyModifierControl,
}: func() {
if r := rotatedBuffers(); len(r) <= 0 {
} else if i := r[len(r)-1]; i == 0 {
bufferActivate(buffers[len(buffers)-1].bufferName)
} else {
bufferActivate(buffers[i-1].bufferName)
}
},
}: actionBufferPrevious,
{
KeyName: fyne.KeyPageUp,
Modifier: fyne.KeyModifierAlt,
}: actionBufferPrevious,
{
KeyName: fyne.KeyF5,
Modifier: 0,
}: actionBufferPrevious,
{
KeyName: fyne.KeyPageDown,
Modifier: fyne.KeyModifierControl,
}: func() {
if r := rotatedBuffers(); len(r) <= 0 {
} else {
bufferActivate(buffers[r[0]].bufferName)
}
},
}: actionBufferNext,
{
KeyName: fyne.KeyPageDown,
Modifier: fyne.KeyModifierAlt,
}: actionBufferNext,
{
KeyName: fyne.KeyF6,
Modifier: 0,
}: actionBufferNext,
{
KeyName: fyne.KeyTab,
Modifier: fyne.KeyModifierAlt,