Index: server/Slim/Control/Request.pm =================================================================== --- server/Slim/Control/Request.pm (revision 16636) +++ server/Slim/Control/Request.pm (working copy) @@ -1506,8 +1506,7 @@ } if (defined ${$self->{'_results'}}{$loop}) { - - my @data = sort { $a->{$field} cmp $b->{$field} } @{${$self->{'_results'}}{$loop}}; + my @data = sort { $a->{$field} <=> $b->{$field} } @{${$self->{'_results'}}{$loop}}; ${$self->{'_results'}}{$loop} = \@data; } } Index: server/Slim/Control/Queries.pm =================================================================== --- server/Slim/Control/Queries.pm (revision 16636) +++ server/Slim/Control/Queries.pm (working copy) @@ -4067,6 +4070,7 @@ my $cnt = $request->getResultLoopCount($loop) || 0; if ( ref $data eq 'HASH' && scalar keys %{$data} ) { + $data->{weight} = $data->{weight} || 100; $request->setResultLoopHash($loop, $cnt, $data); } Index: server/Slim/Plugin/ShoutcastBrowser/Plugin.pm =================================================================== --- server/Slim/Plugin/ShoutcastBrowser/Plugin.pm (revision 16636) +++ server/Slim/Plugin/ShoutcastBrowser/Plugin.pm (working copy) @@ -92,6 +92,7 @@ $data = { 'text' => string(getDisplayName()), # nice name 'icon-id' => Slim::Plugin::ShoutcastBrowser::Plugin->_pluginDataFor('icon'), + 'weight' => 50, 'actions' => { 'go' => { 'cmd' => ['shoutcast', 'items'], Index: server/Slim/Plugin/OPMLBased.pm =================================================================== --- server/Slim/Plugin/OPMLBased.pm (revision 16636) +++ server/Slim/Plugin/OPMLBased.pm (working copy) @@ -90,18 +90,22 @@ my ( $class, $args, $cli_menu ) = @_; my $tag = $args->{tag}; - my $icon = $class->_pluginDataFor('icon') ? $class->_pluginDataFor('icon') : 'html/images/radio.png'; + my $icon = $class->_pluginDataFor('icon') ? $class->_pluginDataFor('icon') : 'html/images/radio.png'; + my $weight = $args->{weight} || 100; return sub { my $request = shift; my $menu = $request->getParam('menu'); + $request->addParam('sort','weight'); + my $data; # what we want the query to report about ourself if (defined $menu) { $data = { text => Slim::Utils::Strings::string( $args->{display_name} || $class->getDisplayName() ), # nice name + weight => $weight, 'icon-id' => $icon, actions => { go => { Index: server/Slim/Plugin/RadioTime/Plugin.pm =================================================================== --- server/Slim/Plugin/RadioTime/Plugin.pm (revision 16636) +++ server/Slim/Plugin/RadioTime/Plugin.pm (working copy) @@ -147,6 +147,7 @@ if (defined $menu) { $data = { 'text' => Slim::Utils::Strings::string(getDisplayName()), # nice name + weight => 30, 'icon-id' => Slim::Plugin::RadioTime::Plugin->_pluginDataFor('icon'), 'actions' => { 'go' => { Index: server/Slim/Plugin/RadioIO/Plugin.pm =================================================================== --- server/Slim/Plugin/RadioIO/Plugin.pm (revision 16636) +++ server/Slim/Plugin/RadioIO/Plugin.pm (working copy) @@ -24,6 +24,7 @@ feed => Slim::Networking::SqueezeNetwork->url('/api/radioio/v1/opml'), tag => 'radioio', menu => 'radios', + weight => 20, ); } Index: server/Slim/Plugin/Live365/Plugin.pm =================================================================== --- server/Slim/Plugin/Live365/Plugin.pm (revision 16636) +++ server/Slim/Plugin/Live365/Plugin.pm (working copy) @@ -19,9 +19,10 @@ ); $class->SUPER::initPlugin( - feed => Slim::Networking::SqueezeNetwork->url('/api/live365/v1/opml'), - tag => 'live365', - menu => 'radios', + feed => Slim::Networking::SqueezeNetwork->url('/api/live365/v1/opml'), + tag => 'live365', + menu => 'radios', + weight => 40, ); } Index: server/Slim/Plugin/Picks/Plugin.pm =================================================================== --- server/Slim/Plugin/Picks/Plugin.pm (revision 16636) +++ server/Slim/Plugin/Picks/Plugin.pm (working copy) @@ -11,9 +11,10 @@ my $class = shift; $class->SUPER::initPlugin( - feed => 'http://www.slimdevices.com/picks/split/picks.opml', - tag => 'picks', - menu => 'radios', + feed => 'http://www.slimdevices.com/picks/split/picks.opml', + tag => 'picks', + menu => 'radios', + weight => 10, ); }