Index: Slim/Web/Pages.pm =================================================================== --- Slim/Web/Pages.pm (revision 4041) +++ Slim/Web/Pages.pm (working copy) @@ -514,9 +514,20 @@ my $track = $objOrUrl; if (!ref $objOrUrl) { + print $client->param('topLevelPath'); + + if (!Slim::Music::Info::isURL($objOrUrl) && $client->param('topLevelPath')) { + use Data::Dumper; + print Dumper($objOrUrl); + $objOrUrl = Slim::Utils::Misc::fixPath($objOrUrl, $client->param('topLevelPath')) || return; + if (Slim::Music::Info::isWinShortcut($objOrUrl)) { + + $objOrUrl = Slim::Utils::Misc::fileURLFromWinShortcut($objOrUrl); + } +} $track = $ds->objectForUrl($objOrUrl) || do { - msg("Couldn't retrieve objectForUrl: [$objOrUrl] - skipping!\n"); + msg("Couldn't retrieve objectForUrl in current playlist: [$objOrUrl] - skipping!\n"); $listBuild{'item'}++; $itemCount++; next; Index: Slim/Buttons/BrowseTree.pm =================================================================== --- Slim/Buttons/BrowseTree.pm (revision 4041) +++ Slim/Buttons/BrowseTree.pm (working copy) @@ -87,27 +87,27 @@ 'overlay2' => $client->symbols('notesymbol'), }); -# if ($descend || !Slim::Utils::Prefs::get('playtrackalbum')) { + if ($descend || (!Slim::Utils::Prefs::get('playtrackalbum') && !$addorinsert)) { $client->execute(['playlist', $command, $currentItem]); -# ### TODO: re-enable playtrackalbum pref for folders if/when possible. -# ### but only when it actually works without non-urls getting in the mix -# } else { -# -# $command .= 'tracks'; -# my $wasShuffled = Slim::Player::Playlist::shuffle($client); -# -# Slim::Player::Playlist::shuffle($client, 0); -# -# $client->execute(['playlist', 'clear']); -# $client->execute(['playlist', $command, $currentItem]); -# $client->execute(['playlist', 'jump', $listIndex]); -# -# if ($wasShuffled) { -# $client->execute(['playlist', 'shuffle', 1]); -# } -# } + ### TODO: re-enable playtrackalbum pref for folders if/when possible. + ### but only when it actually works without non-urls getting in the mix + } else { + + $command = 'playtracks'; + my $wasShuffled = Slim::Player::Playlist::shuffle($client); + + Slim::Player::Playlist::shuffle($client, 0); + + $client->execute(['playlist', 'clear']); + $client->execute(['playlist', $command,'listref', $items]); + $client->execute(['playlist', 'jump', $listIndex]); + + if ($wasShuffled) { + $client->execute(['playlist', 'shuffle', 1]); + } + } }, ); }