diff --git a/src/screen_lyrics.c b/src/screen_lyrics.c
index 6d9c6e4af03ab96a700c0dc647f9d8ed0d114423..30a89a163973ddaf8f29143bf2bd5c88fdea20f1 100644 (file)
--- a/src/screen_lyrics.c
+++ b/src/screen_lyrics.c
static const struct mpd_song *next_song;
static struct {
- const struct mpd_song *song;
+ struct mpd_song *song;
char *artist, *title;
current.artist = NULL;
}
- current.song = NULL;
+ if (current.song != NULL) {
+ mpd_freeSong(current.song);
+ current.song = NULL;
+ }
}
static void
screen_lyrics_abort();
screen_lyrics_clear();
- current.song = song;
+ current.song = mpd_songDup(song);
strfsong(buffer, sizeof(buffer), "%artist%", song);
current.artist = g_strdup(buffer);
if (next_song == NULL)
next_song = c->song;
- if (next_song != NULL && next_song != current.song)
+ if (next_song != NULL &&
+ (current.song == NULL ||
+ strcmp(next_song->file, current.song->file) != 0))
screen_lyrics_load(next_song);
next_song = NULL;
static const char *
lyrics_title(char *str, size_t size)
{
- if (current.loader != NULL)
- return "Lyrics (loading)";
- else if (current.artist != NULL && current.title != NULL &&
- current.lines->len > 0) {
- snprintf(str, size, "Lyrics: %s - %s",
+ if (current.loader != NULL) {
+ snprintf(str, size, "%s (%s)",
+ _("Lyrics"), _("loading..."));
+ return str;
+ } else if (current.artist != NULL && current.title != NULL &&
+ current.lines->len > 0) {
+ snprintf(str, size, "%s: %s - %s",
+ _("Lyrics"),
current.artist, current.title);
return str;
} else
- return "Lyrics";
+ return _("Lyrics");
}
static void
lyrics_repaint();
}
return 1;
+
+ case CMD_LOCATE:
+ if (current.song != NULL) {
+ screen_file_goto_song(c, current.song);
+ return true;
+ }
+
+ return false;
+
default:
break;
}