From 0bb5f969ffd5a63ebd454bdd94e854cf7c2d4344 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Fri, 23 Jan 2026 18:49:15 -0800 Subject: [PATCH] more tracklist rendering optimization --- ui/widgets/tracklistrow.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/ui/widgets/tracklistrow.go b/ui/widgets/tracklistrow.go index 4beb16a..847dcc1 100644 --- a/ui/widgets/tracklistrow.go +++ b/ui/widgets/tracklistrow.go @@ -466,10 +466,10 @@ func (t *tracklistRowBase) needsUpdate(tm *util.TrackListModel, rowNum int) bool } func (t *tracklistRowBase) doUpdate(tm *util.TrackListModel, rowNum int) { - changed := false + fullRefresh := false if tm.Selected != t.Selected { t.Selected = tm.Selected - changed = true + fullRefresh = true } // Update info that can change if this row is bound to @@ -504,7 +504,7 @@ func (t *tracklistRowBase) doUpdate(tm *util.TrackListModel, rowNum int) { t.dateAdded.Text = util.FormatDate(tr.DateAdded) t.path.Text = tr.FilePath t.path.SetToolTip(tr.FilePath) - changed = true + fullRefresh = true } // Update track num if needed @@ -524,21 +524,20 @@ func (t *tracklistRowBase) doUpdate(tm *util.TrackListModel, rowNum int) { } else { str = strconv.Itoa(rowNum) } - t.num.Text = str - changed = true + t.num.SetText(str) } // Update play count if needed if tr.PlayCount != t.playCount { t.playCount = tr.PlayCount - t.plays.Text = strconv.Itoa(int(tr.PlayCount)) - changed = true + t.plays.SetText(strconv.Itoa(int(tr.PlayCount))) } // Render whether track is playing or not if isPlaying := t.tracklist.nowPlayingID == tr.ID; isPlaying != t.isPlaying { t.isPlaying = isPlaying t.name.Segments[0].(*widget.TextSegment).Style.TextStyle.Bold = isPlaying + t.name.Refresh() if isPlaying { t.originalNumColContent = t.Content.(*fyne.Container).Objects[0] @@ -546,14 +545,14 @@ func (t *tracklistRowBase) doUpdate(tm *util.TrackListModel, rowNum int) { } else { t.Content.(*fyne.Container).Objects[0] = t.originalNumColContent } - changed = true + canvas.Refresh(t) } // Update favorite column if tr.Favorite != t.isFavorite { t.isFavorite = tr.Favorite t.favorite.Objects[0].(*FavoriteIcon).Favorite = tr.Favorite - changed = true + canvas.Refresh(t.favorite) } // Update rating column @@ -566,7 +565,7 @@ func (t *tracklistRowBase) doUpdate(tm *util.TrackListModel, rowNum int) { t.rating.Refresh() } - if changed { + if fullRefresh { tracklistUpdateCounter.Add() t.Refresh() }