Index: Slim/Buttons/Common.pm =================================================================== --- Slim/Buttons/Common.pm (revision 9957) +++ Slim/Buttons/Common.pm (working copy) @@ -737,29 +737,37 @@ if ($list) { my $obj = $list->[$client->modeParam('listIndex')]; + my $title; + my $url; if (blessed($obj) && $obj->can('url')) { + $url = $obj->url; + } elsif (ref($obj) eq 'HASH') { + $url = $obj->{'url'}; + } + + if (blessed($obj) && $obj->can('name')) { + $title = $obj->name; + }elsif (ref($obj) eq 'HASH') { + $title = $obj->{'name'}; + } else { + $title = Slim::Music::Info::standardTitle($client, $obj); + } - my $title; - - if ($obj->can('name')) { - $title = $obj->name; - } else { - $title = Slim::Music::Info::standardTitle($client, $obj); - } - - if ($title) { - Slim::Utils::Favorites->clientAdd($client, $obj, $title); - $client->showBriefly($client->string('FAVORITES_ADDING'), $title); - } - + if ($url && $title) { + Slim::Utils::Favorites->clientAdd($client, $url, $title); + $client->showBriefly($client->string('FAVORITES_ADDING'), $title); } else { - $::d_favorites && msg("list item is not an object, not adding favorite\n"); + $::d_favorites && msg("list item is missing url or title, not adding favorite\n"); $::d_favorites && msg(Data::Dumper::Dumper($obj)); } - } + } else { + $::d_favorites && msg("Favorites: no valid list found!\n"); + $::d_favorites && Slim::Utils::Misc::bt(); + } + } elsif (mode($client) ne 'FAVORITES') { setMode($client, 'home');