Fix #477: scroll to currently playing track when loading Now Playing page
This commit is contained in:
+2
-2
@@ -50,7 +50,7 @@ func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr
|
||||
|
||||
bp.NowPlaying = widgets.NewNowPlayingCard()
|
||||
bp.NowPlaying.OnCoverTapped = func() {
|
||||
contr.NavigateTo(controller.NowPlayingRoute(""))
|
||||
contr.NavigateTo(controller.NowPlayingRoute())
|
||||
}
|
||||
bp.NowPlaying.OnSetFavorite = func(fav bool) {
|
||||
if tr, ok := pm.NowPlaying().(*mediaprovider.Track); ok {
|
||||
@@ -76,7 +76,7 @@ func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr
|
||||
contr.NavigateTo(controller.ArtistRoute(artistID))
|
||||
}
|
||||
bp.NowPlaying.OnTrackNameTapped = func() {
|
||||
contr.NavigateTo(controller.NowPlayingRoute(pm.NowPlaying().Metadata().ID))
|
||||
contr.NavigateTo(controller.NowPlayingRoute())
|
||||
}
|
||||
bp.NowPlaying.OnShowTrackInfo = func() {
|
||||
if tr, ok := pm.NowPlaying().(*mediaprovider.Track); ok {
|
||||
|
||||
@@ -47,6 +47,7 @@ type NowPlayingPage struct {
|
||||
lastPlayPos float64
|
||||
queue []mediaprovider.MediaItem
|
||||
related []*mediaprovider.Track
|
||||
alreadyLoaded bool
|
||||
|
||||
lyricLock sync.Mutex
|
||||
relatedLock sync.Mutex
|
||||
@@ -241,13 +242,14 @@ func (a *NowPlayingPage) Save() SavedPage {
|
||||
if a.imageLoadCancel != nil {
|
||||
a.imageLoadCancel()
|
||||
}
|
||||
a.alreadyLoaded = false
|
||||
nps := a.nowPlayingPageState
|
||||
a.pool.Release(util.WidgetTypeNowPlayingPage, a)
|
||||
return &nps
|
||||
}
|
||||
|
||||
func (a *NowPlayingPage) Route() controller.Route {
|
||||
return controller.NowPlayingRoute("")
|
||||
return controller.NowPlayingRoute()
|
||||
}
|
||||
|
||||
var _ Scrollable = (*NowPlayingPage)(nil)
|
||||
@@ -271,6 +273,10 @@ func (a *NowPlayingPage) OnSongChange(song mediaprovider.MediaItem, lastScrobble
|
||||
}
|
||||
a.nowPlayingID = sharedutil.MediaItemIDOrEmptyStr(song)
|
||||
a.queueList.SetNowPlaying(a.nowPlayingID)
|
||||
if !a.alreadyLoaded {
|
||||
a.queueList.ScrollToNowPlaying()
|
||||
a.alreadyLoaded = true
|
||||
}
|
||||
a.relatedList.SetNowPlaying(a.nowPlayingID)
|
||||
|
||||
a.card.Update(song)
|
||||
|
||||
@@ -97,6 +97,6 @@ func RadiosRoute() Route {
|
||||
return Route{Page: Radios}
|
||||
}
|
||||
|
||||
func NowPlayingRoute(highlightedTrackID string) Route {
|
||||
return Route{Page: NowPlaying, Arg: highlightedTrackID}
|
||||
func NowPlayingRoute() Route {
|
||||
return Route{Page: NowPlaying}
|
||||
}
|
||||
|
||||
+1
-1
@@ -296,7 +296,7 @@ func (m *MainWindow) ShowWhatsNewDialog() {
|
||||
|
||||
func (m *MainWindow) addNavigationButtons() {
|
||||
m.BrowsingPane.AddNavigationButton(theme.NowPlayingIcon, controller.NowPlaying, func() {
|
||||
m.Router.NavigateTo(controller.NowPlayingRoute(""))
|
||||
m.Router.NavigateTo(controller.NowPlayingRoute())
|
||||
})
|
||||
m.BrowsingPane.AddNavigationButton(theme.FavoriteIcon, controller.Favorites, func() {
|
||||
m.Router.NavigateTo(controller.FavoritesRoute())
|
||||
|
||||
@@ -183,10 +183,8 @@ func (p *PlayQueueList) ScrollToNowPlaying() {
|
||||
idx := slices.IndexFunc(p.items, func(item *util.TrackListModel) bool {
|
||||
return item.Item.Metadata().ID == p.nowPlayingID
|
||||
})
|
||||
if idx > 0 {
|
||||
p.list.ScrollTo(idx)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayQueueList) Refresh() {
|
||||
p.list.EnableDragging = p.Reorderable
|
||||
|
||||
Reference in New Issue
Block a user