summaryrefslogtreecommitdiffstats
path: root/apps/playlist_catalog.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playlist_catalog.c')
-rw-r--r--apps/playlist_catalog.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c
index 01cbc31600..a20600b268 100644
--- a/apps/playlist_catalog.c
+++ b/apps/playlist_catalog.c
@@ -147,6 +147,7 @@ const char* catalog_get_directory(void)
If "view" mode is set then we're not adding anything into playlist. */
static int display_playlists(char* playlist, bool view)
{
+ static int most_recent_selection = 0;
struct browse_context browse;
char selected_playlist[MAX_PATH];
int result = -1;
@@ -154,7 +155,7 @@ static int display_playlists(char* playlist, bool view)
browse_context_init(&browse, SHOW_M3U,
BROWSE_SELECTONLY|(view? 0: BROWSE_NO_CONTEXT_MENU),
str(LANG_CATALOG), NOICON,
- playlist_dir, most_recent_playlist);
+ playlist_dir, playlist_dir_length + 1 + most_recent_playlist);
browse.buf = selected_playlist;
browse.bufsize = sizeof(selected_playlist);
@@ -168,8 +169,12 @@ restart:
if (browse.flags & BROWSE_SELECTED)
{
- strmemccpy(most_recent_playlist, selected_playlist+playlist_dir_length+1,
- sizeof(most_recent_playlist));
+ if (strcmp(most_recent_playlist, selected_playlist)) /* isn't most recent one */
+ {
+ strmemccpy(most_recent_playlist, selected_playlist,
+ sizeof(most_recent_playlist));
+ most_recent_selection = 0;
+ }
if (view)
{
@@ -179,7 +184,7 @@ restart:
result = 0;
else
{
- switch (playlist_viewer_ex(selected_playlist)) {
+ switch (playlist_viewer_ex(selected_playlist, &most_recent_selection)) {
case PLAYLIST_VIEWER_OK:
result = 0;
break;