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 {