Index: Slim/Buttons/BrowseDB.pm =================================================================== --- Slim/Buttons/BrowseDB.pm (revision 4346) +++ Slim/Buttons/BrowseDB.pm (working copy) @@ -337,6 +337,7 @@ elsif ($descend || $all) { my $findCriteria = { %{$client->param('findCriteria')} }; + my $selectionCriteria = $client->param('selectionCriteria'); my $field = $levels[$level]; my $info = $fieldInfo->{$field} || $fieldInfo->{'default'}; @@ -361,6 +362,7 @@ hierarchy => $hierarchy, level => $level + 1, findCriteria => $findCriteria, + selectionCriteria => $selectionCriteria, ); # Only include the search terms (i.e. those associated with @@ -634,8 +636,18 @@ # Finally get the last selection position within the list my $listIndex; my $selectionKey; + my $selectionCriteria; if (defined($search)) { $listIndex = 0; + } elsif (defined $client->param('selectionCriteria')) { + $selectionCriteria = $client->param('selectionCriteria'); + my $selection = $selectionCriteria->{$levels[$level]}; + my $i = 0; + for my $item (@{$items}) { + last if $selection == $item; + $i++; + } + $listIndex = $i; } else { $selectionKey = $hierarchy . ':' . $level . ':'; @@ -670,6 +682,7 @@ search => $search, selectionKey => $selectionKey, findCriteria => $findCriteria, + selectionCriteria => $selectionCriteria, ); $params{'favorite'} = $client->param('favorite'); Index: Slim/Buttons/TrackInfo.pm =================================================================== --- Slim/Buttons/TrackInfo.pm (revision 4347) +++ Slim/Buttons/TrackInfo.pm (working copy) @@ -135,8 +135,10 @@ Slim::Buttons::Common::pushMode($client, 'browsedb', { 'hierarchy' => 'track', 'level' => 0, - 'findCriteria' => { 'album' => $album->id,'track' => $track->id }, - + 'findCriteria' => { 'album' => $album->id}, + 'selectionCriteria' => { 'track' => $track->id, + 'album' => $track->album->id, + 'artist' => $track->artist->id}, }); } elsif ($curitem =~ /^(?:ARTIST|COMPOSER|CONDUCTOR|BAND)$/) { @@ -148,7 +150,10 @@ Slim::Buttons::Common::pushMode($client, 'browsedb', { 'hierarchy' => 'album,track', 'level' => 0, - 'findCriteria' => { 'artist' => $contributor->id,'track' => $track->id }, + 'findCriteria' => { 'artist' => $contributor->id }, + 'selectionCriteria' => { 'track' => $track->id, + 'album' => $track->album->id, + 'artist' => $track->artist->id}, }); } elsif ($curitem eq 'GENRE') { @@ -157,7 +162,10 @@ Slim::Buttons::Common::pushMode($client, 'browsedb', { 'hierarchy' => 'artist,album,track', 'level' => 0, - 'findCriteria' => { 'genre' => $genre->id,'track' => $track->id }, + 'findCriteria' => { 'genre' => $genre->id,}, + 'selectionCriteria' => { 'track' => $track->id, + 'album' => $track->album->id, + 'artist' => $track->artist->id}, }); } elsif ($curitem eq 'FAVORITE') {