Index: Slim/Buttons/Plugins.pm =================================================================== --- Slim/Buttons/Plugins.pm (revision 2958) +++ Slim/Buttons/Plugins.pm (working copy) @@ -76,7 +76,7 @@ for my $item (keys %{$pluginlistref}) { next if (exists $disabledplugins{$item}); - next if (!exists $plugins{$item}); + next unless $plugins{$item}; no strict 'refs'; if (exists &{$plugins{$item}->{'module'} . "::enabled"} && @@ -179,6 +179,7 @@ $::d_plugins && msg("Can't load plugin $fullname - not 6.0+ compatible.\n"); Slim::Utils::Prefs::push('disabledplugins',$plugin); + next; } elsif (!$@ && $displayName) { @@ -198,6 +199,7 @@ } else { $::d_plugins && msg("Can't load $fullname for Plugins menu: $@\n"); + } addDefaultMaps(); @@ -442,8 +444,10 @@ for my $menuOption (keys %{$pluginsRef}) { + next unless $pluginsRef->{$menuOption}; next if exists $disabledplugins{$menuOption}; next if exists $homeplugins{$pluginsRef->{$menuOption}->{'name'}}; + next if (!UNIVERSAL::can("$pluginsRef->{$menuOption}->{'module'}","setMode")); next if (!UNIVERSAL::can("$pluginsRef->{$menuOption}->{'module'}","getFunctions")); Index: Slim/Buttons/Home.pm =================================================================== --- Slim/Buttons/Home.pm (revision 2958) +++ Slim/Buttons/Home.pm (working copy) @@ -154,7 +154,7 @@ if (!defined $submenuref) { - #return unless (defined $submenuname); + return unless (defined $submenuname); if (exists $home{$menu}{'submenus'}{$submenuname}) { $::d_plugins && Slim::Utils::Misc::msg("Deleting $submenuname from menu: $menu\n"); @@ -239,7 +239,7 @@ updateMenu($client); $client->curDepth(''); if (!defined($client->curSelection($client->curDepth()))) { - $client->curSelection($client->curDepth(),'NOW_PLAYING'); + $client->curSelection($client->curDepth(),$@{$homeChoices{$client}}->[0]); } return; } @@ -247,8 +247,9 @@ updateMenu($client); $client->curDepth(''); if (!defined($client->curSelection($client->curDepth()))) { - $client->curSelection($client->curDepth(),'NOW_PLAYING'); + $client->curSelection($client->curDepth(),$homeChoices{$client}->[0]); } + my %params = %defaultParams; $params{'header'} = \&homeheader; $params{'listRef'} = \@{$homeChoices{$client}}; @@ -325,6 +326,7 @@ } elsif ($exittype eq 'RIGHT') { my $nextmenu = $client->curSelection($client->curDepth()); + # map default selection in case no onChange was done in INPUT.List if (!defined($nextmenu)) { $nextmenu = ${$client->param('valueRef')}; @@ -334,6 +336,7 @@ $client->bumpRight(); return; } + my $nextParams; # some menus might need function return values for params, so test here and grab if (ref(getNextList($client)) eq 'CODE') { Index: Slim/Buttons/Playlist.pm =================================================================== --- Slim/Buttons/Playlist.pm (revision 2958) +++ Slim/Buttons/Playlist.pm (working copy) @@ -85,7 +85,7 @@ 'left' => sub { my $client = shift; my @oldlines = Slim::Display::Display::curLines($client); - Slim::Buttons::Home::jump($client, 'NOW_PLAYING'); + Slim::Buttons::Common::setMode($client, 'home'); $client->pushRight(\@oldlines, [Slim::Display::Display::curLines($client)]); },