From f58d9f5dce155fa4f6830972233caba7e5d9dc90 Mon Sep 17 00:00:00 2001 From: Tyler Spivey Date: Fri, 14 Aug 2026 15:29:44 -0700 Subject: [PATCH] Refresh channel tree after volume changes Tree items render a display string snapshotted at build time, so changing a user's volume updated the gain but left the stale percentage on screen. Rebuild the tree and refresh after volume change and reset, matching what the mute hotkeys already do. Co-Authored-By: Claude Opus 5 --- ui_tree.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ui_tree.go b/ui_tree.go index dea6f1f..04af22e 100644 --- a/ui_tree.go +++ b/ui_tree.go @@ -38,7 +38,7 @@ func (ti TreeItem) TreeItemStyle(fg, bg uiterm.Attribute, active bool) (uiterm.A } func (b *Barnard) changeVolume(users []*gumble.User, change float32) { - b.withStream(func(stream *gumbleopenal.Stream) { + changed := b.withStream(func(stream *gumbleopenal.Stream) { for _, u := range users { var boost uint16 var ng float32 @@ -63,10 +63,13 @@ func (b *Barnard) changeVolume(users []*gumble.User, change float32) { b.AddOutputLine("Volume: could not save setting: " + err.Error()) } }) + if changed { + b.refreshVolumeDisplay() + } } func (b *Barnard) resetVolume(users []*gumble.User) { - b.withStream(func(stream *gumbleopenal.Stream) { + changed := b.withStream(func(stream *gumbleopenal.Stream) { for _, u := range users { // Reset to original volume (1.0) and boost (1) u.SetBoost(uint16(1)) @@ -78,6 +81,16 @@ func (b *Barnard) resetVolume(users []*gumble.User) { b.AddOutputLine("Volume: could not save setting: " + err.Error()) } }) + if changed { + b.refreshVolumeDisplay() + } +} + +// Tree items render a display string snapshotted at build time, so a volume +// change is only visible after the tree is rebuilt. +func (b *Barnard) refreshVolumeDisplay() { + b.RebuildUserChannelTreePreservingSelection() + b.Ui.Refresh() } func makeUsersArray(users gumble.Users) []*gumble.User {