diff --git a/src/browser.cpp b/src/browser.cpp index 43816263..93a80ed1 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -139,23 +139,18 @@ void Browser::EnterPressed() } case itPlaylist: { - if (itsBrowsedDir == "/") - { - MPD::SongList list; - Mpd.GetPlaylistContent(locale_to_utf_cpy(item.name), list); - if (myPlaylist->Add(list, 1)) - ShowMessage("Loading and playing playlist %s...", item.name.c_str()); - FreeSongList(list); - } + std::string name = item.name; + ShowMessage("Loading and playing playlist %s...", name.c_str()); + locale_to_utf(name); + if (!Mpd.LoadPlaylist(name)) + ShowMessage("Couldn't load playlist."); else { - std::string name = item.name; - ShowMessage("Loading playlist %s...", name.c_str()); - locale_to_utf(name); - if (!Mpd.LoadPlaylist(name)) - ShowMessage("Couldn't load playlist."); + size_t old_size = myPlaylist->Items->Size(); + Mpd.UpdateStatus(); + if (old_size < myPlaylist->Items->Size()) + Mpd.Play(old_size); } - break; } } }