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 <noreply@anthropic.com>
This commit is contained in:
Tyler Spivey
2026-08-14 15:29:44 -07:00
co-authored by Claude Opus 5
parent 4393739ffa
commit f58d9f5dce
+15 -2
View File
@@ -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 {